Universit Paris-Dauphine
Dpartement MIDO
DE MI2E deuxime anne
Mthodes numriques
anne /
feuille de travaux pratiques
Sances 1 et 2 : prise en main de
Matlab et GNU Octave
Le symbole indique un exercice optionnel. Le travail demand peut tre eectu indiremment
avec Matlab ou le logiciel libre GNU Octave (http://www.gnu.org/software/octave/).
Exercice 1 (manipulation et oprations sur les tableaux).
1. On considre les vecteurs et matrices suivants
l= 1
1
1
0
2
5 , c=
3 , A = 0
0
4
1
5
2
0
0
0
1
0
2
0
0
1
0
3
2
0
0
1
0
2
1
2
, B = 3
4
1
5
0
2
3
4
5
6
3
4
5
6
7
4
5
6
7
8
5
6
7
.
8
9
a. Crer des tableaux correspondants l, c, A et B .
b. Extraire la premire ligne, la deuxime colonne et la sous-matrice (aij )1i3,1j5 de la
matrice A, les termes diagonaux de la matrice B .
c. Analyser et commenter le rsultat produit par les instructions suivantes : l*c, c*l, A*B,
A', A^2, det(A), inv(A), A.*B, A.^B, A\B, B/A, A./B, A.\B, exp(A) et expm(A).
d. Comment dterminer le format (nombres de lignes et de colonnes) de ces tableaux ?
2. Matlab et GNU Octave permettent galement la gnration automatise de tableaux
particuliers. titre d'illustration, analyser 1 et commenter le rsultat produit par chacune
des instructions suivantes :
r=[1.3:15.8]
s=[1.3:0.4:15.8]
t=linspace(1.3,15.8,5)
u=zeros(5)
v=3*ones(1,5)
w=sin([0:pi/6:pi])
x=eye(3)
y=rand(1,5)
z=randn(1,5)
3. On considre les vecteurs de R3 suivants
1
5
1
u = 2 , v = 2 et w = 3 .
3
1
7
a. Crer des tableaux correspondants ces vecteurs.
b. Calculer u + v , u + 3 v 5 w, 15 w.
c. En utilisant les commandes appropries 2 , calculer kuk2 , kvk1 , kwk et le cosinus de
l'angle form par les vecteurs u et v .
1. Ne pas hsiter faire appel l'aide en ligne via l'instruction help suivie du nom de la commande concerne
pour comprendre son fonctionnement.
2. On pourra notamment consulter les aides en ligne des fonctions norm et dot.
4. On considre les matrices suivantes :
A=
2
6
2
3
et B = 7
5
2
3
6
8
4
5 .
7
a. Crer des tableaux correspondants A et B .
b. En utilisant les commandes appropries, calculer leurs dterminants, inverses et valeurs
propres et vecteurs propres associs 3 .
5. Crer des tableaux correspondants la matrice identit d'ordre 6 et la matrice nulle
d'ordre 3.
6. Pour n N, n 2, on considre la matrice tridiagonale d'ordre n dnie par
2
1
An =
1
2
..
..
..
2
1
1
2
a. Que fait la suite d'instructions suivante ?
S=[eye(n) zeros(n,1)];
S=S(:,2:n+1);
A=2*eye(n)-S-S'
b. Rpondre la mme question avec la suite d'instructions ci-dessous.
D=diag(ones(n,1));
SD=diag(ones(n-1,1),1);
A=2*D-SD-SD'
7. On considre la matrice et les vecteurs
5
1
2
A=
8
1
2
0
2
1
5
1
2 , b = 1 et u(0) = 2 ,
1
4
5
et la suite de vecteurs (u(k) )kN dnie par
k N, u(k+1) = A u(k) + b.
a. Crer des tableaux correspondants A, b et u(0) .
b. Calculer les premiers termes de la suite (u(k) )kN . Qu'observe-t-on ?
c. Reprendre les questions prcdentes avec
5
A = 1
1
6 3
1
2
5 1 , b = 1 et u(0) = 1 .
2 0
1
0
d. Interprter ces rsultats.
Exercice 2 (criture de fonctions). On rappelle que l'on peut dnir une nouvelle fonction
pour Matlab ou GNU Octave en crivant, au moyen d'un simple diteur de texte, son code
source dans un chier ayant pour extension 4 .m. Un tel chier de fonction dbute par le mot-cl
function, suivi du nom de la fonction et des paramtres d'entre et de sortie de cette dernire.
Cette dclaration est de la forme :
3. On consultera l'aide en ligne de la commande eig, les termes valeur propre et vecteur propre se
traduisant respectivement par eigenvalue et eigenvector en anglais.
4. Ce type de chier permet aussi d'enregistrer une squence d'instructions faire excuter par le logiciel ; on
parle dans ce cas de chier de script.
function [y_1,y_2,...] = mafonction(x_1,x_2,...)
% Les commentaires situs juste aprs la dclaration de la fonction
% constituent l'aide obtenue en entrant la commande
% help mafonction
Le nom de la fonction et le prxe du nom du chier la contenant doivent imprativement tre
identiques 5 . Ainsi, dans l'exemple ci-dessus, le chier de fonction doit tre nomm mafonction.m.
La fonction elle-mme est appele depuis la ligne de commande, un chier de script ou une autre
fonction de la manire suivante :
[y_1,y_2,...]=mafonction(x_1,x_2,...)
On notera qu'il est possible d'acher le code source d'un chier de fonction prexistant grce la
commande type.
1. crire une fonction nomme polaire, prenant comme arguments d'entre les coordones
cartsiennes (x, y) d'un point de R2 et renvoyant en sortie les coordonnes polaires (r, )
de ce point 6 . Penser commenter le code source de manire ce qu'un utilisateur puisse
utiliser l'aide en ligne pour s'informer sur cette nouvelle fonction.
2. En utilisant une structure de contrle de type if ... else ..., crire une fonction nomme
profil qui associe toute matrice A m lignes et n colonnes son prol, c'est--dire la suite
d'entiers {(i)}i=1,...,m avec une application de {1, . . . , m} dans N telle que
(
(i) =
inf {j {1, . . . , n} | aij 6= 0} si la ieligne de A est non nulle,
n+i
sinon.
Exercice 3 (reprsentation graphique avec la commande plot). On cherche obtenir une
reprsentation graphique de la fonction f (x) = exp(x) sin(4 x) sur l'intervalle [0, 2 ].
1. Que contiennent les tableaux crs via les commandes suivantes ?
x=linspace(0,2*pi,101);
y=exp(-x).*sin(4*x);
2. Tracer la reprsentation graphique de la fonction f associes aux tableaux x et y. En utilisant
le zoom, dterminer une valeur approche du maximum de f sur [0, 2 ]. Comment aner le
trac pour prciser ce maximum ?
3. En utilisant l'instruction hold on, tracer sur une mme gure une reprsentation graphique
des fonctions x 7 x2 et x 7 x2 sin(x) exp(x) sur l'intervalle [1, 1], en utilisant des
couleurs direntes pour chacune d'entre elles.
Exercice 4 (manipulation des nombres complexes). Soit u et v les nombres complexes
u = 11 7i et v = 1 +
3i.
5. Pour viter d'ventuels conits ds l'emploi de noms dj aects des commandes de Matlab ou de GNU
Octave, on prendra soin de vrier qu'une fonction de mme nom n'existe pas dj (grce la commande help
par exemple) et/ou de mettre des majuscules dans le nom (les logiciels
p tant sensibles la casse).
6. On rappelle que, en vertu du thorme de Pythagore, on a r = x2 + y 2 et que, pour obtenir l'angle dans
l'intervalle [0, 2[, on utilise les formules suivantes :
arctan
arctan
= arctan
32
y
x
y
x
y
x
+ 2
+
si
si
si
si
si
x > 0 et
x > 0 et
x < 0,
x = 0 et
x = 0 et
y 0,
y < 0,
y > 0,
y < 0.
Crer des variables correspondant nombres et calculer les modules et les arguments de u et de v ,
les produits uv et uv , ainsi que les parties relle et imaginaire de u3 +v 2 en utilisant les commandes
appropries.
Exercice 5 (formats d'achage). Matlab et GNU Octave utilisent par dfaut le format
de reprsentation double prcision de la norme IEEE 754 pour les calculs arithmtiques et toute
variable est a priori stocke dans ce format. On peut acher des (tableaux de) valeurs numriques
ou chanes de caractres en tapant simplement le nom des variables correspondantes ou en utilisant
la commande disp, cette dernire ralisant l'achage sans crire le nom de la variable concerne.
Il existe dirents formats d'achage prdnis, slectionnables grce la commande format.
1. Tester ces formats 7 en excutant la suite d'instructions suivantes :
x=pi^5;
disp(x) % affichage avec la notation par dfaut
format long % notation sparateur fixe et 15 chiffres significatifs
disp(x)
format short e % notation "scientifique" et 5 chiffres significatifs
disp(x)
format long e % notation "scientifique" et 15 chiffres significatifs
disp(x)
format short % retour la notation par dfaut
Il est aussi possible de contrler trs prcisement la mise en forme d'un achage avec la commande
fprintf, qui permet de spcier explicitement le format via une chane de caractres. Dans cette
dernire, le format voulu pour chaque variable dbute par le signe %, suivi de la longueur minimal
du champ (c'est--dire le nombre minimal de caractres utiliss pour l'achage) et d'un caractre
de conversion (une lettre) indiquant que la valeur acher est un unique caractre (%c), une
chane de caractres (%s), un entier sign en base 10 (%d ou %i) ou encore un rel en notation
sparateur xe (%f), en notation scientique (%e) ou compacte (%g). Dans les derniers cas,
on peut prciser le nombre maximal de caractres utiliss (pour %s), le nombre de chires situs
droite du sparateur (pour %f ou %e) ou bien le nombre de chires signicatifs (pour %g), par un
point suivi d'un chire. Indiquons que plusieurs autres oprateurs optionnels existent (', -, + ou
le caractre espace ), ainsi que des caractres d'chappement, tels que \n pour un saut de ligne,
\t pour une tabulation horizontale, etc... Le tableau de variables acher donn en argument de
la commande doit contenir au moins autant d'lments qu'il y en a de prvu dans la chane de
caractre donnant le format.
2. Tester les possibilits oertes par fprintf en excutant les commandes suivantes :
fprintf('%c\n','abcdefghijklmnopqrstuvwxyz')
fprintf('%s\n','abcdefghijklmnopqrstuvwxyz')
fprintf('%.13s\n','abcdefghijklmnopqrstuvwxyz')
fprintf('%i %i %i\n',[-10:10])
fprintf('%+.2i %+.2i %+.2i\n',[-10:10])
fprintf('%.0f\t%.1f\t%.10f\n',pi,pi,pi)
fprintf('%.0e\t%.1e\t%.10e\n',pi,pi,pi)
fprintf('%.0g\t%.1g\t%.10g\n',pi,pi,pi)
puis en les modiant.
La commande format rat propose enn un un format achage pour lequel les valeurs numriques
sont (ventuellement) approches par une fraction rationnelle.
3. Acher la matrice de Hilbert (obtenue avec la commande hilb) d'ordre 10. Quelle est la
fraction
rationnelle obtenue
pour l'approximation de ? De la constante de Napier e ? De
2 ? De ln(2) ? De ln 12 ?
7. Il faut y ajouter deux formats, un court (format short g) et un long (format long g), utilisant une notation
compacte , pour laquelle le logiciel choisit entre les notations sparateur xe et scientique en fonction de la
valeur acher.
Universit Paris-Dauphine
Dpartement MIDO
DE MI2E deuxime anne
Mthodes numriques
anne /
feuille de travaux pratiques
Sance 3 : boucles et rcursivit
Le symbole indique un exercice optionnel. Le travail demand peut tre eectu indiremment
avec Matlab ou le logiciel libre GNU Octave (http://www.gnu.org/software/octave/).
Exercice 1 (suite de Fibonacci).
1. crire une boucle calculant les valeurs des vingt premiers termes de la suite de Fibonacci
dnie par
u(0) = 0, u(1) = 1 et, k N, u(k+2) = u(k+1) + u(k) ,
et conservant ces valeurs dans un tableau.
2. crire une boucle calculant les termes successifs de la suite de Fibonacci dont la valeur est
infrieure ou gale 50000 et acher le dernier de ces termes.
3. crire enn une fonction fibonacci(n) calculant de manire itrative le ne terme de la suite
de Fibonacci, sans toutefois conserver les valeurs de tous les termes de la suite.
Exercice 2 (suites adjacentes). On dnit deux suites (u(k) )kN et (v (k) )kN par
u(k) + v (k) (k+1) p (k+1) (k)
v .
, v
= u
2
27
On admet que ces suites sont adjacentes, de limite
.
1. crire un programme lisant 1 un entier n et achant l'approximation du nombre obtenue
partir de la valeur de v (n) .
2. crire un programme lisant un rel strictement positif et achant l'approximation du
nombre obtenue partir de la valeur de v (n) , premier terme de la suite (v (k) )kN satisfaire
la condition
(n)
u v (n)
u(n) + v (n) ,
u(0) = 1, v (0) = 2 et, n N, u(k+1) =
avec un rel strictement positif x
Exercice 3 (dveloppements en srie entire de cos et sin). crire une fonction cosn(n,x),
prenant comme arguments un entier naturel non nul n et un rel x, calculant une approximation
de la valeur de la fonction cosinus en x obtenue en ne conservant que les n premiers termes du
dveloppement en srie entire
cos(x) = 1
x2k
x2
+ + (1)k
+ ...
2!
(2k)!
(1)
Comparer les rsultats de cette fonction avec ceux de la commande cos(x) pour direntes valeurs
de n et de x. crire de la mme manire une fonction sinn(n,x) base sur le dveloppement en
srie entire de la fonction sinus
sin(x) = x
x2k+1
x3
+ + (1)k
+ ...
3!
(2k + 1)!
1. Utiliser pour cela la fonction input.
Exercice 4 (programmation rcursive). En informatique, une fonction dite rcursive lorsqu'elle s'appelle elle-mme. En pratique, une telle fonction aura toujours au moins une instruction
conditionnelle, an que, dans certains cas au moins, il n'y ait pas d'appel rcursif (sans quoi la
fonction s'appellerait indniment jusqu' la saturation de la pile, provoquant une interruption
du programme). Le concept de fonction rcursive est gnralement oppos celui de fonction itrative, qui s'excute sans s'invoquer ou s'appeler explicitement.
Bien que cette forme de programmation aboutisse des programmes concis et proches des formulations mathmatiques qui en sont l'origine, il peut parfois tre mal indiqu ou mme catastrophique d'employer la rcursivit (toute fonction rcursive pouvant tre remplace par une fonction
itrative), comme on le vriera la troisime question du prsent exercice.
1. crire une fonction rcursive rfactorielle(n) calculant n!.
2. crire, en utilisant la fonction rem donnant le reste de la division euclidienne de deux entiers,
une fonction rcursive rpgcd(a,b) renvoyant le plus grand commun diviseur 2 des entiers
naturels a et b calcul par l'algorithme d'Euclide 3 .
3. crire une fonction rcursive rfibonacci(n) calculant le ne terme de la suite de Fibonacci
et comparer son temps d'excution avec celui de la fonction fibonacci(n) de l'exercice 1.
4. crire une fonction rcursive rcollatz(n) renvoyant la valeur 1 si la conjecture de Collatz 4
est vrie pour l'entier n > 0.
5. crire une fonction rcursive rcosn(n,x) de calcul d'une approximation de cos(x) vue dans
l'exercice 3 utilisant la relation entre les termes de la somme (1), c'est--dire
u(0) = 1 et, k N , u(k) =
x2
u(k1) .
2k(2k 1)
Exercice 5 (procd 2 d'Aitken). On peut obtenir une valeur approche du rel en
sommant un nombre ni de termes de la srie de MadhavaGregoryLeibniz,
+
X
(1)n
= .
2n
+
1
4
n=0
La convergence de cette srie est malheureusement lente et, pour l'acclrer, on se propose d'utiliser
le procd 2 d'Aitken. Cette technique consiste en la construction d'une suite (u(k) )kN dnie
par
(k)
k N, u
(k)
=s
2
m
X
s(k+1) s(k)
(1)n
(m)
(k)
,
,
avec
,
m
N,
s
=
2n + 1
s 2 s(k+1) + s(k+2)
n=0
ayant mme limite que la suite (s(k) )kN des sommes partielles de la srie de MadhavaGregory
Leibniz et convergeant plus rapidement.
(k)
1. crire
(k) une
boucle calculant les termes de la suite (s )kN et s'arrtant lorsque la condition
s est vrie, avec un rel strictement positif x. En prenant = 106 ,
4
combien faut-il calculer de termes pour satisfaire le critre ?
2. Modier la boucle
de faon
de la suite (u(k) )kN . Pour quelle valeur de
calculer les termes
(k)
6
l'entier k a-t-on u 4 , avec = 10 ?
3. Reprendre les questions prcdentes avec = 108 .
2. C'est--dire le plus grand entier naturel qui divise simultanment ces deux entiers.
3. Cet algorithme est bas sur la proprit suivante : on suppose que a b et on note r le reste de la division
euclidienne de a par b ; alors le pgcd de a et b est le pgcd de b et r . En pratique, il sut donc de faire des divisions
euclidiennes successives jusqu' trouver un reste nul.
4. On appelle suite de Syracuse toute suite d'entiers naturels dnie de la manire suivante : on part d'un nombre
entier plus grand que zro ; s'il est pair, on le divise par deux ; s'il est impair, on le multiplie par trois et on ajoute
un au rsultat,
la suite tant obtenue en rptant cette opration. Aprs que le nombre 1 a t atteint, la suite
devient priodique, les valeurs (1, 4, 2) se rptant indniment en un cycle appel cycle trivial. La conjecture de
Collatz arme que les suites de Syracuse de tous les nombres entiers strictement positifs atteignent le cycle trivial.
Universit Paris-Dauphine
Dpartement MIDO
DE MI2E deuxime anne
Mthodes numriques
anne /
feuille de travaux pratiques
Sance 4 : quelques premires applications du calcul scientique
Le symbole indique un exercice optionnel. Le travail demand peut tre eectu indiremment
avec Matlab ou le logiciel libre GNU Octave (http://www.gnu.org/software/octave/).
Exercice 1 (calcul d'une valeur approche de par la mthode de Monte-Carlo 1 ).
Pour obtenir une valeur approche du nombre par la mthode de Monte-Carlo, on tire au
hasard 2 , dans un carr de ct de longueur gale 2, des points de coordonnes (x, y) et l'on
vrie s'ils appartiennent ou non au disque de rayon gal 1 ayant mme centre que le carr. Les
points tant tirs dans l'ensemble du carr avec la mme loi de probabilit, le rapport entre le
nombre de points tirs dans le disque et le nombre de points tirs au total tend, lorsque le nombre
de tirages tend vers l'inni, vers le rapport des surfaces du disque et du carr, soit 4 , en vertu de
la loi des grands nombres.
1. Au moyen de la commande rand, qui gnre une suite de nombres rels jouant le rle d'une
ralisation d'une suite de variables alatoires continues, indpendantes et identiquement
distribues selon la loi uniforme sur l'intervalle [0, 1], crire une fonction prenant comme
argument le nombre de tirages raliser et renvoyant la valeur approche de obtenue par
la mthode de Monte-Carlo dcrite ci-dessus (pour simplier, on pourra se restreindre au
quart de carr contenu dans l'orthant positif de R2 ).
2. Donner un ordre du nombre de tirages ncessaires pour obtenir plus de deux dcimales
exactes de . Que dire de l'ecacit de cette mthode ?
Exercice 2 (applications linaires entre espaces de polynmes). Soit n un entier naturel
non nul. On note Rn [X] l'espace vectoriel des polynmes coecients rels de degr infrieur ou
gal n.
1. Pour P et Q deux lments de Rn [X], on note R(P, Q) le reste de la division euclidienne de
P par Q. On considre l'application linaire :
R
: Rn [X]
Rn [X]
P
7 R(P, X 2 ).
a. crire une fonction prenant comme paramtre un entier n et renvoie la matrice MR de
l'application R dans la base canonique {1, X, X 2 , . . . , X n } de Rn [X].
b. l'aide de cette fonction, calculer le reste de la division par X 2 pour les polynmes
suivants :
(i) 7 X 8 + 411 X 7 231 X 5 + 31 X 4 + 451 X 3 231 X 42,
5 5
1
X + 0, 432 X 4 22 X 3 + 51 X 2
X + 4, 431.
21
39
c. En utilisant la commande null, dterminer le noyau de R pour n = 6, 7 et 8. Que
(ii) X 7 +
constate-t-on ?
1. On appelle mthode de Monte-Carlo toute mthode visant calculer une approximation numrique par
utilisation d'un procd alatoire. Le nom de ce type de mthode, qui fait allusion aux jeux de hasard pratiqus
dans le clbre casino d'un des quartiers de la cit-tat de la principaut de Monaco, a t invent en 1947 par
Nicholas Metropolis et publi pour la premire fois en 1949 dans un article co-crit avec Stanislas Ulam.
2. C'est--dire selon une loi de probabilit uniforme.
2. On considre prsent l'application linaire drive :
D
: Rn [X]
P
7
Rn [X]
P 0,
associant tout polynme P de Rn [X] ayant pourPcoecients ak , k = 0, . . . , n, le polynme P 0 ayant pour fonction polynomiale P 0 (x) = nk=1 k ak xk1 . Reprendre la question
prcdente avec D en place de R.
3. On considre enn les deux applications composes D R et R D. Que font-elles ? Sont-elles
identiques ? Quel est leur lien avec les produits de matrices MD MR et MR MD ?
Exercice 3 (procd d'orthonormalisation de GramSchmidt). On rappelle que, partant
d'une famille B = {x1 , . . . , xm } de vecteurs linairement indpendants de Rn , avec m et n des entiers tels que 2 m n, le procd d'orthonormalisation de GramSchmidt permet de construire
une famille B0 = {q 1 , . . . , q m } de vecteurs orthonormaux donns par
q1 =
ek+1 = xk+1
q
k
X
x1
,
kx1 k
(xk+1 , q i ) q i , q k+1 =
i=1
ek+1
q
, k = 1, . . . , m 1.
ke
q k+1 k
1. crire une fonction nomme gramschmidt, prenant comme paramtre d'entre une matrice
ayant pour colonnes les m vecteurs de la famille B et retournant en sortie une matrice
ayant pour colonnes les m vecteurs de la famille B0 , obtenue en appliquant B le procd
d'orthonormalisation de GramSchmidt. Penser inclure une procdure vriant que la
famille B fournie lors de l'appel de la fonction est bien libre.
2. On pose = 108 . Tester la fonction gramschmidt avec la famille
1
1
1
, , 0 ,
B=
0
0
puis vrier que les vecteurs obtenus sont bien orthogonaux deux deux. Que constate-t-on ?
3. Pour pallier les dfauts d'orthogonalit observs des vecteurs de la famille B0 (qui sont
ds l'accumulation des erreurs d'arrondi, les calculs tant faits en arithmtique virgule
ottante), il faut utiliser une version plus stable du procd. Celle-ci consiste oprer de la
manire suivante :
x
q1 =
kx1 k
(k)
(0)
q k+1
= xk+1 ,
(i)
q k+1
(i1)
q k+1
(i1)
q k+1 , q i
q i , i = 1, . . . , k, q k+1 =
q k+1
(k)
kq k+1 k
, k = 1, . . . , m1.
Mettre en uvre, en modiant la fonction dj existante, cette variante pour obtenir une nouvelle fonction qu'on nommera modgramschmidt (pour procd de GramSchmidt modi).
Eectuer ensuite l'orthonormalisation de la famille B donne dans la question prcdente.
Universit Paris-Dauphine
Dpartement MIDO
DE MI2E deuxime anne
Mthodes numriques
anne /
feuille de travaux pratiques
Sance 5 : rsolution numrique de systmes linaires
Le symbole indique un exercice optionnel. Le travail demand peut tre eectu indiremment
avec Matlab ou le logiciel libre GNU Octave (http://www.gnu.org/software/octave/).
Avant de commencer, tlcharger l'archive contenant les chiers ncessaires la sance de
travaux pratiques l'adresse
http://www.ceremade.dauphine.fr/~legendre/enseignement/tp/tp_systemes.tgz
puis extraire les chiers en question.
Exercice 1 (utilisation des mthodes de GaussSeidel et de Jacobi, d'aprs A. Quar). Soit n un entier naturel non nul et un rel appartenant l'intervalle [0, 1]. On considre
le systme linaire, d'ordre n, A x = b , dans lequel
teroni
A =
.
..
..
..
.
.
..
..
..
.
.
.
..
..
..
..
.
.
..
..
..
.
.
..
.
1
0
et b = A
.. .
.
2
1
La commande [A,b]=matrix(n,epsilon), faisant appel une fonction prsente dans l'archive
tlcharge, permet de construire les tableaux associs la matrice A et au vecteur b pour des
valeurs de l'entier n et du rel donnes. On pose dans un premier temps n = 5.
1. On sait que si la matrice A est diagonale strictement dominante par lignes, alors la
mthode de GaussSeidel, applique la rsolution du systme linaire A x = b , converge.
a. Vrier que A est diagonale strictement dominante par lignes lorsque l'on xe = 0, 3.
b. Aprs avoir complt et renomm le chier methiter.m contenu dans l'archive pour obtenir une fonction nomme gaussseidel mettant en uvre la mthode de GaussSeidel,
calculer une solution approche du systme, avec une tolrance pour le critre d'arrt
T
gale 1010 et le vecteur x(0) = 0 0 0 0 0 pour initialisation. Noter le nombre
d'itrations ncessaires pour obtenir cette solution.
c. De la mme manire, complter et renommer le chier methiter.m pour obtenir une
fonction nomme jacobi mettant en uvre la mthode de Jacobi.
2. a. Tracer le graphe des valeurs des rayons spectraux respectifs des matrices d'itration des
mthodes de Jacobi et de GaussSeidel associes A en fonction de celle du paramtre
, pour = 0, 0, 1, 0, 2,. . . , 1.
b. Que dire de la convergence des deux mthodes en fonction de la valeur de ?
c. Quelle mthode choisir pour rsoudre le systme dans le cas o = 0, 5 ? Utiliser la
mthode slectionne et comparer le nombre d'itrations ncessaires celui observ en
2.b.. Quelle explication donner la dirence constate ?
1
3. On pose prsent n = 100. Pour = 0, 3 et = 0, 35, tracer (en utilisant la commande
semilogy) et comparer les graphes de la norme du rsidu r (k) = b A x(k) en fonction
du nombre d'itrations 1 k 50 pour la mthode de Jacobi. Commenter en particulier la
pente des courbes. Dans le cas o = 0, 35, estimer partir du graphe le nombre d'itrations
ncessaires pour que la norme du rsidu soit plus petite que 1010 .
Exercice 2 (inuence des erreurs d'arrondi). Le but de cet exercice est de mettre en vidence
les problmes, lis aux erreurs d'arrondi dans les calculs, apparaissant dans certaines mthodes
numriques, notamment pour la rsolution de systmes linaires. On considre pour cela H , la
matrice de Hilbert d'ordre n (obtenue en entrant la commande H=hilb(n)).
1. Poser n = 10 et choisir un vecteur non nul x0 de Rn (par exemple en entrant la commande
x0=ones(10,1)). Calculer ensuite le vecteur b = Hx0 .
2. Rsoudre alors le systme Hx = b en inversant la matrice H . Que constate-t-on ? Comparer
prcisment la solution obtenue x avec x0 en calculant la quantit
kx x0 k2
kx0 k2
appele erreur relative sur la valeur de x.
3. L'erreur relative dpend-elle fortement du choix du vecteur x0 ?
4. crire une fonction nomme errrel prenant comme argument d'entre l'ordre n de la matrice
de Hilbert et renvoie la valeur correspondante de l'erreur relative. Tracer ensuite son graphe.
Exercice 3 (analyse de la perturbation des donnes). On cherche rsoudre le systme
linaire Ax = b, o
1 0, 1
1 1
A=
1 1, 5
1 2
1 3
0, 01
0, 01 0, 001 0, 0001
1
1
1
1
2.25 3, 375 5, 0625 et b =
2, 25 .
4
4
8
16
9
9
27
81
1. crire une fonction nomme gauss, prenant comme arguments d'entre la matrice A et
le vecteur b, base sur la mthode d'limination de Gauss (sans ou avec change) pour la
rsolution du systme Ax = b. Elle renverra en sortie le vecteur solution x.
2. Utiliser cette fonction pour calculer la solution y du systme perturb (A + A)y = b, o A
est une matrice dnie alatoirement au moyen de la fonction rand, et valuer la quantit
ky xk2 kAk2
.
kyk2 kAk2
3. Utiliser cette fonction pour calculer la solution z du systme perturb Az = b + b, o b
est un vecteur dni alatoirement, et valuer la quantit
kz xk2 kbk2
.
kzk2 kbk2
4. Soit D la matrice diagonale obtenue partir de la matrice A en entrant la commande
D=diag(diag(A)). On pose B = D1 A, c = D1 b, et on considre le systme linaire
Bx = c. Reprendre les questions 2. et 3. avec B = D1 A et c = D1 b. Qu'en conclure ?
Universit Paris-Dauphine
Dpartement MIDO
DE MI2E deuxime anne
Mthodes numriques
anne /
feuille de travaux pratiques
Sance 6 : calcul de valeurs et de vecteurs propres
Le symbole indique un exercice optionnel. Le travail demand peut tre eectu indiremment
avec Matlab ou le logiciel libre GNU Octave (http://www.gnu.org/software/octave/).
Exercice 1 (mthode de la puissance). La mthode de la puissance est une mthode itrative
trs simple fournissant des approximations de la 1 valeur propre de plus grand module d'une
matrice (on parle de valeur propre dominante) et d'un vecteur propre associ.
Soit A une matrice d'ordre n que l'on suppose diagonalisable. On note i , 1 i n ses valeurs
propres, comptes avec leurs multiplicits respectives et ordonnes de la manire suivante
|1 | |2 | |n | ,
et l'on dsigne par {v i }i=1,...,n une base de vecteurs propres associs. On suppose de plus que n
a une multiplicit algbrique gale un et qu'elle est la seule valeur propre de plus grand module.
Dans toute la suite, on note kk2 la norme euclidienne sur Cn .
La mthode de la puissance pour calculer n consiste en l'algorithme suivant.
Initialisation :
choisir q (0) Cn tel que kq (0) k2 = 1,
Itrations :
pour k N ,
z (k) = Aq (k1) ,
z (k)
,
kz (k) k2
(k)
= (q ) Aq (k) .
q (k) =
(k)
En supposant que le vecteur q (0) n'est pas contenu dans le sous-espace engendr par les vecteurs propres associs aux valeurs propres autres que la valeur propre dominante n , on montre
que la suite des vecteurs (q (k) )kN et la suite des quotients de Rayleigh ( (k) )kN convergent respectivement vers un vecteur colinaire v n et vers n lorsque k tend vers l'inni, la convergence
tant d'autant plus rapide que le quotient |n1 /n | est petit.
1. Proposer un critre d'arrt pour les itrations de l'algorithme de la mthode de la puissance
introduit plus haut.
2. crire une fonction [lambda,v,iter]=puissance(A,q0,tol,nmax) mettant en uvre l'algorithme de la mthode de la puissance ainsi obtenu, les paramtres d'entre tol et nmax
reprsentant respectivement la tolrance pour le critre d'arrt et le nombre maximum d'itrations eectuer, les paramtres en sortie lambda, v et iter contenant respectivement
l'approximation de la valeur propre dominante calcule, l'approximation d'un vecteur propre
associ et le nombre d'itrations qui ont t ncessaires pour satisfaire le critre d'arrt en
cas de convergence.
3. On considre la matrice
15
A= 1
2
2
10
1
2
3 .
0
1. On ne considrera pas ici de matrices possdant plusieurs valeurs propres dominantes et pour lesquelles un
traitement spcique est requis.
a. Utiliser la fonction puissance pour rechercher la valeur propre dominante de A, ainsi
T
qu'un vecteur propre associ, en prenant le vecteur q (0) = 1 1 1 / 3 comme initialisation et une tolrance gale 108 pour le critre d'arrt.
b. Valider le rsultat obtenu en utilisant la commande eig.
4. On souhaite prsent valuer l'inuence de la condition initiale sur la convergence de la
mthode sur un exemple. On considre pour cela la matrice relle symtrique
0, 5172 0, 5473
0, 5473
1, 388
B=
1, 224 1, 353
0, 8012 1, 112
1, 224 0, 8012
1, 353
1, 112
.
0, 03642 2, 893
2, 893 0, 05827
a. Pour chacune des trois initialisations qui suivent, tracer sur une mme gure les termes
T
T
de la suite kz (k) k2 en fonction de k : q (0) = 1 0 0 0 , 1 1 1 1 / 4 et
T
1 1 0 0 / 2.
b. Utiliser la commande eig pour obtenir les valeurs propres de B . Commenter alors les
trois courbes obtenues la question prcdente en tentant de donner des explications.
Exercice 2 (mthode de la puissance inverse). La mthode de la puissance inverse permet
d'obtenir une approximation de la valeur propre d'une matrice A la plus proche d'un nombre
C donn n'appartenant pas au spectre de A, en appliquant la mthode de la puissance la
matrice M 1 = (A I)1 . Bien que plus coteuse que la mthode de la puissance (elle ncessite
en eet de rsoudre un systme linaire chaque itration de l'algorithme 2 ), la mthode de la
puissance inverse a l'avantage de pouvoir converger vers n'importe quelle valeur propre de A et se
prte donc bien au ranement d'une approximation d'une valeur propre, obtenue, par exemple,
par une technique de localisation.
1. Sur le modle de la fonction puissance de l'exercice 1, crire une fonction [lambda,v,iter]=
puissanceinv(A,q0,mu,tol,nmax) mettant en uvre la mthode de la puissance inverse,
le paramtre d'entre mu tant l'approximation initiale de la valeur propre que l'on souhaite
approcher. On utilisera la commande lu pour calculer la factorisation LU de la matrice
M et, pour rsoudre les systmes triangulaires associs cette factorisation, les fonctions
forwardcol et backwardcol fournies dans l'archive disponible l'adresse suivante : http:
//www.ceremade.dauphine.fr/~legendre/enseignement/tp/tp_eigenvalues.tgz.
2. Utiliser la fonction puissanceinv pour calculer la valeur propre de plus petit module de la
T
matrice A de l'exercice prcdent, en prenant q (0) = 1 1 1 / 3 comme initialisation
et une tolrance gale 108 pour le critre d'arrt.
2. En pratique, on calcule une fois pour toute la factorisation LU de la matrice M , ce qui permet de ne plus
avoir ensuite qu' rsoudre deux systmes triangulaires chaque itration de la mthode.
Universit Paris-Dauphine
Dpartement MIDO
DE MI2E deuxime anne
Mthodes numriques
anne /
feuille de travaux pratiques
Sances 7 et 8 : rsolution d'quations non linaires
Le symbole indique un exercice optionnel. Le travail demand peut tre eectu indiremment
avec Matlab ou le logiciel libre GNU Octave (http://www.gnu.org/software/octave/).
Avant de commencer, tlcharger l'archive contenant les chiers ncessaires la sance de
travaux pratiques l'adresse
http://www.ceremade.dauphine.fr/~legendre/enseignement/tp/tp_nonlineaire.tgz
puis extraire les chiers en question.
Exercice 1 (mthodes de dichotomie et de NewtonRaphson, d'aprs A. Quarteroni ).
Dans cet exercice, on souhaite utiliser sur des exemples direntes mthodes d'approximation d'un
zro d'une fonction.
1. On considre tout d'abord la fonction f (x) = x2 sin(x) + 6 23 sur l'intervalle 2 , ,
en observant qu'elle y possde deux zros.
a. Crer une fonction dite anonyme pour f en entrant la commande : f=@(x) (x/2-sin(x)
+pi/6-sqrt(3)/2).
b. l'aide du graphe de la fonction f sur 2 , , expliquer pourquoi la mthode de dichotomie ne peut tre utilise que pour approcher l'un des deux zros de f , que l'on notera
dans la suite.
c. Complter les lignes manquantes du chier dichotomie.m an d'obtenir une fonction
[zero,iter,res,inc]=dichotomie(f,a,b,tol,nmax) mettant en uvre la mthode de
dichotomie pour l'approximation d'un zro d'une fonction f donne, compris dans un
intervalle [a, b] tel que f (a)f (b) < 0. Les autres paramtres d'entre tol et nmax de la
fonction dichotomie sont respectivement la tolrance pour le critre d'arrt de la mthode et le nombre maximum d'itrations eectuer, les paramtres de sortie zero, iter,
res et inc tant pour leur part l'approximation du zro obtenue, le nombre d'itrations
ncessaire au calcul de cette approximation, la valeur de la fonction f en ce point et un
vecteur contenant la suite des valeurs absolues des dirences entre deux approximations
successives (dite suite des incrments).
d. Utiliser la fonction dichotomie pour calculer une approximation de avec une tolrance
gale 1010 pour le critre d'arrt partir du choix d'un intervalle [a, b] convenable.
e. Au moyen de la commande semilogy, tracer le graphe de la suite des incrments |x(k+1)
x(k) | (en fonction de k ) avec une chelle semilogarithmique et dterminer la loi selon
laquelle ces quantits tendent vers 0 quand k tend vers l'inni.
f. Complter les lignes manquantes du chier newton.m an d'obtenir une fonction [zero,
iter,res,inc]=newton(f,df,x0,tol,nmax) qui met en uvre la mthode de Newton
Raphson pour l'approximation d'un zro d'une fonction drivable f donne. Les paramtres d'entre df, x0, tol et nmax reprsentent respectivement le nom de la fonction
anonyme correspondant la fonction f 0 , l'initialisation de la mthode, la tolrance pour
le critre d'arrt de la mthode et le nombre maximum d'itrations eectuer. En sortie,
les paramtres sont identiques ceux de la fonction dichotomie.
g. Calculer des approximations des deux zros et de la fonction f avec la mthode de
NewtonRaphson, en prenant une tolrance gale 1010 pour le critre d'arrt et comme
1
initialisation le point pour et 2 pour . Comparer les nombres d'itrations eectues
pour obtenir une approximation de chacun des zros. Pourquoi sont-ils trs dirents ?
Comparer galement les graphes des suites des incrments obtenus avec la commande
semilogy.
h. On cherche rduire le nombre d'itrations ncessaires l'obtention d'une approximation
du zro ngatif de la fonction f . La mthode de NewtonRaphson modie, base sur
la modication suivante de la relation de rcurrence de la mthode de NewtonRaphson
k N, x(k+1) = x(k) 2
f (x(k) )
,
f 0 (x(k) )
a une convergence quadratique si f 0 () = 0. Mettre en uvre cette mthode dans une
fonction modnewton et observer combien d'itrations sont ncessaires pour qu'elle fournisse
une approximation de avec une tolrance gale 1010 pour le critre d'arrt.
2
2. On considre prsent la fonction g(x) = x + e20 x cos(x), dont on veut approcher les
zros par la mthode de NewtonRaphson.
a. Crer une premire fonction anonyme pour g , en entrant la commande : g=@(x) (x+
exp(-20*x.^2).*cos(x)), puis une seconde pour sa drive g 0 .
b. Utiliser la fonction newton pour essayer d'approcher d'un zro de g en prenant x(0) = 0
pour initialisation et une tolrance gale 1010 pour le critre d'arrt.
c. Tracer le graphe de g sur l'intervalle [1, 1] et tenter de donner une explication qualitative
du fait la mthode de NewtonRaphson ne converge pas avec l'initialisation prcdente.
d. Appliquer cinq intrations de la mthode de dichotomie la fonction g sur l'intervalle
[1, 1] et utiliser le point obtenu comme initialisation de la mthode de NewtonRaphson
pour la recherche d'un zro de g .
3. Renommer et modier le chier dichotomie.m pour obtenir, sur le mme modle, une fonction regulafalsi mettant en uvre la mthode de la fausse position 1 . De la mme manire,
crire une fonction qui met en uvre la mthode de la scante 2 partir du chier newton.m.
Exercice 2 (calcul de 2). Dans cet exercice, on cherche calculer une approximation de 2
de diverses faons.
1. On peut tout d'abord obtenir une valeur approche de 2 en cherchant la racine positive du
polynme f (x) = x2 2. Pour cela, appliquer successivement f les mthodes de dichotomie,
de la fausse position, de NewtonRaphson et de la scante sur l'intervalle [1, 2] et dterminer
celles qui convergent.
2. On peut galement se servir de mthodes de point xe, dnies partir des applications
suivantes
2
x+2
g1 (x) = 2 + x x2 , g2 (x) = et g3 (x) =
,
x
x+1
considres sur l'intervalle [1, 2].
a. Parmi les trois fonctions ci-dessus, lesquelles conduisent une mthode de point xe
convergente ?
1. On rappelle que, pour cette mthode, l'approximation x(k) du zro l'itration k est donne par l'abscisse de
l'intersection de la droite passant par les points (a(k) , f (a(k) )) et (b(k) , f (b(k) )) avec l'axe des abscisses, c'est--dire
x(k) = a(k)
a(k) b(k)
f (a(k) ).
f (a(k) ) f (b(k) )
2. On rappelle que la mthode de la scante peut tre obtenue partir de la mthode de NewtonRaphson
en
f x(k) f x(k1)
remplaant la quantit f 0 x(k) apparaissant dans la relation de rcurrence par le quotient
.
x(k) x(k)1
L'initialisation de cette mthode ncessite donc deux points distincts, x(1) et x(0) , si possible proches du zro
recherch.
b. Vrier ces armations en calculant les 20 premiers termes des suites dnies par les
relations de rcurrence
x(0) =
1
et, k N, x(k+1) = gi (x(k) ), i {1, 2, 3}.
2
Exercice 3 (ordres de convergence). On considre les fonctions
f (x) = 3 cos(x) 2 ln(x + 1) 1, g(x) = 2x 1, h(x) = (2x 1)3 et k(x) = (2x 1)5 .
1. Calculer les drives de chacune de ces fonctions.
2. Comparer le nombre d'itrations ncessaires aux mthodes de dichotomie, de la fausse position, de NewtonRaphson et de la scante pour obtenir le zro, compris entre 0 et 1, de ces
fonctions, en prenant une tolrance gale 105 pour les critres d'arrt des mthodes.
3. Pour chacune des fonctions f , g et h et pour chacune des mthodes utilises
la question
dans
(k+1)
|
en
prcdente, reprsenter graphiquement les premiers termes de la suite ln|x
ln|x(k) |
kN
fonction de k, o est le zro de la fonction considre 3 et x(k) kN est la suite des approximations de produites par la mthode considre. Dterminer partir de ces graphes
les ordres de convergence respectifs des mthodes.
Exercice 4 (bassins de convergence de la mthode de NewtonRaphson). On s'intresse
la recherche des solutions complexes de l'quation z 3 = 1 par la mthode de NewtonRaphson.
On considre pour cela la fonction d'une variable complexe f (z) = z 3 1, qui s'annule en chaque
point z du plan complexe tel que z 3 = 1.
1. Crer deux fonctions anonyme f et df renvoyant respectivement les valeurs de f et de f 0 en
un point quelconque de C.
3
2. Pour tout entier n 2, on dnit une grille de pas h = n1
couvrant le carr [1, 5, 1, 5]
[1, 5i, 1, 5i]. crire un programme rsolvant, pour une valeur donne de n, l'quation f (z) =
0 avec une tolrance gale 104 par la mthode de NewtonRaphson 4 initialise successivement en chaque point de la grille zij = 1, 5(1 + i) + (i + ji)h, 0 i, j n. Pour chaque
couple (i, j), stocker dans le tableau deux dimensions nrac le numro k (k = 1, 2 ou 3) de
2k
la racine cubique complexe de l'unit ei 3 vers laquelle la mthode aura converge partir
de zij (en posant k = 4 lorsque la mthode n'a pas converg aprs nmax=100 itrations) et
dans le tableau niter le nombre d'itrations ncessaires pour atteindre la convergence (en
stockant le nombre maximal d'itrations autorises nmax en l'absence de convergence).
Pour automatiser le processus de reconnaissance de la racine approche par la valeur zero
retourne, on pourra utiliser les instructions suivantes (ci-dessous, racines dsigne un tableau contenant les trois racines cubiques complexes de l'unit et tol est la tolrance du
critre d'arrt de la mthode de NewtonRaphson) :
d=racines-[zero zero zero];
[m,k]=min(d);
if (abs(m)>tol)
k=4;
end
3. l'aide de la commande imagesc, acher une reprsentation de chacun des tableaux nrac
et niter obtenus pour n = 100.
4. Refaire des tracs pour des pas de grille plus petits (i.e., de plus grandes valeurs de n). Que
dire des frontires des trois bassins de convergence de la mthode ?
3. On pourra ventuellement obtenir une approximation de en utilisant la commande fsolve.
4. On pourra pour cela utiliser la fonction newton crite l'exercice 1.
Universit Paris-Dauphine
Dpartement MIDO
DE MI2E deuxime anne
Mthodes numriques
anne /
feuille de travaux pratiques
Sance 9 : interpolation polynomiale et formules de quadrature
Le symbole indique un exercice optionnel. Le travail demand peut tre eectu indiremment avec Matlab ou le logiciel libre GNU Octave (http://www.gnu.org/software/octave/).
Exercice 1 (interpolation de Lagrange l'aide des matrices de Vandermonde). Dans
Matlab net GNU octave, toute fonction polynomiale de degr n 0, p(x) 1= a0 + a1 x + a2 x2 +
+ an x , est reprsente par un tableau p=[an,...,a2,a1,a0] contenant les n + 1 coecients
du polynme qui lui est associ. La commande polyval(p,x) permet alors d'valuer n'importe
quelle fonction polynomiale p en un point (ou groupe de points) x donn. Enn, la commande
vander(x) renvoie la matrice de Vandermonde associe un ensemble de nuds contenu dans le
tableau x.
1. crire une fonction lagrange, ayant pour arguments une fonction continue f , les bornes d'un
intervalle [a, b] et un entier positif n, construisant le polynme d'interpolation de Lagrange
n f associ une distribution uniforme de n + 1 points dans l'intervalle [a, b] par rsolution
du systme linaire de Vandermonde correspondant.
2. Utiliser cette fonction pour construire les polynmes d'interpolation de Lagrange n sin de
la fonction sinus nuds quirpartis sur l'intervalle [0, 3], avec n = 1, . . . , 5. Comparer les
graphes des polynmes obtenus avec celui de la fonction donne sur ce mme intervalle.
3. valuer de manire approche l'erreur
En (sin) = max | sin(x) n sin(x)|
x[0,3]
et reprsenter sur un graphe les valeurs obtenues en fonction de n, pour n = 1, . . . , 12, en
utilisant la commande semilogy. Que se passe-t-il pour n > 12 ?
4. En observant que | sin(n) (x)| 1, n N et x R, comparer les valeurs de l'erreur obtenues
la question prcdente avec celles fournies par la majoration thorique
En (f )
1
4(n + 1)
ba
n
n+1
max |f (n+1) (x)|.
x[a,b]
Exercice 2 (phnomne de Runge et points de Chebyshev). On considre, sur l'intervalle
[5, 5], la fonction
f (x) =
1
.
1 + x2
1. Utiliser la fonction lagrange de l'exercice prcdent pour construire le polynme d'interpolation de Lagrange n f de degr n, avec n = 2, 4, 8 et 12, de f en des nuds quirpartis
sur [5, 5] et comparer graphiquement les polynmes obtenus avec la fonction donne.
2. valuer de manire approche l'erreur
En (f ) = max |f (x) n f (x)|
x[5,5]
et reprsenter sur un graphe les valeurs obtenues en fonction de n, pour n = 1, . . . , 20.
Qu'observe-t-on ?
1. On notera que le premier lment du vecteur correspond au coecient du terme de plus haut degr.
Interpoler une fonction en des nuds quidistribus sur un intervalle [a, b] n'est pas forcment le
meilleur choix, comme le montre l'absence de convergence de l'interpolation de Lagrange constate
la question prcdente. Pour une interpolation de degr n, on peut montrer que l'erreur sera
minimale si les nuds d'interpolation {xk }0kn sont ( une transformation ane prs) les racines
du polynme de Chebyshev Tn+1 , c'est--dire si
k {0, . . . , n}, xk =
a+b ba
+
cos
2
2
2k + 1
.
2(n + 1)
3. Modier la fonction lagrange pour que l'interpolation soit faite aux points de Chebyshev
dnis ci-dessus.
4. Reprendre alors les questions 1 et 2.
Exercice 3 (ordre de convergence de formules de quadrature composes). Soit f une
fonction relle continue sur l'intervalle [0, 1]. Le but de cet exercice est de mesurer l'ecacit de
formules de quadrature de NewtonCotes composes classiques pour l'approximation de l'intgrale
dnie
Z
b
I(f ) =
f (x) dx,
a
pour dirents choix de fonction, et l'inuence de la rgularit de la fonction sur la vitesse de
convergence de la mthode.
1. crire trois fonctions, ayant chacune pour paramtres d'entre la fonction f , les bornes a
et b, et un nombre m 1 de subdivisions de l'intervalle [a, b], calculant une approximation
Im,n (f ) de I(f ) respectivement par les formules de quadrature de la rgle du point milieu
(formule ouverte, n = 0), de la rgle du trapze (formule ferme, n = 1) et de la rgle de
Simpson (formule ferme, n = 2) composes.
2. Au moyen de la commande semilogy, tracer le graphe des courbes de l'erreur |I(f )Im,n (f )|
de chacune de ces trois formules en fonction du nombre de sous-intervalles pour f (x) = ex ,
a = 0 et b = 1. Commenter les rsultats.
3. Reprendre la question prcdente pour f (x) = 3 x4 1. Que constate-t-on ? Comment
procder pour retrouver les ordres de convergence thoriques des formules dans ce cas ?
Exercice 4 (mthode de Romberg). On considre l'utilisation de la rgle du trapze compose associe une subdivision dyadique de l'intervalle [a, b] pour le calcul de l'intgrale I(f ) de
l'exercice prcdent. En supposant la fonction f susamment rgulire et en posant H = ba
,
2k
k 0, on peut montrer partir de la formule d'EulerMaclaurin que
I2k ,1 (f ) = I(f ) + b2 H 2 + b4 H 4 + . . .
partir d'une estimation de l'intgrale pour une subdivision de taille H2 , on obtient, grce au procd d'extrapolation de Richardson, une meilleure approximation de I(f ), fournie par la quantit
1
1
(R(k + 1, 0) R(k, 0)) = (4 R(k + 1, 0) R(k, 0)) ,
3
3
o l'on a pos R(k, 0) = I2k ,1 (f ) et R(k + 1, 0) = I2k+1 ,1 (f ), et qui est d'ordre quatre en H . La
mthode de Romberg pour l'valuation approche de I(f ) consiste simplement en l'application
rpte de cette opration partir de la valeur k = 0.
crire une fonction romberg, ayant pour arguments d'entre une fonction f , les bornes a et b,
un nombre d'extrapolations maximal N et une tolrance , renvoyant la valeur de l'approximation
R(k, k) telle que |R(k, k) R(k 1, k 1)| , avec 0 k N , ou bien k = N . Pour cela, on
construira un tableau des valeurs extrapoles R(k, m), 0 m k N , dont les lments satisfont
R(k + 1, 1) = R(k + 1, 0) +
la relation de rcurrence
R(k, m) =
1
(4m R(k, m 1) R(k 1, m 1)) , 1 m k N,
4m 1
et dont la premire colonne est telle que R(k, 0) = I2k ,1 (f ), k = 0, . . . , N .
2