tpe anal num
TRANSCRIPT
-
8/19/2019 Tpe Anal Num
1/30
UNIVERSITE DEDOUALA
FACULTE DE GENIEINDUSTRIEL
www.fgi-ud.com
U E : ANALYSE NUMÉRIQUE
Licence III Semestre 5
Travail Personnelle de l’Étudiant I
Membre du Groupe 17
om et prénom matricule
TAPUMEU SIMO CYRILLE LANDRY (chef) 1 G 746NGONDI KOME ÉLISÉE CONSTANT
1 G 688
MOHAMADOU NDJIDDA 1 G 66
REPUBLIQUE DU CAMEROUN
Paix – Travail – Patrie
MINISTERE E L’ENSEIGNEMENT
SUPERIEUR
REPUBLIC OF CAMEROON
Peace – Work – Fatherland
MINISTRY OF HIGHER
EDUC TION
Enseignant : Mr Gervais DEME IMANO Année académique : 2012-2013
-
8/19/2019 Tpe Anal Num
2/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
2
TPE N°1
I. Calcul numérique de la limite et du nombre dérivé
1. Calcul de la limite d’une suite numérique (U n ) définie par :
Diagramme de flux de la limite d’une suite (U n )
Programme en langage MATLAB
a)
sous programme de calcul des termes de la suite
function t=u(n) if n==0
t=3; else
t=sqrt(u(n-1)+3);
end
Nit←Nit+1
Début
Lire ɛ
Lire n, Nitmax
Nit←1
|Un+1−Un|< ɛ
l ←Un
Afficher l Nit>Nitmax
Afficher (‘pas de convergence’ )
Fin
Non
Oui
Oui
n←n+1
Non
-
8/19/2019 Tpe Anal Num
3/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
3
b)
programme centrale de calcul de la limite de la suite (U n )
fprintf('programme de calcul de la limite de la suite:\n'); e=input('donner la valeur de la precision: '); NITmax=input('donner le nombre d''iteration maximal: ');
n=1;
while(abs(u(n)-u(n-1))>=e && n=NITmax)
fprintf('pas de convergence apres %d iterations ',NITmax); else
l=u(n); fprintf('la suite converge vers %f à %fprès apres %d iterations\n',l,e,n)
end
2. Calcul de la limite de deux suites numériques (U n ) et (V n ) définies par :
Diagramme de flux de la limite de deux suites adjacentes (U n ) et (V n )
Programme en langage MATLAB
Nit←Nit+1
Début
Lire ɛ
Lire n, Nitmax
Nit←1
|Un−Vn|< ɛ
l ←Un
Afficher l Nit>Nitmax
Afficher (‘pas de convergence’ )
Fin
Non
Oui
Oui
n←n+1
Non
-
8/19/2019 Tpe Anal Num
4/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
4
a.
sous programme de calcul des termes de la suite pour (U n )
function y=u(n) if n==0 y=1; else
y=(u(n-1)+2*v(n-1))/3; end
pour (V n )
function y=v(n) if n==0
y=12; else
y=(v(n-1)+3*v(n-1))/4; end
b.
programme centrale de calcul de la limite des suites adjacentes (U n ) et (V n)
fprintf('programme de calcul de la limite d''une suite adjacente:\n'); e=input('donner la valeur de la precision: '); n=1; while(abs(u(n)-v(n))>=e)
n=n+1; end fprintf('la limite apres %d iterations est l=%f à %fprès',n,u(n),e)
3. Calcul des sommes des séries suivantes :
∑ ∑
∑ ∑
∑
-
8/19/2019 Tpe Anal Num
5/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
5
Diagramme de flux de la Somme de terme générale la suite (U n )
Programme en langage MATLAB
a.
sous-programme de calcul des termes de la suite
pour (U 1(n))n
function t=u1(n) t=(-1)^n/(2*n+1);
pour (U 2(n))n
function t=u2(n)
t=1/n*n;
pour (U 3(n))n
function t=u3(n) t=((-1)^(n-1))/n^2;
Debut
Fin
Lire ɛ Nitmax
n←1
s←0
n←n+1
Convergence
exact vers l
|Un|
-
8/19/2019 Tpe Anal Num
6/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
6
pour (U 4(n))n
function t=u4(n) t=1/n^4;
pour (U 5(n))n
function t=u(n) t=(2*n+1)/(n^2*(n+1)^2);
b.
programme centrale de calcul de la limite de la suite (U n )
pour (U 1(n))n
fprintf('programme de calcul de la somme d''une serie:\n'); e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''iteration maximale: '); n=0; s=u1(0);
while (n=e) n=n+1; s=s+u1(n) ;
end if abs(u1(n))>=e
fprintf('pas de convergence apres %d iterations\n',NITmax); else
l=abs(s-pi/4); if l>=e
fprintf('la somme de la serie est s=%f à %f pres. De plus abs(s-
pi/4)=%f>e',s,e,l) else
fprintf('la somme de la serie est s=%f et abs(s-pi/4)=%fe',s,e,l) else
fprintf('la somme de la serie est s=%f et abs(s-pi^2/6)=%f
-
8/19/2019 Tpe Anal Num
7/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
7
end
pour (U 3(n))n
fprintf('programme de calcul de la somme d''une serie:\n');
e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''iteration maximale: '); n=1; s=u3(1); while (n=e) n=n+1; s=s+u3(n) ;
end s=-abs(s); if abs(u3(n))>=e
fprintf('pas de convergence apres %d iterations\n',NITmax); else
l=abs(s+pi^2/12);
if l>=e fprintf('la somme de la serie est s=%f à %f pres.\n',s,e) fprintf('De plus abs(s-(-pi^2/12))=%f>e\n',l)
else
fprintf('la somme de la serie est s=%f et abs(s-(-pi/12))=%fe\n',l)
else
fprintf('la somme de la serie est s=%f et abs(s-pi^4/90)=%f
-
8/19/2019 Tpe Anal Num
8/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
8
n=1; s=u5(1); while (n=e) n=n+1; s=s+u5(n) ;
end
if abs(u5(n))>=e fprintf('pas de convergence apres %d iterations\n',NITmax); else
l=abs(s-1); if l>=e
fprintf('la somme de la serie est s=%f à %f pres.\n',s,e) fprintf('De plus abs(s-1)=%f>e\n',l)
else
fprintf('la somme de la serie est s=%f et abs(s-1)=%f
-
8/19/2019 Tpe Anal Num
9/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
9
g=g+p; while g>=x;
disp('soit reduire le pas et réessayer,soit il ya pas de limite à
gauche'); break
end
else Lg=g; end
if abs(Lg-Ld)>e; fprintf('%f est un point de discontinuité',x);
else l=(Lg+Ld)/2; fprintf('la limite de cette fonction en x=%f est l=%f',x,l);
end
pour g(x) functionlimh
e=input('donner la valeur de la précision e:');p=input('donner la valeur du pas p:');x=input('donner la valeur du point x:');d=input('donner la valeur d''un point à droite de la derniere d:');g=input('donner la valeur d''un point à gauche de x g:');while de;
d=d-p;while d=x;disp('g doit etre inférieur à x');
g=input('entrez à nouveau g:');end
end
if abs(h(g)-h(g+p))>e;g=g+p;
while g>=x;disp('soit reduire le pas et réessayer,soit il ya pas de limite à gauche');break
endelse Lg=g;end
if abs(Lg-Ld)>e;fprintf('%f est un point de discontinuité',x);else
l=(Lg+Ld)/2;fprintf('la limite de cette fonction en x=%f est l=%f',x,l);
end
II.
Calcul numérique des intégrales définies par :
-
8/19/2019 Tpe Anal Num
10/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
10
√
a.
sous-programme de déclaration des fonctions
f(x) pour le calcul de I
function y=f(x)y=(sin(x))/x;
g(x) pour le calcul de J
functiont=g(x) t=1/sqrt(1-x*x);
b. programme centrale de calcul d’intégrale
i. Méthode de Simpson calcul de I
fprintf('\n Programme de de calcul des integrales par la methode de Simpson:\n') a=input('donner la borne inferieur de l''intervalle:'); b=input('donner la borne superieur de l''intervalle:'); n=input('donner le nombre de subdivision l''intervalle:'); h=(b-a)/n; s=0; x=a; for i=1:n
x=a+i*h; s=s+f(x-h)+4*f(x-h/2)+f(x);
end s=h*s/6; fprintf('la valeur de l''integrale est I=%f',s)
calcul de Jfprintf('\n Programme de de calcul des integrales par la methode de simpson:\n') a=input('donner la borne inferieur de l''intervalle:'); b=input('donner la borne superieur de l''intervalle:'); n=input('donner le nombre de subdivision l''intervalle:'); h=(b-a)/n; s=0; x=a; for i=2:n-1
x=a+i*h; s=s+g(x-h)+4*g(x-h/2)+g(x);
end s=h*s/6; fprintf('la valeur de l''integrale dans les conditions choisies est I=%f\n',s) i=input('donner la valeur reel de cette integrale:'); fprintf('l''erreur commise est erreur=%f\n',abs(i-s));
ii. Méthode des Trapèses calcul de I
fprintf('\n Programme de de calcul des integrales par la methode des trapezes:\n') a=input('donner la borne inferieur de l''intervalle:'); b=input('donner la borne superieur de l''intervalle:');
n=input('donner le nombre de subdivision l''intervalle:'); h=(b-a)/n;
-
8/19/2019 Tpe Anal Num
11/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
11
s=(f(a)+f(b))/2; x=a; for i=1:n-1
x=a+i*h; s=s+f(x);
end
s=h*s; fprintf('la valeur de l''integrale est I=%f',s)
calcul de Jfprintf('\n Programme de de calcul des integrales par la methode des trapezes:\n') a=input('donner la borne inferieur de l''intervalle:'); b=input('donner la borne superieur de l''intervalle:'); n=input('donner le nombre de subdivision l''intervalle:'); h=(b-a)/n; s=0; x=a; for i=1:n-1
x=a+i*h;
s=s+g(x); end s=h*s; fprintf('la valeur de l''integrale dans les conditions choisies est I=%f\n',s) i=input('donner la valeur reel de cette integrale:'); fprintf('l''erreur commise est erreur=%f\n',abs(i-s));
i. la valeur approchée de π
Sa valeur approchée est ∫ √
à un nombre de subdivision important Il est à remarquer que dans le calcul numérique de ces intégrales pour des valeurs importantes du nombrede division, elles se rapprochent de leur valeur exacte analytique. Mais si on entre aussi une valeur trop
exorbitante, le programme MATLAB mettra beaucoup de temps pour calculer ces intégrales
III. Résolution numérique des équations non linéaires
1.
Résolution de l’équation f(x)=0 Par la méthode de Newton et dichotomie
a.
Déclaration des fonctions
i.
[] Sous-programme de déclaration de la fonction
function t=f(x)t=log(x)+(1+x*x)/(1-3*x*x);
ii. ][ Sous-programme de déclaration de la fonction
functiont=g(x)t=(2*x+7)*asin(x)-pi;
iii.
-
8/19/2019 Tpe Anal Num
12/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
12
Sous-programme de déclaration de la fonction
function t=h(x)t=x/2+(log(x))/x;
Diagramme de flux de la Résolution numérique des équations non linéaires f(x)=0
par Dichotomie
a←c
Début
Lire ɛ a b
f(a)=0 ?
f(b)=0 ?
c←
α←a
α←b
f(c)=0 ?
f(a).f(c)
-
8/19/2019 Tpe Anal Num
13/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
13
par Newton
b. Programme principale de Résolution par la méthode dichotomie
Pour la fonction f(x)fprintf('programme de resolution d''une equation par la methode dichotomie:\n'); e=input('donner la valeur de la precision e: '); a=input('donner la valeur de la borne inferieur de l''intervalle a: '); b=input('donner la valeur de la borne superieur de l''intervalle b: '); if f(a)==0
fprintf('s=%f est la solution',a); elseif f(b)==0 fprintf('s=%f est la solution',b);
Début
Lire ɛ, Nitmax, x
n←0
f(x)=0 ?
f ’(x)=0 ?
α←x Afficher α
Afficher (‘pas
de solution’ )
α←x
Afficher α à ɛ rès n←n+1
n≤ Nitmax Afficher (‘pas de
convergence’ )
Fin
oui
non
oui
oui
non
non
non
oui
-
8/19/2019 Tpe Anal Num
14/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
14
else c=(a+b)/2;
if f(c)==0 fprintf('s=%f est la solution',c); elseif f(a)*f(c)=e && f(c)~=0)
c=(a+b)/2; if f(c)==0 fprintf('s=%f est la solution',c); elseif f(a)*f(c)
-
8/19/2019 Tpe Anal Num
15/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
15
b=input('donner la valeur de la borne superieur de l''intervalle b: '); if h(a)==0
fprintf('s=%f est la solution',a); elseif h(b)==0 fprintf('s=%f est la solution',b); else
c=(a+b)/2; if h(c)==0 fprintf('s=%f est la solution',c); elseif h(a)*h(c)=e && h(c)~=0)
c=(a+b)/2; if h(c)==0 fprintf('s=%f est la solution',c); elseif h(a)*h(c)=e && n=NITmax) fprintf(' pas de solution apresNITmaxiterations')
elseifdif(x)==0; fprintf('l''equation n''pas de solution'); elseif f(x)==0
fprintf('s=%f est la solution',x); else fprintf('la solution est s=%f à %f pres\n',x,e); end end
2. Resolution de l’équation ax3+bx²+cx+d=0 par la methode de Neuton
pour x0=0 Declaration du polynome
-
8/19/2019 Tpe Anal Num
16/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
16
function t=p(x,a,b,c,d) t=a*x^3+b*x^2+c*x+d;
Programme principale
fprintf('programme de resolution d''une equation du type ax^3+bx^2+cx+d=0 par la
methode de Newton:\n'); a=input('donner le coefficient de x^3, a: '); b=input('donner le coefficient de x^2, b: '); c=input('donner le coefficient de x, c: '); d=input('donner le terme constant, d: '); e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''itration maximale NITmax: '); x=0; n=1; while(abs(p(x,a,b,c,d)/dif(x,a,b,c,d))>=e && n=NITmax) fprintf(' pas de solution apres NITmax iterations\n')
elseif dif(x,a,b,c,d)==0; fprintf('l''equation n''pas de solution\n'); elseif p(x,a,b,c,d)==0
fprintf('s=%f est la solution apres %d iterations\n',x,n); else
fprintf('la solution est s=%f à %f pres apres %d iterations\n',x,e,n); end
3. Résolution par la méthode de Newton dans les cas :
a)
pour x0≠0 quelconque
Declaration de la fonction
function t=f(x) t=x^(1\3);
Programme principale fprintf('programme de resolution d''une equation f(x)=0 par la methode de
newton:\n'); e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''itration maximale NITmax: '); x=input('donner le point initial x0 : '); while x==0
x=input('donner le point initial x0 tel qu''il soit non nul : ');
end n=0; if f(x)==0;
fprintf('s=%f est la solution\n',x); elseif dif(x)==0;
fprintf('l''equation n''pas de solution\n'); else while(abs(f(x)/dif(x))>=e && n=NITmax)
fprintf(' pas de solution apres %d iterations\n',NITmax)
elseif dif(x)==0; fprintf('l''equation n''pas de solution\n'); elseif f(x)==0
-
8/19/2019 Tpe Anal Num
17/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
17
fprintf('s=%f est la solution\n',x); else
fprintf('la solution est s=%f à %f pres\n',x,e); end
end
b ,x0=0 Declaration de la fonctionfunction t=g(x) t=(x+1)*exp(-x)+1;
Programme principale
fprintf('programme de resolution d''une equation f(x)=0 par la methode de
newton:\n'); e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''itration maximale NITmax: ');
x=0; n=1; if g(x)==0;
fprintf('s=%f est la solution\n',x); elseif dig(x)==0;
fprintf('l''equation n''pas de solution car g''=0 après %d iteration\n',n); else while(abs(g(x)/dig(x))>=e && n=NITmax)
fprintf(' pas de solution apres %d iterations\n',NITmax)
elseif dig(x)==0; fprintf('l''equation n''pas de solution\n'); elseif g(x)==0
fprintf('s=%f est la solution\n',x); else
fprintf('la solution est s=%f à %f pres apres %d iterations\n',x,e,n); end
end
IV. Intégration numérique d'une équation différentielle
a.
avec y(0)=1
Déclaration de la fonctionfunction t=f(x,y)t=x/y+y/2;
Programme principale pour Eulerfprintf('\nAlgorithme de calcul d''une equation differentielle par la methoded''Euler:\n');n=input('entrer le nombre de point à calculer: ');h=input('entrer le pas :');x=input('entrer la valeur de x0: ');y=input('entrer la valeur de y0: ');for k=0:n-1
y=y+h*f(x,y);x=x+h;fprintf('x%d=%f et y%d=%f\n',k+1,x,k+1,y)
-
8/19/2019 Tpe Anal Num
18/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
18
end
Programme principale pour Runge-Kuttafprintf('\nAlgorithme de calcul d''une equation differentielle par la methode deRunge Kutta:\n');n=input('entrer le nombre de point à calculer: ');
h=input('entrer le pas :');x=input('entrer la valeur de x0: ');y=input('entrer la valeur de y0: ');for k=0:n-1
p1=f(x,y);p2=f(x+h/2,y+h*p1/2);p3=f(x+h/2,y+h*p2/2);p4=f(x+h,y+h*p3);y=y+h*(p1+2*p2+2*p3+p4)/6;x=x+h;fprintf('x%d=%f et y%d=%f\n',k+1,x,k+1,y)
end
b. avec y(0)=1 Déclaration de la fonction
function t=g(x,y)t=(y-x)/(y+x);
Programme principale pour Eulerfprintf('\nAlgorithme de calcul d''une equation differentielle par la methoded''Euler:\n');n=input('entrer le nombre de point à calculer: ');h=input('entrer le pas :');x=input('entrer la valeur de x0: ');
y=input('entrer la valeur de y0: ');for k=0:n-1
y=y+h*g(x,y);x=x+h;fprintf('x%d=%f et y%d=%f\n',k+1,x,k+1,y)
end
Programme principale pour Runge-Kuttafprintf('\nAlgorithme de calcul d''une equation differentielle par la methode deRunge Kutta:\n');n=input('entrer le nombre de point à calculer: ');h=input('entrer le pas :');x=input('entrer la valeur de x0: ');y=input('entrer la valeur de y0: ');for k=0:n-1
p1=g(x,y);p2=g(x+h/2,y+h*p1/2);p3=g(x+h/2,y+h*p2/2);p4=g(x+h,y+h*p3);y=y+h*(p1+2*p2+2*p3+p4)/6;x=x+h;fprintf('x%d=%f et y%d=%f\n',k+1,x,k+1,y)
end
V. résolution numérique d'un système d’équations non linéaires
Diagramme des flux d’un système de deux équations non linéaires
-
8/19/2019 Tpe Anal Num
19/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
19
Ayant un système du genre
{ et en ayant définie les fonctionsVal (f,x,y) calculant la valeur de f pour le couple ( x,y) donné.
Dérivée (f,1,x,x,y ) calculant la valeur de la dérivée première par rapport à x pour lecouple ( x,y) donné.Det (A,n) calculant le déterminant de la matrice carrée A d’ordre n
Début
Lire (x 0 ,y 0 ), Nitmax
(x,y )← (x 0 ,y 0 )
Val (f 1 ,x,y )=0 &Val f 2 ,x,y )=0 ?
( x,y) est solutiondu système
a11← Dérivée (f 1 ,1,x,x,y )
a12← Dérivée (f 1 ,1,y,x,y ) a21← Dérivée (f 2 ,1,x,x,y ) a22← Dérivée (f 2 ,1,y,x,y )
Fin
n←0
Det (A,2)=0 ?
Afficher(‘Pas desolution’
( ) ( ) b1← − Val ( f 1 ,x,y)
b2← − Val ( f 2 ,x,y)
n←n+1
varx← Det (B,2)/ Det (A,2) var ← Det (C,2)/ Det (A,2)
(x,y )← (x+varx,y+vary )
oui
non
oui
non
-
8/19/2019 Tpe Anal Num
20/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
20
Programme en langage MATLAB
a) { fprintf('programme de résolution d''un système d''equation non linéaire:\nx^2-3x-
4=0\nx^3-3x^2-2xy+4x-2=0\n');Nitmax=input('entrer le nombre itérations max: Nitmax= ');fprintf('entrer les coordonnées du point initial\n');x=input('x0= '); y=input('y0= ');n=0;if (f1(x,y)==0 && f2(x,y)==0)
fprintf('le point de coordonnées x=%f et y=%f est solution du système\n',x,y);else
while (f1(x,y)~=0 || f2(x,y)~=0 && nNitmaxfprintf('pas de solution après Nitmax=%d itérations\n',Nitmax);
else
fprintf('pas de solution après %d itérations\n',n);end
end
b) { fprintf('programme de résolution d''un système d''equation non linéaire:\nx^2-2x-y+4=0\nx^3-2x^2-x-2xy+2y+2=0\n' );Nitmax=input('entrer le nombre itérations max: Nitmax= ');fprintf('entrer les coordonnées du point initial\n');x=input('x0= '); y=input('y0= ');n=0;if (f1(x,y)==0 && f2(x,y)==0)
fprintf('le point de coordonnées x=%f et y=%f est solution du système\n',x,y);else
while (f1(x,y)~=0 || f2(x,y)~=0 && n
-
8/19/2019 Tpe Anal Num
21/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
21
if (f1(x,y)==0 && f2(x,y)==0)fprintf('le point de coordonnées x=%f et y=%f est solution du système après %d
itération(s)\n',x,y,n);elseif n>Nitmax
fprintf('pas de solution après Nitmax=%d itérations\n',Nitmax);else
fprintf('pas de solution après %d itérations\n',n);end end
-
8/19/2019 Tpe Anal Num
22/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
22
TPE N°2
I. Résolution d’un système d’équations linéaire AX=B pour matrice
SDP1.
Sous-programme CHOLESKY permettant de déterminer la matrice L de la factorisation deCHOLESKY de la matrice A
Diagramme de flux
Début
Lire n
Lire A
l11←s rt a11
i←1
i←i +1
li1← a11/ l11
i = n ?
←1
← +1
S=0
k=0
k←k+1
S ← S +l *l
k= -1 ?
non
oui
21
non
oui
-
8/19/2019 Tpe Anal Num
23/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
23
Sous Programmen=input('donner la dimension de la matrice A:'); a=input('entrer la matrice Symétrique Définie Positive A:'); l(1,1)=sqrt(a(1,1)); for i=2:n
l(i,1)=a(i,1)/l(1,1); end for j=2:n
s=0; for k=1:j-1
s=s+l(j,k)*l(j,k); end l(j,j)=sqrt(a(j,j)-s); for i=j+1:n
s1=0;
non
2 1
l ← s rt a -S
i←
i←i+1
S←0
k←k+1
S ← S +l k *l k
k= -1 ?
oui
li ← ai -S /l
i= n ?non
i= n ?
oui
oui
Afficher L
non
Fin
-
8/19/2019 Tpe Anal Num
24/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
24
for k=1:j-1 s1=s1+l(i,k)*l(j,k);
end l(i,j)=(a(i,j)-s1)/l(j,j);
end end
for i=1:n for j=1:n fprintf('l(%d,%d)=%f\n',i,j,l(i,j))
end
end
2. Sous-programme CROUT permettant de déterminer les matrice L et D de la factorisation deCROUT de la matrice A
Diagramme de flux
Sous Programme
II. Résolution d’un système d’équations linéaire AX=B pour matrice
pleine quelconque1. Transformation de A en matrice triangulaire
-
8/19/2019 Tpe Anal Num
25/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
25
Diagramme de flux
Début
Lire n
Lire A,B
k←0
k←k+1
i←k
i←i+1
p←aik /akk
j←k -1
j←j+1
aij←aij ─p*akj
j=n ?
bi←aij ─p*bk
i=n ?
k=n ?
oui
non
non
non
oui
oui
1
-
8/19/2019 Tpe Anal Num
26/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
26
Programmefprintf('Programme de systeme d''equation lineaires AX=B\n pour une matricequelconque:\n ') n=input('donner la dimension de la matrice A:'); a=input('entrer la matrice A:'); b=input('entrer la matrice B:'); for k=1:n
for i=k+1:n p=a(i,k)/a(k,k); for j=k:n
a(i,j)=a(i,j)-p*a(k,j); end b(i,1)= b(i,1)-p* b(k,1);
end
end x(n,1)=b(n,1)/a(n,n); fprintf('x%d=%f\n',n,x(n,1))
1
i←i−1
S←0
j←i
j←j+1
S←S+aij*x j
xn←bn/ann
j=n ?
xi←(bi−S)/aii
i=1 ?
Afficher x1,x2,…,xn
Fin
oui
non
non
oui
-
8/19/2019 Tpe Anal Num
27/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
27
for i=n-1:-1:1 s=0; for j=n:-1:i+1
s=s+a(i,j)*x(j,1); end x(i,1)=(b(i,1)-s)/a(i,i);
fprintf('x%d=%f\n',i,x(i,1)) end
2. Transformation de A en matrice diagonaleDiagramme de flux
-
8/19/2019 Tpe Anal Num
28/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
28
Début
Lire n
Lire A,B
k←0
k←k+1
i←k
i←i+1
p←aik /akk
j←k -1
j←j+1
aij←aij ─p*akj
j=n ?
bi←aij ─p*bk
i=n ?
k=n ?
oui
non
non
non
oui
oui
1
-
8/19/2019 Tpe Anal Num
29/30
. Numérisation des problèmes sur MATLAB
TPE Analyse numérique
29
k←n
k←k -1
i←k -1
i←i-1
p←aik /akk
←k -1
← +1
ai ←ai ─p*ak
j=n ?
b ←a ─ *b
i=1 ?
k=1 ?
oui
non
non
non
oui
oui
1
i←0
i←i+1
i=n ?
xi←bi/aii
Afficher x1 x2 … xn
Fin
oui
non
-
8/19/2019 Tpe Anal Num
30/30
. Numérisation des problèmes sur MATLAB
Programmefprintf('Programme de systeme d''equation lineaires AX=B\n pour une matrice
quelconque:\n ') n=input('donner la dimension de la matrice A:'); a=input('entrer la matrice A:'); b=input('entrer la matrice B:'); for k=1:n
for i=k+1:n p=a(i,k)/a(k,k); for j=k:n
a(i,j)=a(i,j)-p*a(k,j); end b(i,1)= b(i,1)-p* b(k,1);
end end for k=n:-1:1
for i=k-1:-1:1 p=a(i,k)/a(k,k); for j=k:n
a(i,j)=a(i,j)-p*a(k,j); end b(i,1)= b(i,1)-p*b(k,1);
end end for i=n:-1:1
x(i,1)=b(i,1)/a(i,i); fprintf('x%d=%f\n',i,x(i,1))
end