Correction TP1 AnalyseNum
Correction TP1 AnalyseNum
Correction TP1 AnalyseNum
1ère année
Question 3 Montrer que la fonction f (x) = x − cos(x) n’admet qu’un seul et unique zéro sur [0, 1]. (Pour
aide, 0 < sin(1) < 1 et 0 < cos(1) < 1). On note ` ce zéro.
Remarquons tout d’abord que f (0) = −1 < 0 et f (1) = 1 − cos(1) > 0, alors en utilisant le théorème des
valeurs intermédiaires on a que f admet au moins un zéro de f dans [0, 1]. D’autre part, f 0 (x) = 1−sin(x),
f admet donc le tableau des variations suivant sur [0, 1]
x 0 ` 1
f 0 (x) 0 +
f (1) > 0
f (x) 0
−1
On a montré prédemment que f admettait un unique zéro sur [0, 1]. Or pour tout n, xn ∈ [0, 1], donc pour
montrer que la suite converge bien vers `, il suffit de montrer que la suite (xn ) converge.
1
g est une fonction continue et dérivable sur [0, 1] et g 0 (x) = sin(x) est une fonction continue sur [0, 1]. g 0
admet donc un maximum sur [0, 1] et comme elle est strictement croissante sur [0, 1]
Le maximum de |g 0 | sur [0, 1] est strictement inférieur à 1, donc d’après le cours, la suite (xn ) converge vers
` unique solution de l’équation ` = g(`) sur [0, 1] (et solution de f (`) = 0).
On a g(`) = 0 (par définition) et g 0 (`) = sin(`) 6= 0 (car ` 6= 0 sur [0, 1]) donc la méthode est d’ordre 1.
Question 6 Récupérer sur l’intranet le fichier pointfixe.sci définissant une certaine fonction.
function [ y ] = pointfixe(x0,n)
y = x0 ;
for i = 1:n
y = ..................... ;
end
endfunction
Cette fonction prend en entrée x0 une valeur initiale de la suite et n le nombre d’itérations. La fonction doit
retourner y valant xn . Compléter le fichier. Le cosinus se calcule par cos() en Scilab. Charger la fonction
dans Scilab et vérifier pour différentes valeurs initiales prises dans [0, 1] que la suite converge vers le même
` = cos(`). Que vaut ` ? (Normalement vous devez trouver ` ≈ 0, 7390851332151606722931)
function [ y ] = pointfixe(x0,n)
y = x0 ;
for i = 1:n
y = cos(y) ;
end
endfunction
Question 7 Récupérer sur l’intranet le fichier pointfixeErreur.sci définissant une certaine fonction.
2
Cette fonction prend en entrée x0 une valeur initiale de la suite. Compléter le fichier tel que err(i) vaut |ei |
l’erreur à l’étape i en valeur absolue ici. La valeur absolue se calcule par abs() en Scilab. Charger la fonction
dans Scilab. Afficher alors l’évolution de l’erreur en tapant directement en ligne les commandes suivantes
--> erreur = pointfixeErreur(0.1)
--> plot2d(erreur)
plot2d est une fonction permettant d’afficher graphiquement les résultats. Essayer pour différentes valeurs
initiales prises dans [0, 1].
3
Cette fonction prend en entrée x0 une valeur initiale de la suite. Compléter le fichier tel que ratio(i)
vaut |e|ei+1
i|
|
le coefficient de réduction asymptotique de l’erreur. Charger la fonction dans Scilab. Afficher
graphiquement les résultats à l’aide de la commande plot2d. Vérifie t-on que la méthode est d’ordre 1 ?
|ei+1 |
Les trois courbes tendent vers le même réel strictement positif donc |ei | admet une limite réelle strictement
positive, cela confirme bien que la méthode est d’ordre 1.
Question 9 Que vaut g ? Montrer que cette méthode est d’ordre 2 dans ce cas. (Pour info, 0 < cos(`) < 1
et 0 < sin(`) < 1).
4
et sa dérivée g 0 sur [0, 1] vaut
On vérifie que g 0 (`) = 0 (car l = cos(`)), la méthode de Newton est au moins d’ordre 2. Étudions maintenant
g 00 sur [0, 1]
1
g 00 (x) = (2 cos x sin x − x sin x)(1 + sin x)2 − 2 cos2 x(x − cos x)(1 + sin x)
(1 + sin x)4
et
(2 cos(`) − `) sin(`)(1 + sin(`))2 (2 cos(`) − `) sin(`) ` sin(`)
g 00 (`) = 4
= 2
= 6= 0
(1 + sin(`)) (1 + sin(`)) (1 + sin(`))2
La méthode de Newton est donc bien d’ordre 2.
Question 10 Modifier le fichier pointfixe.sci afin que la suite utilise la méthode de Newton. Charger la
fonction dans Scilab et vérifier pour différentes valeurs initiales prises dans [0, 1] que la suite converge vers
le même ` = cos(`). Que vaut ` ? (Normalement vous devez trouver ` ≈ 0, 7390851332151606722931)
function [ y ] = pointfixe(x0,n)
y = x0 ;
for i = 1:n
y = y - (y - cos(y))./(1 + sin(y)) ;
end
endfunction
On trace pour quelques valeurs (x0 = 0 en noir, x0 = 0.5 en bleu et x0 = 1 en vert) l’évolution de l’écart
entre xi et la limite attendue.
5
On vérifie bien sur ces exemples la convergence vers la valeur attendue. Notons aussi que la méthode de
Newton converge plus rapidement que la méthode naïve.
|ei+1 |
Pour vérifier si la méthode de Newton est d’ordre 2 ou non. Il faudrait tout d’abord vérifier que le ratio |ei |
tende vers 0 indépendamment de la valeur initiale choisie puis érifier que le ratio |e|ei+1
i|
2
|
tende vers un réel
strictement positif indépendamment de la valeur initiale. Dans ce second cas, il faudrait modifier le fichier
pointfixeVitesseConvergence.sci de la manière suivante