PROGRAMMATION SCIENTIFIQUE EN C PRO-1027 Résolution de système d’équations nonlinéaires (racines d’équations) Méthode de Newton-Raphson Convergence de la méthode Méthode de la sécante Travail pratique 2 b) Méthodes de Newton-Raphson Cette méthode converge plus rapidement que la méthode de bissection La méthode de Newton est basée sur l’utilisation de la portion linéaire de la série de Taylor df f ( x1 ) f ( x0 ) x dx x x1 x0 Méthodes de Newton-Raphson Nous avons une racine quand f(x) = 0, alors df 0 f ( x1 ) f ( x0 ) ( x1 x0 ) dx f ( x0 ) x1 x0 df / dx df f ' ( x0 ) dx f ( x0 ) x1 x0 f ' ( x0 ) Méthodes de Newton-Raphson Nous pouvons alors estimer une nouvelle valeur de la racine (x1) à partir d’une estimation initiale x0. Nous pouvons alors raffiner l’estimation de la valeur de la racine (x1) de façon itérative f ( xi ) xi 1 xi f ' ( xi ) Méthodes de Newton-Raphson Si f(x) est linéaire nous obtenons la solution au premier essai Si f(x) est non linéaire, la série de Taylor est seulement valide pour de petits x Les termes non linéaires tronqués de la série de Taylor influence la précision de la solution Méthodes de Newton-Raphson À partir d’une estimation initiale d’une racine x0 nous calculons une nouvelle estimation x1 et ce itérativement jusqu’à l’obtention de la solution La nouvelle estimation xi+1 est toujours estimée à partir de la dernière estimation xi. Méthodes de Newton-Raphson 0 f ( xi ) f ( xi ) f ' ( xi ) xi 1 xi xi 1 xi Méthode de Newton-Raphson Algorithme de Newton NEWTON_RAPHSON(float x0, int nbiterMAX, float delta, float eps) v = f(x0) nbiter = 0 imprimer nbiter,x0,v deltax1x0 = MAXFLOAT TANT QUE nbiter<nbiterMAX ET deltax1x0 > delta ET |v| > eps FAIRE x1 = x0-v/f’(x0) v = f(x1) imprimer nbiter, x1,v deltax1x0 = x1- x0 x0 = x1 nbiter = nbiter + 1 FIN TANT QUE Convergence de la méthode Dans certains cas l’algorithme de Newton ne converge pas f ’(xi) -> 0 Convergence de la méthode Dans certains cas l’algorithme de Newton ne converge pas f (xi) / f’(xi) = -f (xi+1) / f’(xi+1) Convergence de la méthode Dans certains cas l’algorithme de Newton ne converge pas f (xi) / f’(xi) = -f (xi+1) / f’(xi+1) Convergence de la méthode Dans certains cas l’algorithme de Newton ne converge pas (ou converge lentement) f’(xi) >>> f(xi) Méthode de la sécante La seule différence avec la méthode de NewtonRaphson réside dans le calcul numérique de la dérivée f’(x) Une nouvelle estimation de la racine xi+1 est déduite à partir des valeurs de la fonction f(xi) et f(xi-1) et des estimations précédentes des racines xi et xi-1. Méthode de la sécante La valeur de la pente f’(x) est alors donnée par f ( xi ) f ( xi 1 ) f ' ( xi ) xi xi 1 La nouvelle estimation de la racine est donnée par xi xi 1 xi 1 xi f ( xi ) f ( xi ) f ( xi 1 ) Méthode de la sécante Méthode de la sécante Algorithme de la sécante SECANTE(float x0, float x1, int nbiterMAX, float delta, float eps) u = f(x0) v = f(x1) nbiter = 0 imprimer nbiter,x0,u nbiter++ imprimer nbiter,x1,v deltax1x0 = MAXFLOAT TANT QUE nbiter<nbiterMAX ET deltax1x0 > delta ET |v| > eps FAIRE SI |u| < |v| ALORS Permuter x0 et x1 , u et v FIN SI Méthode de la sécante Algorithme de la sécante TANT QUE nbiter<nbiterMAX ET deltax1x0 > delta ET |v| > eps FAIRE SI |u| < |v| ALORS /* POUR ÉVITER LA DIVERGENCE */ Permuter x0 et x1 , u et v FIN SI s = (x1-x0)/(v-u) /* = 1/f ’(x1) */ x0 = x1 u=v x1 = x0-v*s v = f(x1) imprimer nbiter, x1,v deltax1x0 = x1- x0 nbiter = nbiter + 1 FIN TANT QUE Travail pratique 2 b Utilisation des méthodes de Newton et de la sécante