Vous êtes sur la page 1sur 30

REPUBLIQUE DU CAMEROUN

REPUBLIC OF CAMEROON

Paix Travail Patrie

Peace Work Fatherland

MINISTERE DE LENSEIGNEMENT
SUPERIEUR

MINISTRY OF HIGHER
EDUCATION

UNIVERSITE DE
DOUALA
FACULTE DE GENIE
INDUSTRIEL
www.fgi-ud.com
U E : ANALYSE NUMRIQUE

Licence III

Semestre 5
Travail Personnelle de ltudiant I

Membre du Groupe 17
Nom et prnom

matricule

TAPUMEU SIMO CYRILLE LANDRY (chef)


NGONDI KOME LISE CONSTANT
MOHAMADOU NDJIDDA

Enseignant : Mr Gervais DEME IMANO

10G00746
10G00688
10G00660

Anne acadmique : 2012-2013

Numrisation des problmes sur MATLAB

TPE N1
I.

Calcul numrique de la limite et du nombre driv

1. Calcul de la limite dune suite numrique (Un) dfinie par :

Diagramme de flux de la limite dune suite (Un)


Dbut

Lire
Lire n, Nitmax
Nit1
Non
|Un+1Un|<
nn+1

Oui

NitNit+1

lUn

Non

Afficher l

Nit>Nitmax
Oui
Afficher (pas de convergence)

Fin

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

TPE Analyse numrique


2

Numrisation des problmes sur MATLAB

b) programme centrale de calcul de la limite de la suite (Un)


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)
n=n+1;
end
if (n>=NITmax)
fprintf('pas de convergence apres %d iterations ',NITmax);
else
l=u(n);
fprintf('la suite converge vers %f %fprs apres %d iterations\n',l,e,n)
end

2. Calcul de la limite de deux suites numriques (Un)et (Vn) dfinies par :

Diagramme de flux de la limite de deux suites adjacentes (Un) et (Vn)


Dbut

Lire
Lire n, Nitmax
Nit1
Non
|UnVn|<
nn+1

NitNit+1

lUn

Non

Afficher l

Nit>Nitmax
Oui
Afficher (pas de convergence)

Fin

Programme en langage MATLAB

TPE Analyse numrique


3

Oui

Numrisation des problmes sur MATLAB

a. sous programme de calcul des termes de la suite


pour (Un)
function y=u(n)
if n==0
y=1;
else
y=(u(n-1)+2*v(n-1))/3;
end
pour (Vn)
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 (Un) et (Vn)


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 %fprs',n,u(n),e)

3. Calcul des sommes des sries suivantes :


( )

( )

( )

( )

TPE Analyse numrique


4

( )

Numrisation des problmes sur MATLAB

Diagramme de flux de la Somme de terme gnrale la suite (Un)


Debut
Lire , Nitmax
n1
s0
nn+1

Non

|Un|< ?
Lire l

Non
n=Nitmax ?

Oui

Non

|sl|< ?

Oui
Afficher (pas de
convergence aprs Nitmax
iterations)

Convergence
exact vers l

Convergence
approche prs

Fin

Programme en langage MATLAB


a. sous-programme de calcul des termes de la suite
pour (U1(n))n
function t=u1(n)
t=(-1)^n/(2*n+1);

pour (U2(n))n
function t=u2(n)
t=1/n*n;

pour (U3(n))n
function t=u3(n)
t=((-1)^(n-1))/n^2;

TPE Analyse numrique


5

Numrisation des problmes sur MATLAB

pour (U4(n))n
function t=u4(n)
t=1/n^4;

