KERJEAN Mickael TP ANALYSE – NUMERIQUE Dans ce TP, nous allons mettre en œuvre deux méthodes itératives permettant la résolution d’un sytème d’équation non-linéaire. Le système étudié est le suivant : 2 x12 9 x2 x3 4 x1 3x1 x2 15 x3 10 25 x1 3x2 2 x2 x3 12 1- Le système étudié n’est pas linéaire car on ne peut pas le mettre sous forme matricielle telle que : AX= Y ou A est la matrice des coefficients associée au système, X le vecteur inconnue et Y le vecteur solution. 2METHODE ITERATIVE DE JACOBI -logigramme de la méthode : X0 est le vecteur condition initiale est le facteur de relaxation (scalaire) P est la précision souhaitée du calcul : c’est un vecteur de même taille que le vecteur inconnue. -programme : %******************************************** %*********** METHODE DE JACOBI ************** %******************************************** %KERJEAN Mickael **************************** %******************************************** close all clear clc %fonctionne pour système de trois équations a trois inconnues %variables utilisateur CI= input('conditions initiales : '); P=10^-5; %precision du résultat voulue lambda=input('facteur de relaxation : ') ; %facteur de relaxation x1i=[CI]; x2i=[CI]; x3i=[CI]; %amorçage de l'algorithme i=0; %initialisation du compteur while true i(end+1)=i(end)+1; %bloc itératif x1i(end+1)=1/25*( 12-3*x2i(end)*x2i(end)+2*x2i(end)*x3i(end) ); x2i(end+1)=1/9*( 4+2*x1i(end-1)*x1i(end-1)-x3i(end) ); x3i(end+1)=1/15*( -10+ x1i(end-1) + 3*x1i(end-1)*x2i(end-1) ); %conditions d'arrêt if i(end)>=1000 sprintf(' t as failli faire une boucle infinie!!!!) xi=[x1i ; x2i ; x3i]' sprintf('on doit trouver : Xs=[0.4177 ; 0.54911 ; 0.5929]') break end - if abs( x1i(end)-x1i(end-1) )<P && abs( x2i(end)-x2i(end-1) )<P && abs( x2i(end)-x2i(end-1) )<P sprintf('l algorithme s est bien déroulé. \n nombre d iteration : %d ',i(end)) xi=[x1i ; x2i ; x3i]' sprintf('verification : ') [-2*(x1i(end))^2+9*x2i(end)+x3i(end) ; x1i(end)+3*x1i(end)*x2i(end)-15*x3i(end) ; 25*x1i(end)+3*(x2i(end))^2-2*x2i(end)*x3i(end) ] break; end x1i(end)=x1i(end-1)+lambda*( x1i(end)-x1i(end-1) ); x2i(end)=x2i(end-1)+lambda*( x2i(end)-x2i(end-1) ); x3i(end)=x3i(end-1)+lambda*( x3i(end)-x3i(end-1) ); end METHODE ITERATIVE DE GAUSS-SEIDEL -logigramme de la méthode : X0 est le vecteur condition initiale est le facteur de relaxation (scalaire) P est la précision souhaitée du calcul : c’est un vecteur de même taille que le vecteur inconnue. -programme : %******************************************** %*********** METHODE DE JACOBI ************** %******************************************** %KERJEAN Mickael **************************** %******************************************** close all clear clc %fonctionne pour système de trois équations a trois inconnues %variables utilisateur CI= input('conditions initiales : '); P=10^-5; %precision du résultat voulue lambda=input('facteur de relaxation : ') ; %facteur de relaxation x1i=[CI]; x2i=[CI]; x3i=[CI]; %amorçage de l'algorithme i=0; %initialisation du compteur while true i(end+1)=i(end)+1; %bloc itératif x1i(end+1)=1/25*( 12-3*x2i(end)*x2i(end)+2*x2i(end)*x3i(end) ); x2i(end+1)=1/9*( 4+2*x1i(end-1)*x1i(end-1)-x3i(end) ); x3i(end+1)=1/15*( -10+ x1i(end-1) + 3*x1i(end-1)*x2i(end-1) ); %conditions d'arrêt if i(end)>=1000 sprintf(' t as failli faire une boucle infinie!!!!) xi=[x1i ; x2i ; x3i]' sprintf('on doit trouver : Xs=[0.4177 ; 0.54911 ; 0.5929]') break end - if abs( x1i(end)-x1i(end-1) )<P && abs( x2i(end)-x2i(end-1) )<P && abs( x2i(end)-x2i(end-1) )<P sprintf('l algorithme s est bien déroulé. \n nombre d iteration : %d ',i(end)) xi=[x1i ; x2i ; x3i]' sprintf('verification : ') [-2*(x1i(end))^2+9*x2i(end)+x3i(end) ; x1i(end)+3*x1i(end)*x2i(end)-15*x3i(end) ; 25*x1i(end)+3*(x2i(end))^2-2*x2i(end)*x3i(end) ] break; end x1i(end)=x1i(end-1)+lambda*( x1i(end)-x1i(end-1) ); x2i(end)=x2i(end-1)+lambda*( x2i(end)-x2i(end-1) ); x3i(end)=x3i(end-1)+lambda*( x3i(end)-x3i(end-1) ); end