Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
REPUBLIC OF CAMEROON
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
10G00746
10G00688
10G00660
TPE N1
I.
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
Lire
Lire n, Nitmax
Nit1
Non
|UnVn|<
nn+1
NitNit+1
lUn
Non
Afficher l
Nit>Nitmax
Oui
Afficher (pas de convergence)
Fin
Oui
( )
( )
( )
( )
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
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;
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);
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
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: ');
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
( )
( )
Pour g(x)
function y=g(x)
y=(1-cos(x))/x;
b.
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;
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.
Mthode de Simpson
calcul de I
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.
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
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.
( )
ii.
( )
iii.
( )
[
TPE Analyse numrique
11
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
non
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
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
Declaration du polynome
Programme principale
( )
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
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.
a.
avec y(0)=1
Dclaration de la fonction
function t=f(x,y)
t=x/y+y/2;
end
b.
avec y(0)=1
Dclaration de la fonction
function t=g(x,y)
t=(y-x)/(y+x);
V.
18
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)
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 N2
Rsolution dun systme dquations linaire AX=B pour matrice
SDP
I.
1.
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
oui
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;
end
end
for i=1:n
for j=1:n
fprintf('l(%d,%d)=%f\n',i,j,l(i,j))
end
end
2.
Diagramme de flux
Sous Programme
II.
24
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
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))
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
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
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
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