pour (U5(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 (Un)


pour (U1(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<=NITmax && abs(u1(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(spi/4)=%f>e',s,e,l)
else
fprintf('la somme de la serie est s=%f et abs(s-pi/4)=%f<e\n',s,l)
fprintf('on peut dire que la serie de terme generale u1 converge vers
pi/4\n')
end
end

pour (U2(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=u2(1);
while (n<=NITmax && abs(u2(n))>=e)
n=n+1;
s=s+u2(n) ;
end
if (n>=NITmax)
fprintf('pas de convergence apres %d iterations\n',NITmax);
else
l=abs(s-pi^2/6);
if l>=e
fprintf('la somme de la serie est s=%f %f pres.De plus abs(spi^2/6)=%f>e',s,e,l)
else
fprintf('la somme de la serie est s=%f et abs(s-pi^2/6)=%f<e\n',s,l)
fprintf('on peut dire que la serie de terme generale u2 converge vers
pi^2/6\n')
end

TPE Analyse numrique


6

Numrisation des problmes sur MATLAB


end

pour (U3(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<=NITmax && abs(u3(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))=%f<e\n',s,l)
fprintf('on peut dire que la serie de terme generale u3 converge vers pi^2/12\n')
end
end

pour (U4(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=u4(1);
while (n<=NITmax && abs(u4(n))>=e)
n=n+1;
s=s+u4(n) ;
end
if abs(u4(n))>=e
fprintf('pas de convergence apres %d iterations\n',NITmax);
else
l=abs(s-pi^4/90);
if l>=e
fprintf('la somme de la serie est s=%f %f pres.\n',s,e)
fprintf('De plus abs(s-pi^4/90)=%f>e\n',l)
else
fprintf('la somme de la serie est s=%f et abs(s-pi^4/90)=%f<e\n',s,l)
fprintf('on peut dire que la serie de terme generale u1 converge vers
pi^4/90\n')
end
end

pour (U5(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: ');

TPE Analyse numrique


7

Numrisation des problmes sur MATLAB

n=1;
s=u5(1);
while (n<=NITmax && abs(u5(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<e\n',s,l)
fprintf('on peut dire que la serie de terme generale u1 converge vers
1\n')
end
end

4. Calcul de la limite des fonctions au point x0=0

( )

( )

a. Sous-programme de calcul de limage dun point par la fonction


Pour f(x)
function y=f(x)
y=(sin(x))/x;

Pour g(x)
function y=g(x)
y=(1-cos(x))/x;
b.

programme centrale de calcul de la limite de la fonction


pour f(x)

function lim
e=input('donner la valeur de la prcision 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 d<=x;
disp('d doit etre suprieur x');
d=input('entrez nouveau d:');
end
if abs(f(d)-f(d-p))>e;
d=d-p;
while d<=x;
disp('soit rduire le pas et ressayer,soit il ya pas de limite droite');
break
end
else
Ld=d;
while g>=x;
disp('g doit etre infrieur x');
g=input('entrez nouveau g:');
end
end
if abs(f(g)-f(g+p))>e;

TPE Analyse numrique


8

Numrisation des problmes sur MATLAB

g=g+p;
while g>=x;
disp('soit reduire le pas et ressayer,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 prcision 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 d<=x;
disp('d doit etre suprieur x');
d=input('entrez nouveau d:');
end
if abs(h(d)-h(d-p))>e;
d=d-p;
while d<=x;
disp('soit rduire le pas et ressayer,soit il ya pas de limite droite');
break
end
else
Ld=d;
while g>=x;
disp('g doit etre infrieur 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 ressayer,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

II.

Calcul numrique des intgrales dfinies par :

TPE Analyse numrique


9

Numrisation des problmes sur MATLAB

a. sous-programme de dclaration 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 dintgrale


i.

Mthode 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 J
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=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.

Mthode des Trapses


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;

TPE Analyse numrique


10

Numrisation des problmes sur MATLAB


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 J
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;
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 approche de

Sa valeur approche est

un nombre de subdivision important

Il est remarquer que dans le calcul numrique de ces intgrales pour des valeurs importantes du nombre
de 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 intgrales

III.

Rsolution numrique des quations non linaires


1. Rsolution de lquation f(x)=0 Par la mthode de Newton et dichotomie
a. Dclaration des fonctions
i.

( )

Sous-programme de dclaration de la fonction


function t=f(x)
t=log(x)+(1+x*x)/(1-3*x*x);

ii.

( )

Sous-programme de dclaration de la fonction


functiont=g(x)
t=(2*x+7)*asin(x)-pi;

iii.

( )

[
TPE Analyse numrique

11

Numrisation des problmes sur MATLAB

Sous-programme de dclaration de la fonction


function t=h(x)
t=x/2+(log(x))/x;

Diagramme de flux de la Rsolution numrique des quations non linaires f(x)=0


par Dichotomie
Dbut
Lire , a, b
f(a)=0 ?

oui

a
f(b)=0 ?

oui

non

f(c)=0 ?

oui

c
oui

f(a).f(c)<0 ?

ac

non

bc

|ba|< ?
oui

Afficher
Fin

TPE Analyse numrique


12

non

Numrisation des problmes sur MATLAB

par Newton

Dbut
Lire , Nitmax, x
n0
oui

f(x)=0 ?

non

Afficher (pas
de solution)

oui

f (x)=0 ?

Afficher

non
( )
( )

oui
x

non
Afficher prs

nn+1

non

n Nitmax

Afficher (pas de
convergence)

oui
( )
( )

Fin

b. Programme principale de Rsolution par la mthode 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);

TPE Analyse numrique


13

Numrisation des problmes sur MATLAB

else
c=(a+b)/2;
if f(c)==0
fprintf('s=%f est la solution',c);
elseif f(a)*f(c)<0
b=c;
else
a=c;
end
while (abs(b-a)>=e && f(c)~=0)
c=(a+b)/2;
if f(c)==0
fprintf('s=%f est la solution',c);
elseif f(a)*f(c)<0
b=c;
else
a=c;
end
end
if f(c)~=0
fprintf('s=%f est la solution',(a+b)/2);
end
end

Pour la fonction g(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 g(a)==0
fprintf('s=%f est la solution',a);
elseif g(b)==0
fprintf('s=%f est la solution',b);
else
c=(a+b)/2;
if g(c)==0
fprintf('s=%f est la solution',c);
elseif g(a)*g(c)<0
b=c;
else
a=c;
end
while (abs(b-a)>=e && g(c)~=0)
c=(a+b)/2;
if g(c)==0
fprintf('s=%f est la solution',c);
elseif g(a)*g(c)<0
b=c;
else
a=c;
end
end
if g(c)~=0
fprintf('s=%f est la solution',(a+b)/2);
end
end

Pour la fonction h(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: ');

TPE Analyse numrique


14

Numrisation des problmes sur MATLAB

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)<0
b=c;
else
a=c;
end
while (abs(b-a)>=e && h(c)~=0)
c=(a+b)/2;
if h(c)==0
fprintf('s=%f est la solution',c);
elseif h(a)*h(c)<0
b=c;
else
a=c;
end
end
if h(c)~=0
fprintf('s=%f est la solution',(a+b)/2);
end
end

c. Programme principale de Rsolution par la mthode de Newton


i.
Pour f(x)
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 x : ');
n=0;
if f(x)==0;
fprintf('s=%f est la solution',x);
elseifdif(x)==0;
fprintf('l''equation n''pas de solution');
else
while(abs(f(x)/dif(x))>=e && n<NITmax&& f(x)~=0 &&dif(x)~=0)
n=n+1;
x=x-f(x)/dif(x);
end
if( 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 lquation ax3+bx+cx+d=0 par la methode de Neuton


pour x0=0

Declaration du polynome

TPE Analyse numrique


15

Numrisation des problmes sur MATLAB


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 && p(x,a,b,c,d)~=0 &&
dif(x,a,b,c,d)~=0)
n=n+1;
x=x-p(x,a,b,c,d)/dif(x,a,b,c,d);
end
if ( 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. Rsolution par la mthode de Newton dans les cas :


a)

( )

pour x00 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 && f(x)~=0 && dif(x)~=0)
n=n+1;
x=x-f(x)/dif(x);
end
if ( 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

TPE Analyse numrique


16

Numrisation des problmes sur MATLAB


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 fonction
function 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 aprs %d iteration\n',n);
else
while(abs(g(x)/dig(x))>=e && n<NITmax && g(x)~=0 && dig(x)~=0)
n=n+1;
x=x-g(x)/dig(x);
end
if ( 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.

Intgration numrique d'une quation diffrentielle

a.

avec y(0)=1

Dclaration de la fonction
function t=f(x,y)
t=x/y+y/2;

Programme principale pour Euler


fprintf('\nAlgorithme de calcul d''une equation differentielle par la methode
d''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)

TPE Analyse numrique


17

Numrisation des problmes sur MATLAB

end

Programme principale pour Runge-Kutta


fprintf('\nAlgorithme de calcul d''une equation differentielle par la methode de
Runge 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

Dclaration de la fonction
function t=g(x,y)
t=(y-x)/(y+x);

Programme principale pour Euler


fprintf('\nAlgorithme de calcul d''une equation differentielle par la methode
d''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-Kutta


fprintf('\nAlgorithme de calcul d''une equation differentielle par la methode de
Runge 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.

rsolution numrique d'un systme dquations non linaires


Diagramme des flux dun systme de deux quations non linaires
TPE Analyse numrique

18

Numrisation des problmes sur MATLAB

Ayant un systme du genre


(
)
et en ayant dfinie les fonctions
{
(
)
Val (f,x,y) calculant la valeur de f pour le couple (x,y) donn.
Drive (f,1,x,x,y) calculant la valeur de la drive premire par rapport x pour le
couple (x,y) donn.
Det (A,n) calculant le dterminant de la matrice carre A dordre n
Dbut
Lire (x0,y0), Nitmax
(x,y) (x0,y0)
n0

Val (f1,x,y)=0 &


Val f2,x,y)=0 ?

oui
(x,y) est solution
du systme

non
a11 Drive (f1,1,x,x,y)
a12 Drive (f1,1,y,x,y)
a21 Drive (f2,1,x,x,y)
a22 Drive (f2,1,y,x,y)
(
oui

Det (A,2)=0 ?
non

Afficher(Pas de
solution)

nn+1
b1 Val (f1,x,y)
b2 Val (f2,x,y)
(

Fin
varx Det (B,2)/ Det (A,2)
vary Det (C,2)/ Det (A,2)

(x,y) (x+varx,y+vary)

TPE Analyse numrique


19

Numrisation des problmes sur MATLAB

Programme en langage MATLAB


a) {
fprintf('programme de rsolution d''un systme d''equation non linaire:\nx^2-3x4=0\nx^3-3x^2-2xy+4x-2=0\n');
Nitmax=input('entrer le nombre itrations max: Nitmax= ');
fprintf('entrer les coordonnes 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 coordonnes x=%f et y=%f est solution du systme\n',x,y);
else
while (f1(x,y)~=0 || f2(x,y)~=0 && n<Nitmax)
if De(x,y)==0
fprintf('pas de solution car le dterminant est nul');
else
n=n+1;
b1=-1*f1(x,y);b2=-1*f2(x,y);
a11=dxf1(x,y);a12=dyf1(x,y);a21=dxf2(x,y);a22=dyf2(x,y);
B=[b1 a12;b2 a22];C=[a11 b1;a21 b2];
varx=det(B)/De(x,y);
vary=det(C)/De(x,y);
x=x+varx;
y=y+vary;
end
end
if (f1(x,y)==0 && f2(x,y)==0)
fprintf('le point de coordonnes x=%f et y=%f est solution du systme aprs %d
itration(s)\n',x,y,n);
elseif n>Nitmax
fprintf('pas de solution aprs Nitmax=%d itrations\n',Nitmax);
else
fprintf('pas de solution aprs %d itrations\n',n);
end
end

b) {
fprintf('programme de rsolution d''un systme d''equation non linaire:\nx^2-2xy+4=0\nx^3-2x^2-x-2xy+2y+2=0\n');
Nitmax=input('entrer le nombre itrations max: Nitmax= ');
fprintf('entrer les coordonnes 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 coordonnes x=%f et y=%f est solution du systme\n',x,y);
else
while (f1(x,y)~=0 || f2(x,y)~=0 && n<Nitmax)
if De(x,y)==0
fprintf('pas de solution car le dterminant est nul');
else
n=n+1;
b1=-1*f1(x,y);b2=-1*f2(x,y);
a11=dxf1(x,y);a12=dyf1(x,y);a21=dxf2(x,y);a22=dyf2(x,y);
B=[b1 a12;b2 a22];C=[a11 b1;a21 b2];
varx=det(B)/De(x,y);
vary=det(C)/De(x,y);
x=x+varx;
y=y+vary;
end
end

TPE Analyse numrique


20

Numrisation des problmes sur MATLAB

if (f1(x,y)==0 && f2(x,y)==0)


fprintf('le point de coordonnes x=%f et y=%f est solution du systme aprs %d
itration(s)\n',x,y,n);
elseif n>Nitmax
fprintf('pas de solution aprs Nitmax=%d itrations\n',Nitmax);
else
fprintf('pas de solution aprs %d itrations\n',n);
end
end

TPE Analyse numrique


21

Numrisation des problmes sur MATLAB

TPE N2
Rsolution dun systme dquations linaire AX=B pour matrice
SDP

I.
1.

Sous-programme CHOLESKY permettant de dterminer la matrice L de la factorisation de


CHOLESKY de la matrice A

Diagramme de flux
Dbut
Lire n
Lire A
l11sqrt (a11)
i1
ii +1
li1 a11/ l11
non

i=n?
oui
j1
jj+1
S=0
k=0
kk+1
S S +ljk*ljk

non

k= j-1 ?

2
1

TPE Analyse numrique


22

oui

Numrisation des problmes sur MATLAB

1
ljj sqrt(ajj-S)
ij
ii+1
S0
kk+1
S S +ljk*ljk
non

k= j-1 ?
oui
lij (aij-S)/ljj

non

i= n ?
oui

non

i= n ?
oui
Afficher L
Fin

Sous Programme
n=input('donner la dimension de la matrice A:');
a=input('entrer la matrice Symtrique Dfinie 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;

TPE Analyse numrique


23

Numrisation des problmes sur MATLAB


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 dterminer les matrice L et D de la factorisation de


CROUT de la matrice A

Diagramme de flux

Sous Programme

II.

Rsolution dun systme dquations linaire AX=B pour matrice


pleine quelconque
1. Transformation de A en matrice triangulaire
TPE Analyse numrique

24

Numrisation des problmes sur MATLAB

Diagramme de flux
Dbut

Lire n
Lire A,B
k0
kk+1
ik
ii+1
paik/akk
jk-1
jj+1
aijaijp*akj
non

j=n ?
oui
biaijp*bk

non

i=n ?
oui

non

k=n ?
oui
1

TPE Analyse numrique


25

Numrisation des problmes sur MATLAB


1
xnbn/ann
ii1
S0
ji
jj+1
SS+aij*xj
non

j=n ?
oui

xi(biS)/aii

non

i=1 ?
oui

Afficher x1,x2,,xn

Fin

Programme
fprintf('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
x(n,1)=b(n,1)/a(n,n);
fprintf('x%d=%f\n',n,x(n,1))

TPE Analyse numrique


26

Numrisation des problmes sur MATLAB

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 diagonale


Diagramme de flux

TPE Analyse numrique


27

Numrisation des problmes sur MATLAB

Dbut

Lire n
Lire A,B
k0
kk+1
ik
ii+1
paik/akk
jk-1
jj+1
aijaijp*akj
non

j=n ?
oui
biaijp*bk

non

i=n ?
oui

non

k=n ?
oui
1

TPE Analyse numrique


28

Numrisation des problmes sur MATLAB

1
kn
kk-1
ik-1
ii-1
paik/akk

jk-1
jj+1
aijaijp*akj

non

j=n ?
oui
biaijp*bk

non

i=1 ?
oui

non

k=1 ?
oui
i0
ii+1
xibi/aii

non

i=n ?
oui

Afficher x1,x2,,xn
Fin

TPE Analyse numrique


29

Numrisation des problmes sur MATLAB

Programme
fprintf('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

TPE Analyse numrique


30

Vous aimerez peut-être aussi