TP3 Résolution d'équation f(x)=0
On s'interesse à la résolution numérique d'une équation f(x)=0, où de manière équivalente à
g(x)=x avec g(x)=f(x)+x.
Newton
Principe de la méthode
Elle consiste à remplacer progressivement une valeur x_n, proche de la solution f(x)=0,
par une valeur x_{n+1}, plus proche de la solution, définie par :
- on trace la tangente
Tau graphe defau point(x_n,f(x_n)) x_{n+1}est l'abscisse du point d'intersection deTavec l'axe desx. L'idée est d'approcher la solution def(x) = 0avec la solution deT(x)=0.
- Montrer que la suite
(x_n)est définie par la formule de récurrence
x_{n+1} = x_{n} - \frac{f(x_n)}{f'(x_n)}
- On s'interesse au cas particulier
f(x)=x^2-2. Montrer que la récurrence précédente devient (Méthode de Héron)
x_{n+1} = \frac{x_n+\frac{2}{x_n}}{2}
-
Ecrire une fonction scilab
--> function [x] = Heron(x0,n) // x0 <-> valeur initiale pour la suite // n <-> nombre d'itérations // x <-> valeur calculée -
Comparer la vitesse de convergence avec la méthode dichotomique du tp1, en calculant l'erreur commise en fonction du nombre d'itérations (on considère que la solution exacte est
sqrt(2)). -
Vérifiez que la méthode est d'ordre 2 (ou pas), en calculant
\frac{|e_{i+1}|}{|e_i|}. -
Ecrire une fonction scilab
--> function [x n]=newton(f,df,x0,eps) // f <-> fonction // df <-> fonction dérivée de f // x0 <-> point de depart // eps <-> precision // x <-> valeur calculée // n <-> nombre d'itérations necessairesPour le test d'arrêt, on arrête le calcul dès que
|x_{n+1} - x_n |est plus petit que la précision souhaitée. Évidemmentfetdfdoivent être définies !- Testez avec la fonction
f(x)= x - \cos x - Tester avec la fonction
f(x)=x^2 -2 - Tester avec la fonction
\cos x - x^2 - Trouver une valeur approchée de toutes les racines de la fonction
x^3-4x+1
- Testez avec la fonction
-
Pour la fonction
\coscalculer la racine approchée pour les valeurs initialesx_0=1,2,\ldots,10, placer les valeurs initiales et les solutions sur le graphe de la fonction\coset commenter. -
Reprendre les questions précédentes en utlisant la fonction
fsolvede scilab.
