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
1 2 3
1 1 2 3
1 2 2 3
2 9 4
3 15 10
25 3 2 12
x x x
x x x x
x x x x
 
 
 
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.
2-
METHODE 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
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !