Sup’Galilée 10 décembre 2013
MACS1
Initiation aux projets numériques-TP7
Résolution d’équations non linéaires
Évaluation
Les programmes commentés ainsi que les algorithmes associés écrits sur feuille sont à rendre à la fin de la séance à
l’adresse suivante :
L’intégralité du TP est à rendre avant le 17 décembre 13h45.
Remarques :
Les programmes non commentés ne seront pas lus.
Les programmes qui ne s’éxécutent pas ne seront pas lus. Si un programme contient des erreurs, veuillez localiser vos
erreurs et expliquer ce qu’il faut faire pour les corriger.
Introduction
Dans ce TP, nous nous intéressons à la résolution numérique des équations non linéaires de type f(x)=0ou g(x) = x, où
fet gsont des fonctions non linéaires. Pour résoudre ce type de problème, trois méthodes sont utilisées :
La méthode de dichotomie (résolution d’équations du type f(x) = 0).
La méthode du point fixe (résolution d’équations du type g(x) = x)
La méthode de Newton (résolution d’équations du type f(x)=0)
Toutes ces méthodes sont des méthodes itératives : à partie d’une donnée x0, on construit x1puis x2, puis, pas à pas, les
premiers termes de la suite (xk)kN.
Critère d’arrêt de l’algorithme
Numériquement il faut pouvoir arrêter l’algorithme une fois que celui-ci à convergé, c’est à dire une fois que xnest suffisamment
proche de la solution exacte (notée ¯x). Nous allons pour cela définir des critères d’arret. Pour une tolérance ε > 0donnée, il
faudrait pouvoir vérifier que le module de la différence entre la solution exacte et la solution approchée est inférieur à ε, c’est
à dire que que
|xn¯x|< ε.
Cependant, comme, en général, la solution exacte ¯xn’est pas connue, ce critère n’est pas exploitable numériquement. Il existe
quand même deux types de critères d’arret utilisables en pratique :
1. Contrôle du résidu : les itérations s’achèvent dès que
|f(xn)|< ε (ou |g(xn)xn|< ε).
2. Contrôle de l’incrément : les iterations s’achèvent dès que
|xn+1 xn|< ε.
Nombre maximal d’itérations
En plus d’un de ces critères d’arrêt, il faut pouvoir arrêter l’algorithme lorsque celui-ci diverge ou lorsque la convergence est
trop lente. On va alors définir le nombre d’itérations maximal nmax. L’algorithme s’arrêtera dès que n>nmax.
1
Calcul de l’erreur
Le calcul de l’erreur sert d’une part à vérifier les estimations théoriques, et, d’autre part à comparer la vitesse de convergence
différentes méthodes pour approcher la solution exacte ¯x. Ainsi, en plus du calcul d’une approximation de ¯xon a parfois
besoin de calculer l’erreur à chaque étape de l’algorithme |en|=|xn¯x|. De nouveau, en général, ¯xn’est pas connue (même
si ¯xest connue sa valeur sera approchée par l’ordinateur (par exemple si ¯x=π)). En pratique, on calculera un vecteur etel
que
en=|xn¯xa|(1)
de taille nit + 1 nit est le nombre d’itérations et
¯xavaut ¯xsi ¯xest connue.
¯xaest une valeur approchée de ¯xaussi précise que possible (calculée avec une tolérance εtrès petite) sinon.
Représentation de l’erreur
Pour représenter l’erreur, on peut utiliser deux types de graphes :
On peut d’une part tracer l’erreur en fonction du nombre d’itérations (en échelle logarithmique). Pour cela on peut
utiliser la fonction semilogy de Matlab.
On peut aussi tracer en+1 en fonction de ende façon à trouver l’ordre de la méthode. On rappelle qu’une méthode est
d’ordre ps’il existe une constante Cet une nombre entier positif n0tel que
|en+1| ≤ C|en| ∀nn0.
En pratique on aura en fait
|en+1| ≈ C|en|p
si bien qu’en passant au logarithme, on obtient
ln |en+1| ≈ pln |en|+ ln C
Ainsi, en traçant, ln |en+1|en fonction de ln |en|, on obtiendra approximativement une droite de pente p.
Exercice 1* (Algorithmique)
1. Méthode de dichotomie : on souhaite calculer une valeur approchée d’une racine d’une fonction fdonnée dans un
intervalle [a, b]R. La racine doit être calculée avec une précision de εdonnée.
Quels sont les paramètres d’entrée ? quels sont les paramètres de sortie ?
Définir un critère d’arrêt pour cet algorithme.
Ecrire l’algorithme complet de la fonction Dichotomie.m.
Ecrire une fonction supplémentaire DichotomieErreur.m ayant un paramètre d’entrée supplémentaire ¯xa(définie
par (1)) et un paramètre de sortie supplémentaire le vecteur e.
2. Méthode de Newton : on souhaite calculer une valeur approchée d’une racine d’une fonction fdonnée, partant d’un
point x0donné. La racine doit être calculée avec une précision de ε.
Quels sont les paramètres d’entrée ? quels sont les paramètres de sortie ?
Définir un critère d’arrêt pour cet algorithme.
Ecrire l’algorithme complet de la fonction Newton.m.
Ecrire l’algorithme d’une fonction supplémentaire NewtonErreur.m ayant un paramètre d’entrée supplémentaire
¯xa(définie par (1)) et un paramètre de sortie supplémentaire le vecteur e.
3. Méthode du point fixe : on souhaite calculer une valeur approchée d’un point fixe d’une fonction gà partir d’un point
x0donné. Le point fixe doit être calculé avec une précision de εdonnée.
Quels sont les paramètres d’entrée ? quels sont les paramètres de sortie ?
Définir un critère d’arrêt pour cet algorithme.
Ecrire l’algorithme complet de la fonction PointFixe.m.
Ecrire l’algorithme d’une fonction supplémentaire PointFixeErreur.m ayant un paramètre d’entrée supplémen-
taire ¯xa(définie par (1)) et un paramètre de sortie supplémentaire le vecteur e.
4. Représentation de l’erreur
Écrire l’algorithme d’une fonction RepresentationErreur1.m qui trace l’erreur een fonction du nombre d’ité-
rations en échelle logarithmique. L’erreur eest stockée dans un vecteur.
Écrire l’algorithme d’une fonction RepresentationErreur2.m qui trace l’erreur ln |en+1|en fonction de ln |en|
et qui calcule l’ordre de la méthode numérique. L’erreur eest stockée dans un vecteur.
Indication. Dans Matlab, il est possible d’utiliser une fonction en paramètre en utilisant la fonction feval. Par exemple,
si on veut effectuer le produit entre deux fonction fet gdéfinie dans les fichiers f.m et g.m, on peut créer la fonction
produit.m comme suit :
2
function [ test ] =produit( fonc1,fonc2, x)
% fonc1 : nom (chaine de caracteres) de la premiere fonction
% fonc2 : nom (chaine de caracteres) de la seconde fonction
% x : point (ou vecteur) auquel on calcule le produit
% test = fonc1(x) *fonc2(x) ;
f1 = feval(fonc1, x)
f2 = feval(fonc2,x)
end
L’appel de la fonction se fait comme suit :
x = 0;
test =produit( ’f’,’g’, x) ;
Exercice 2* : méthode de dichotomie (application à la recherche des racines
carrées)
1. En matlab, coder la méthode Dichotomie.m et DichotomieErreur.m.
2. Soit λR+donné et fλ= (x2λ). Quelles sont les solutions de l’équation fλ(x)=0?
3. Appliquer l’algorithme de dichotomie pour la résolution de fλsur [0,+]avec λ= 2.
4. En Matlab, coder les fonctions RepresentationErreur1.m et RepresentationErreur2.m.
5. Tracer l’évolution de l’erreur en fonction du nombre d’itérations.
Exercice 3* : méthode de Newton
1. En matlab, coder la méthode Newton.m et NewtonErreur.m.
2. Appliquer l’algorithme de Newton pour la résolution de fλ(x)=0sur ]0,+[avec λ= 2. On choisira x0>0.
3. Tracer l’évolution de l’erreur en fonction du nombre d’itérations. Estimer l’ordre de la méthode. Comparer les méthodes
de dichotomie et de Newton : pour les deux méthodes, on évaluera le nombre d’itérations nécéssaires pour obtenir une
précision de 106,108et 1010.
4. Considérons maintenant la fonction x7→ sin(x)+sin(6x)(1x2)sur l’intervalle [π, π]. Tester l’algorithme de Newton
en prenant x0= 0.15 puis x0= 0.25 et x0= 0.5. Que se passe-t-il ? expliquer.
Exercice 4* : méthode du Point fixe
1. En matlab, coder la méthode PointFixe.m et PointFixeErreur.m.
2. Appliquer l’algorithme du point fixe pour trouver les zéros de h(x) = 2 sin xxen prenant x0[1.5,2].
3. Remarquer que 0est un point fixe de h. Appliquer l’algorithme du point fixe à hen prenant x0= 0.01 puis x=0.01.
Que se passe-t-il ? expliquer.
3
1 / 3 100%