Beruflich Dokumente
Kultur Dokumente
processus qui ressemble beaucoup à celui de newton pour résoudre une équation non linéaire𝑓(𝑥) = 0.
f
On choisit un x arbitraire. f ( xa h) f ( xa ) h
x x xa
f
Le développement de Taylor au premier ordre donne f ( xa h) f ( xa ) h
x x xa
f f ( xa )
si f ( xa h) 0 alors f ( xa ) h 0 Alors la valeur de l’accroissement h est h
x x xa f '( xa )
cette valeur permet de refaire le même travail mais avec un nouveau x égal à xa(1) h xa .
h
Le critère d’arrêt c’est
x
on remarque que les valeurs des X arbitraires convergent vers une valeur déterminée.
Programme :
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
float x,f,fp,h,VA,eps=0.0001;
printf("donner la valeur de x\tx=");
scanf("%f",&x);
do
{
f=exp(x)+x-3;
fp=exp(x)+1;
h=-f/fp;
printf("x=%f \t f=%f \t fp=%f \t h=%f\n",x,f,fp,h);
x=x+h;
VA=((h/x)<0)?-h/x:h/x;
}
while(VA>eps);
printf("la solutoin est %f",x);
getch();
}
Pour un système étant donnée un vecteur x x1 , x2 ,
, xN arbitraire tel que i x 0 cherchons alors le
vecteurs accroissement h h1 , h2 ,
, hN tel que i x h 0
En utilisant un développement de Taylor d’ordre N :
i
x h i x h1
x1
h2 i h3 i
x2 x3
i
xi
hN i 0 on obtient donc N équations de
xN
i
type : i h1 h2 i h3 i i hN i i xi le système sous forme matricielle
x1 x2 x3 xi xN
sera donc :
Programme En Matlab :
On se propose de résoudre le système :
1 x1 , x2 2( x1 4)² x2 3 0
2 x1 , x2 x1 2 x1 x2 2 0
2
1
A 1,1 4 x1 1
x1
1
A 1, 2 1
x2
2
A 2,1 2 x1 2
x1
2
A 2, 2 1
x2
x(1,1)=6;
x(2,1)=4;
epp=0.0001;
vabs=1;
while (vabs>epp)
A(1,1)=4*(x(1)-4);
A(1,2)=-1;
A(2,1)=2*x(1)+2;
A(2,2)=-1;
S(1,1)=-2*(x(1)-4)^2+x(2)-3;
S(2,1)=-x(1)^2-2*x(1)+x(2)+2;
h=inv(A)*S;
x=x+h
vabs=sum(abs(h./x));
end
x
h
vabs
Il va faire des itérations jusqu’à trouver le bon vecteur accroissement
h tel que x h x