cs_Maritime
Messages postés69Date d'inscriptiondimanche 16 mars 2003StatutMembreDernière intervention14 mars 2015
-
27 févr. 2008 à 10:16
marinmarais
Messages postés104Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention16 juillet 2010
-
28 févr. 2008 à 11:28
Bonjour,
Je dois resoudre une equation du 6eme degré f (µ)=0,
ça consiste a rechercher la plus petite racine µ qui est en fait un multiplicateur de Lagrange.
avec la fonction f (µ), et sa dérivée f '(µ).
on pose µk+1= µk - f (µk) / f '(µk)
On peut choisir comme valeur initiale µ0=0.
J'ai besoin d'un coup de main "Code" pour résoudre cette equation par la methode itérative de Newton.
marinmarais
Messages postés104Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention16 juillet 20101 27 févr. 2008 à 15:18
Bonjour Maritime,
Fait ca avec une boucle WHILE.
Tu definis la precision de la determination de µ dont tu as besoin.
En gros, ca ressemblerait a ca :
> ' Definition du seuil
> epsilon=0.000001
>
> ' Valeur initiale
> mo=0
>
> ' Premiere Valeur
> m1=mo-f(mo)/f'(mo)
> ' NB : ce que j'ai note f(mo) correspond bien evidemment a : a0+a1*mo+...+a6*mo^6 _
> ' De meme, f'(mo) correspond a : a1+2*a2*mo+...+6*a6*mo^5
>
> ' On lance la boucle - Tant que |mi+1-mi| > 1x10^-6, on continue l'operation
> while abs(m1-mo)>epsilon
> m=m1-f(m1)/f'(m1)
> ' Meme remarque pour f et f' dans la notation
>
> mo=m1
> m1=m
> loop
> ' Hum, je ne garantis pas l'exactitude de la syntaxe... Ca fait longtemps que j'ai pas fait de boucle While... _
> Je te laisse rechercher sur ce forum ;o)
>
> ' Resultat final
> mu=m1
marinmarais
Messages postés104Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention16 juillet 20101 28 févr. 2008 à 11:28
De rien...
Ca rend bien service ce genre de petits algorithmes...
Si ca t'interesse, tu peux faire - a peu pres - la meme demarche pour des systemes a plusieurs dimensions. On joue entre la fonction et sa matrice jacobienne.
Allez, je me motive et je poste l'algo (ca tombe bien, j'etais justement en train de regarder mes cours de maths de l'inge ;o) ) :
L'exemple est dans IR^2 mais ca marche egalement dans IR^n.
On a 1 fct F de IR^2 dans IR^2
Je note en gras les vecteurs.
Les matrices sont notees en gras souligne.X(x1,x2) et Y (y1,y2)= F( X )
Soient les deux fonctions f1 et f2 definies comme suit :
f1(x1,x2) =y1
f2(x1,x2)= y2
On cherche a determiner la valeur de X telle que F(X) =0
On va construire une suite Xn qui converge vers le vecteur X qui annule la fonction F.
Je vous epargne la theorie, mais on joue avec les variations de la fonction F, autrement dit les derivees partielles de F (d'ou l'introduction de la matrice jacobienne).
Soit Ji la jacobienne de F en Xi
On definit la valeur initiale X0
Delta= (- J0 ^(-1)) x F(X0)
X1 =X0+Delta
On definit le critere de convergence epsilon
Tant que ||X1-X0||<epsilon
Delta= (- J1 ^(-1)) x F(X1)
X0 =X1
X1=X0+Delta Fin Tant que
Voili voilou. C'est facile a programmer et redoutablement efficace.
Bon, faut en avoir l'usage ;o)
Mais ca sert de temps en temps...