KERJEAN Mickael TP ANALYSE – NUMERIQUE Dans ce TP, nous

publicité
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
Téléchargement