Académique Documents
Professionnel Documents
Culture Documents
discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/267826866
CITATIONS READS
0 79
4 authors, including:
All content following this page was uploaded by Cheikh Seck on 07 April 2014.
P. HELLUY
1.1.1. Stockage des matrices creuses. La mthode la plus conomique pour sto-
cker une matrice creuse consiste mettre ses valeurs dans un tableau de rels
atab(k)1kN o N est le nombre de valeurs non nulles de A. Les termes diagonaux
de A seront toujours supposs non nuls. Il faut alors deux tableaux indi(k)1kN et
indj(k)1kN pour reprer les numros de lignes et de colonnes suivant la formule :
atab(k) = a(indi(k), indj(k))
Exemple : dans la suite nous ferons les calculs pour la matrice
2 0 0 1
0 2 1 0
A= 0 1 2 1
1 0 1 2
ici, nous sommes conduits
atab = [2, 1, 2, 1, 1, 2, 1, 1, 1, 2]
indi = [1, 1, 2, 2, 3, 3, 3, 4, 4, 4]
indj = [1, 4, 2, 3, 2, 3, 4, 1, 3, 4]
N = 10
Bien quconomique en mmoire, ce stockage (dit stockage morse) est peu adapt
la rsolution directe des systmes linaires. Nous allons partir de cette reprsenta-
tion afin dobtenir un stockage plus utile. Pour simplifier lexpos, nous supposerons
(quitte stocker quelques zros supplmentaires) que les valeurs non nulles de A
sont rparties de manire symtrique (a(i, j) 6= 0 a(j, i) 6= 0). A nest pas nces-
sairement symtrique.
4 1 3
Ces tableaux permettent dailleurs de calculer le profil de A :
prof :=vector(n,0) :
for i to n do :for j to indvois[i] do
if listvois[i,j] < i then
prof[i] :=max(prof[i],i-listvois[i,j]) :fi :od :od :
Lalgorithme de Cuthill-MacKee consiste alors partir dun indice arbitraire
i0 = inum(1). Ensuite, dans le tableau inum on ajoute les voisins de i0 puis les
voisins des voisins, etc. On peut donc crire :
estcompte :=vector(n) :inum :=vector(n) :i0 :=1 :
for i to n do
estcompte[i] :=0 :od :
inum[1] :=i0 :
estcompte[i0] :=1 :
compte :=1 :pointeur :=1 :
while compte < n do
4 P. HELLUY
iactu :=inum[pointeur] :
for ii to nbvois[iactu] do
i :=listvois[iactu,ii] :
if estcompte[i]=0 then compte :=compte+1 :inum[compte] :=i :
estcompte[i] :=1 :fi :
od :
pointeur :=pointeur+1 :
od :
A la fin, le tableau inum contient la nouvelle numrotation.
Exemple :
inum = [1, 4, 3, 2]
Aprs avoir renumrot, il est souvent intressant de relancer plusieurs fois lalgo-
rithme en prenant i0 := inum(n). Il est aussi prfrable, dans la boucle sur ii de
numroter en priorit les indices ayant le moins de voisins. Si aprs lalgorithme, la
diminution du profil est importante, il est prfrable de remplacer la matrice A par
la matrice A0 dfinie par :
a0inum(i),inum(j) = ai,j
1.1.4. Stockage profil de A. A sera stocke dans trois tableaux : ainf contiendra la
partie infrieure de A. asup contiendra la partie suprieure et adiag la diagonale de
A. La diagonale est facile stocker
adiag(i) = a(i, i) 1in
On dcide de ranger dans asup les valeurs de la partie suprieure de A qui sont
dans le profil, colonne aprs colonne, zros compris. Le principe de stockage est le
mme pour ainf, en travaillant ligne par ligne. En notant N N le nombre de valeurs
stockes dans ainf ou asup, on a donc
n
X
NN = prof(i)
i=1
Pour le reprage, nous aurons besoin de savoir o commence chaque colonne dans
asup (ou chaque ligne dans ainf). Pour cela, nous construisons un tableau debut(i)1in
par lalgorithme
debut :=vector(n+1) :debut[1] :=1 :debut[2] :=1 :
for k from 3 to n+1 do
debut[k] :=debut[k-1]+prof[k-1] :od :
Il est alors possible de remplir asup et ainf par lalgorithme
asup :=vector(NN,0) :ainf :=vector(NN,0) :for k to N do
i :=indi[k] :j :=indj[k] :
if i < j then kk :=debut[j+1]-j+i :asup[kk] :=atab[k] :fi :
if i > j then kk :=debut[i+1]-i+j :ainf[kk] :=atab[k] :fi :
od :
ANALYSE NUMRIQUE 5
Exemple :
NN = 4
adiag = [2, 2, 2, 2]
ainf = [1, 1, 0, 1]
asup = [1, 1, 0, 1])
debut = [1, 1, 1, 2, 5]
Nous donnons enfin en exemple lalgorithme de calcul du produit de A par u
avec stockage dans v
for i to n do
v[i] :=adiag[i]*u[i] :
for k from i-prof[i] to i-1 do
v[i] :=v[i]+ainf[debut[i+1]-i+k]*u[k] :od :
for k from i+1 to n do
if i > =k-prof[k] then
v[i] :=v[i]+asup[debut[k+1]-k+i]*u[k] :
fi :
od :od :
et si i j alors
i
X
a(i, j) = l(i, k) u(k, j)
k=max(iprof(i),jprof(j))
il se trouve, dans cet algorithme, que L et U peuvent tre stocks dans les mmes
tableaux que A au cours de llimination, condition de prendre les calculs dans le
bon ordre ! Lalgorithme final scrit alors :
for i from 2 to n do
for j from i-prof[i] to i-1 do
for k from max(i-prof[i],j-prof[j]) to j-1 do
ainf[debut[i+1]-i+j] :=ainf[debut[i+1]-i+j]
-ainf[debut[i+1]-i+k]*asup[debut[j+1]-j+k] :
asup[debut[i+1]-i+j] :=asup[debut[i+1]-i+j]
-ainf[debut[j+1]-j+k]*asup[debut[i+1]-i+k] :
od :
ainf[debut[i+1]-i+j] :=ainf[debut[i+1]-i+j]/adiag[j] :
od :
for k from i-prof[i] to i-1 do
adiag[i] :=adiag[i]-ainf[debut[i+1]-i+k]*asup[debut[i+1]-i+k]
od :od :
Exemple : On trouve
adiag = [2, 2, 3/2, 5/6]
asup = [1, 1, 0, 1]
ainf = [1/2, 1/2, 0, 2/3]
on a donc
2 0 0 1
0 2 1 0
A =
0 1 2 1
1 0 1 2
2 0 0 1
0 2 1 0
U =
0 0 3/2 1
0 0 0 5/6
1 0 0 0
0 1 0 0
L =
0 1/2 1 0
1/2 0 2/3 1
ANALYSE NUMRIQUE 7
2. Intgration numrique
2.1. Prliminaires. On souhaite disposer dun moyen dvaluer numriquement
RB
I(f ) = A f (t)dt o f est une fonction continue sur un intervalle [A, B] avec A < B.
En effet, dans de nombreuses applications, cette intgrale ne se ramne pas des
fonctions simples, et mme si cest le cas, on cherche une mthode simple et utilisable
dans le cas gnral. Pour cela, nous chercherons une approximation de I(f ), note
J(f ) sous la forme
XN
J(f ) = i f (xi )
i=0
o les points xi sont dans lintervalle [a, b]. Les xi sont appels les points dint-
gration et les coefficients i les poids dintgration.
2.2. Intgration des polynmes. Pour commencer, supposons que f est un po-
lynme de degr N , et supposons que les points dintgration xi sont imposs
avec
A x0 < < xN B
Dans ce cas, il est possible de trouver un unique jeu de i tel que I(f ) soit exac-
tement J(f ). En effet, par linarit de I et J, il suffit que I(f ) = J(f ) quand
ANALYSE NUMRIQUE 9
Exemples :
A+B
N = 0, x0 = 2 , on trouve 0 = B A, soit
A+B
(1) J(f ) = (B A) f ( )
2
cest la mthode des rectangles. On constate que la mthode est encore exacte
pour des polynmes de degr 1.
N = 1, x0 = A, x1 = B, on trouve 0 = 1 = BA 2 , soit
f (A) + f (B)
(2) J(f ) = (B A)
2
cest la mthode de Simpson. Cette mthode est encore exacte pour des poly-
nmes de degr 3.
(b a)3 00
E(f ) = f (c)
24
Dmonstration : commenons par crire la formule de Taylor avec reste intgral
Z x
f (x) = f (A) + (x A)f 0 (A) + (x t)f 00 (t)dt
A
10 P. HELLUY
La formule des rectangles tant exacte pour des fonctions affines, on a (H est la
fonction de Heaviside)
Z x
E(f ) = E(x (x t)f 00 (t)dt)
A
Z B Z B Z B
A+B
= (B A) max(0, t)f 00 (t)dt + max(0, x t)f 00 (t)dt
A 2 x=A t=A
!
Z B Z B
A+B
= max(0, t) max(0, x t)dx f 00 (t)dt
t=A x=A 2
Z B
(B t)2
A+B A+B
= H( t)(B A)( t) f 00 (t)dt
t=A 2 2 2
2
(Bt)
or H( A+B A+B
2 t)(B A)( 2 t) 2 est une fonction ngative sur [A, B] donc
c [A, B] tel que
Z B
(B t)2
A+B A+B
E(f ) = f 00 (c) H( t)(B A)( t) dt
t=A 2 2 2
(B A)3 00
= f (c)
24
Nous admettons le thorme suivant (qui se dmontre avec les mmes techniques
que le prcdent)
Thorme 2. Soit une mthode dintgration J N points, exacte pour des po-
lynmes de degr P avec P N . Alors, si f est de classe C P +1 sur [A, B],
c [A, B] tel que
E(f ) = K (B A)P +2 f (P +1) (c)
o K = K(P ) est une constante indpendante de f et de A et B.
Nous dduisons de ce thorme la majoration
P +2
|E(f )| |K(P )| |(B A)| sup f (P +1) (c)
c[A,B]
Cette fois-ci lerreur tend bien vers 0 quand h 0 (cest dire quand M )
P fix.
2.5. Ordre dune mthode. Continuons tudier les mthodes composites dans
le cas dune subdivision rgulire. Pour linstant nous avons obtenu des majora-
tions de lerreur. Nous nous intressons ici au cas o lon dispose dun quivalent
de lerreur quand h 0.
Dfinition 2. On dit que la mthode est dordre L pour la fonction f ssi C 6= 0,
|H(f ) I(f )| ChL quand h 0
Il est vident que plus lordre de la mthode est lev, plus la convergence de
H(f ) vers I(f ) est rapide quand h 0. Nanmoins, la taille de la constante C
nest pas ngliger !
Exemples : R1
On considre f (x) = ex , et on calcule 0 f (t)dt par la mthode des rectangles
pour 10 M 20. On trace le logarithme de lerreur en fonction du loga-
rithme de M . Si M est assez grand, on sattend ce que la courbe soit presque
une droite. Sa pente sera loppos de lordre de la mthode (car M = ba h ).
Lalgorithme est le suivant
intrect :=proc(f,a,b,M)
h :=evalf((b-a)/M) :
h*sum(f((i+.5)*h),i=0..M-1) ;end ;
f :=x- > exp(x) ;
intrect(f,0,1,10) ;
graf := [seq([ln(1./j),
ln(abs(exp(1.)-1.-intrect(f,0,1,j)))],j=10..20)] ;
plot(graf) ;
La pente de la courbe obtenue est de 2. Lordre de la mthode des rectangles
est donc de 2 pour la fonction exponentielle. R
1
On considre f (x) = ex , et on calcule 0 f (t)dt par la mthode de Simpson
pour 10 M 20. Lalgorithme est le suivant
intsim :=proc(f,a,b,M)
h :=evalf((b-a)/M) :
h/6.*sum(f(i*h)+4.*f((i+.5)*h)+f((i+1.)*h),i=0..M-1) ;end ;
f :=x- > exp(x) ;
intsim(f,0,1,10) ;
graf := [seq([ln(1./j),
12 P. HELLUY
ln(abs(exp(1.)-1.-intrect(f,0,1,j)))],j=10..20)] ;
plot(graf) ;
Loppos de la pente de la courbe obtenue est de 4. Cest lordre de la mthode
de Simpson pour la fonction exponentielle. R
1
On considre f (x) = ln x, et on calcule 0 f (t)dt par la mthode des rectangles.
On trouve que lordre est 1 ! Ceci montre que la rgularit de la fonction est
indispensable dans le thorme (2).
dj exacte pour des polynmes de degr N soit exacte pour des polynmes
de degr le plus lev possible. A priori, on dispose de N + 1 degrs de libert
supplmentaires, on sattend donc ce que la mthode puisse tre exacte pour des
polynmes de degr 2N + 1.
Considrons alors sur lensemble des polynmes le produit scalaire
Z 1
hP, Qi = P (t)Q(t)dt
0
L0 (x) = 1
1
L1 (x) = 2 3 x
2
12
L2 (x) = 6 5 x x +
6
3 3 2 3 1
L3 (x) = 20 7 x x + x
2 5 20
4 3 9 2 2 1
L4 (x) = 210 x 2 x + x x +
7 7 70
..
.
nous admettrons que Lk admet k zros distincts dans ]0, 1[. Nous allons alors mon-
trer
Mais il existe une autre difficult que nous allons aborder sur un exemple
Exemple : soit f (x) = x sur [0, 1]. Soit la subdivision xi = Ni , i = 0 N . La
rsolution de
1 x0 xN
0 a0 f (x0 )
1 x1 xN 1 a1
f (x1 )
.. .. =
.. ..
. . . .
1 xN xN
N aN f (xN )
conduit bien sr (a0 , a1 , , aN ) = (0, 1, 0, , 0). Or si lon tente de rsoudre
ce systme avec N = 20, numriquement pour une prcision de 10 chiffres, grce
la mthode LU (avec ou sans pivotage), les rsultats obtenus nont rien voir
avec la solution exacte. Lerreur peut atteindre, suivant la machine avec laquelle on
travaille, plusieurs centaines de milliers ! Le systme de Vandermonde appartient
la catgorie (heureusement plutt rare) des systmes linaires mal conditionns.
On appelle ainsi un systme pour lequel une petite erreur sur les coefficients ou le
second membre entrane une erreur importante sur la solution du systme. Il est
possible de savoir si un systme Ax = b est bien ou mal conditionn en connaissant
sont conditionnement, dfini par
cond(A) = kAk
A1
3.3.2. Caractrisation.
Thorme 8. Il existe une unique spline dinterpolation dont lnergie est mini-
male. Cette spline vrifie :
la restriction de [xi , xi+1 ] est un polynme de degr 3 pour i = 0 N 1
(x0 ) = y0 , (xN ) = yN
(x+ i ) = (xi ) = yi pour i = 1 N 1
0 + 0
(xi ) = (xi ) pour i = 1 N 1
00 (x0 ) = 00 (xN ) = 0
00
00 (x+i ) = (xi ) pour i = 1 N 1
Rb
On a C + tV C pour tout rel t. Soit E() = a 00 (t)2 dt. Pour tout dans V ,
et tout rel t, on a
E() E( + t)
par consquent,
d
E( + t) =0
dt t=0
ce qui se traduit (aprs calculs) par
Z b
V, 00 (t)00 (t) = 0
a
16 P. HELLUY
On considre alors une fonction support dans ]xi , xi+1 [ (le support dune fonc-
tion est ladhrence du plus grand ouvert sur lequel la fonction nest pas nulle),
nous avons alors, aprs intgrations par parties sur [xi , xi+1 ]
Z b
(4) (t)(t) = 0
a
et ceci tant vrai pour toute fonction support dans ]xi , xi+1 [, on en dduit que
sur cet ouvert
(4) (x) = 0
Z b Z b N
X
00 (t)00 (t) 000 (t)0 (t) + 0 (xi ) 00 (x 00 +
= i ) (xi )
a a i=0
Z b N
X
(4) (t)(t) + 0 (xi ) 00 (x 00 +
= i ) (xi )
a i=0
N
X
000
(xi ) 000 (x+
+ i ) (xi )
i=0
N
X
0 (xi ) 00 (x 00 +
= i ) (xi ) = 0
i=0
(xi+1 x) (x xi ) (x 2 xi+1 + xi )
(x) = 1/6 Mi
xi+1 xi
(xi+1 x) (x xi ) (x 2 xi + xi+1 )
1/6 Mi+1
xi+1 xi
yi+1 yi yi xi+1 xi yi+1
+ x+
xi+1 xi xi+1 xi
de plus
yi+1 yi
0 (xi ) = 1/3 Mi (xi+1 xi ) 1/6 Mi+1 (xi+1 xi ) +
xi+1 xi
yi+1 yi
0 (xi+1 ) = 1/6 Mi (xi+1 xi ) + 1/3 Mi+1 (xi+1 xi ) +
xi+1 xi
1/6 Mi+1 (xi+1 xi ) + 1/6 Mi1 (xi xi1 ) + 1/3 Mi (xi+1 xi1 )
yi+1 yi yi yi1
=
xi+1 xi xi xi1
ANALYSE NUMRIQUE 17
ba
Pour simplifier, considrons une subdivision rgulire (xi+1 xi = h = N ), les
Mi sont alors solutions de
2/3 1/6 0 M1
y2 2y1 +y0
h2
1/6 2/3 1/6 .. ..
. .
.. ..
1/6 . . 0
=
.. ..
. . 1/6
yN 2yN 1 +yN 2
0 1/6 2/3 MN 1 h2
donc
(5) kxn+1 xn k K n kx1 x0 k
Calculons maintenant, pour p > n
p
X
xk xk1 = xp xn
k=n+1
Supposons maintenant > 0. Il est alors clair que y(t) 0 quand t . Il est
bien videmment souhaitable que ce soit aussi le cas pour yn quand n . Or
ceci nest vrai que si |1 t| < 1 soit
2
t <
Cette condition (dite de stabilit) doit donc tre vrifie par t pour que la solution
discrte yn ressemble la solution y. Elle est contraignante si est trs grand en
valeur absolue.
5.3. Mthode dEuler implicite.
Principe. Puisque
y(tn+1 ) y(tn )
= y 0 (tn+1 ) + (t) avec lim (t) = 0
t t0
= f (tn+1 , y(tn+1 )) + (t)
il est galement naturel de rsoudre
yn+1 yn
= f (tn+1 , yn+1 ) 1nN
t
y0 =
Le vecteur y peut se calculer par rcurrence de proche en proche, condition de
savoir rsoudre chaque tape une quation en yn+1 . On dit quon utilise une
mthode ou un schma de rsolution implicite.
Exemple. Soit lquation ( 6= 0)
y0 = y
y(0) = 1
t
dont la solution est y(t) = e . La mthode dEuler implicite donne yn = (1 +
t)n . En posant t = nt, et en faisant t 0, on obtient
t
(7) yn = (1 + t) t et = y(t)
Dans ce cas, la mthode dEuler permet aussi dapprocher y(t) quand t 0.
Supposons maintenant > 0. Il est alors clair que y(t) 0 quand t . Cest
aussi le cas pour yn quand n indpendamment de t. Le schma dEuler
implicite est dit inconditionnellement stable.
La mthode implicite est plus difficile mettre en oeuvre car elle implique la
rsolution dune quation chaque tape. Cependant, elle permet dobtenir, en
gnral, des rsultats plus prcis, avec un pas de temps moins grand.
5.4. Mthode explicite un pas. Nous allons dans la suite de ce cours nous
attacher aux mthodes explicites un pas. Ce sont des schmas qui scrivent
yn+1 = yn + t (tn , yn , t)
(8) y0 =
La mthode dEuler explicite entre dans ce cadre, avec (tn , yn , t) = f (tn , yn ).
5.4.1. Ordre dune mthode.
Dfinition 6. Soit y la solution de (6). La mthode (8) sera dite consistante
lordre l ssi
y(t + t) y(t)
(t, y(t), t) = O(tl )
sup
t[0,T ] t
nous admettrons quil suffit de vrifier que
y(t + t) y(t)
(t, y(t), t) = O(tl )
t [0, T ]
t
22 P. HELLUY
5.4.2. Stabilit. Nous allons dfinir une autre notion de stabilit, ne pas confondre
avec celle introduite en (7).
Dfinition 7. La mthode (8) est stable ssi il existe deux constantes A et B > 0
telles que si yn , zn , n sont solutions de
yn+1 = yn + t (tn , yn , t)
y0 =
zn+1 = zn + t ( (tn , zn , t) + n )
z0 =
alors, pour tout n N
|yn zn | A | | + B max |i |
0iN
5.4.3. Convergence.
Dfinition 8. Une mthode est convergente lordre l ssi
lim max |yi y(ti )| = O(tl )
N 0iN
avec
max |n | = O(tl )
n
et
yn+1 = yn + t(tn , yn , t)
la stabilit implique alors
|yn y(tn )| O(tl )
do la convergence.
5.4.4. Exemples.
Mthode dEuler amliore. Cette mthode scrit
h h
(t, y, h) = f (t + , y + f (t, y))
2 2
elle est stable et consistante lordre 2.
Mthode de Runge-Kutta dordre 4. Cette mthode scrit
1
(t, y, h) = (k1 + 2k2 + 2k3 + k4 )
6
avec
k1 = f (t, y)
h h
k2 = f (t + , y + k1 )
2 2
h h
k3 = f (t + , y + k2 )
2 2
k4 = f (t + h, y + hk3 )
Ax = b
6.2.1. Mthode de Jacobi pour les matrices diagonale dominante. Les algorithmes
que nous allons dcrire sapplique une famille de matrices que lon rencontre
souvent en pratique.
Dfinition 9. La matrice A = (aij )1iN 1jN est dite diagonale strictement
dominante ssi X
i |aii | > |aik |
k6=i
Il scrit aussi
x(n+1) = D1 b (L + U )x(n)
o lon a pos
A = L+D+U
L : triangulaire infrieure
D : diagonale de A
U : triangulaire suprieure
Lalgorithme de Jacobi est, on le voit, particulirement simple. Il ncessite le sto-
ckage des deux vecteurs x(n) et x(n+1)
6.2.2. Mthode de Gauss-Seidel. Lalgorithme de Gauss-Seidel scrit, un vecteur
x(0) tant donn
i1 N
!
(n+1) 1 X (n+1)
X (n)
xi = bi aik xk aik xk i = 1, 2, , N
aii
k=1 k=i+1
Il scrit aussi
x(n+1) = (D + L)1 b U x(n)
(on aurait aussi pu envisager
x(n+1) = (D + U )1 b Lx(n)
condition de faire varier lindice i de N 1).
Lalgorithme de Gauss-Seidel ne ncessite quun vecteur de stockage, x(n) tant
remplac par x(n+1) au cours de litration. Il est en gnral plus rapide que lalgo-
rithme de Jacobi, donc prfrable.
6.2.3. Convergence de la mthode de Jacobi.
Thorme 16. Si A est diagonale strictement dominante, alors lalgorithme de
Jacobi converge.
Dmonstration : soit x la solution du systme linaire, on a
(n+1) 1 X
(n)
xi xi = aik xk xk
aii
k6=i
donc
(n+1)
1 X
(n)
max xi xi |aik | max xk xk
i aii k
k6=i
(n)
K max xk xk avec 0 K < 1
k
ANALYSE NUMRIQUE 25
car A est diagonale strictement dominante. De plus maxi |yi | = kyk est une
norme sur RN . On a ainsi montr que
(n+1)
x
K
x(n) x
x
6.3.1. Mthode du gradient pas optimal. A est une matrice symtrique dfinie
positive N N . On considre x lunique solution du systme linaire Ax = b
1) Montrer que rsoudre Ax = b revient trouver le minimum de
1
J(x) = hAx, xi hb, xi
2
(h., .i dsigne le produit scalaire usuel sur RN )
2) On souhaite construire une suite de vecteurs x(k) convergente vers x. Les
notations suivantes auront cours dans la suite du problme :
r(k) = b Ax(k) : rsidu ltape k
(k) (k)
e =x x : erreur ltape k
E(x) = hA(x x), x xi
vrifier que
E(x) = hr, ei = r, A1 r
puis que
J(x) = r
3) Posons
x(k+1) = x(k) + (k) p(k)
p(k) est appel direction de descente et (k) coefficient de descente. Justifier cette
terminologie.
a) Montrer que le coefficient optimal de descente pour la direction p(k) est donn
par
(k) (k)
(k) r ,p
=
(k) (k)
Ap , p
(k) (k+1)
puis que r , p =0
b) Montrer que
E(x(k+1) ) = E(x(k) )(1 (k) )
o (k) est donn par
(k) (k) 2
(k) r ,p
=
(k) (k)
1 (k) (k)
Ap , p A r ,r
gal 1, on a
1
= max Qn (x) max |P (x)|
2n1 1x1 1x1
d) On rappelle que
n
Mn+1 Y
|f (x) P (x)| (x xi )
(n + 1)! i=0
o P dsigne le polynme dinterpolation de f relativement la subdivision (xi ).
Comment choisir les (xi ) pour que lerreur dinterpolation soit la plus petite pos-
sible ?
7.1.2. Travaux pratiques. Le but de ce TP est de mettre en vidence certains ph-
nomnes lis linterpolation des fonctions. Pour les calculs, on saidera du logiciel
Maple. Le compte-rendu (un par binme) est remettre la fin de la seconde sance
de 1h30. La qualit de la prsentation et la prcision de la rdaction (plus que la
longueur du compte-rendu) auront un poids important dans la notation.
Indication :
> restart ;N :=10 ;
> ? seq
> x :=[seq(-1.+2.*i/N,i=0..N)] ;
> f :=x- > sin(2*evalf(Pi)*x) ;
> y :=[seq(f(-1.+2.*i/N),i=0..N)] ;
> ? interp
> P :=interp(x,y,t) ;
> plot({P,f(t)},t=-1..1) ;
7.2. TD TP n 2.
Rx 2
3) On souhaite crire une table de valeurs de f (x) = 0 et /2 dt pour une sub-
division de pas h de lintervalle [0, 1]. Comment doit-on choisir h pour que linter-
polation de Lagrange 3 points donne une approximation de f 106 prs ?
4) Soit arccos la dtermination de la fonction inverse de cos dfinie par =
arccos x x [0, ] et x = cos
a) On pose Qn (x) = cos(n arccos x). Montrer que les fonctions
Qn sont orthogo-
nales sur lintervalle [1, 1] relativement au poids w(x) = 1 x2
b) Montrer que hQn , Qn i = 2 si n 1 et que hQ0 , Q0 i =
c) Montrer que Qn est un polynme de degr n vrifiant Qn+1 (x) = 2xQn (x)
Qn1 (x) (polynmes de Tchebychev)
5) Soit Qn le nime polynme de Tchebychev
a) Montrer que Qn a des zros simples aux n points
(2k 1)
xk = cos k = 1n
2n
b) Montrer que Qn atteint ses extrema sur lintervalle [1, 1] aux n + 1 points
yk = cos k
n k = 0 n pour lesquels il prend alternativement les valeurs 1 et -1.
1
c) On considre Qn = 2n1 Qn (le coefficient de plus haut degr de Qn est 1).
Montrer que pour tout polynme P de degr n, de coefficient de plus haut degr
gal 1, on a
1
= max Qn (x) max |P (x)|
2n1 1x1 1x1
d) On rappelle que
n
Mn+1 Y
|f (x) P (x)| (x xi )
(n + 1)!
i=0
o P dsigne le polynme dinterpolation de f relativement la subdivision (xi ).
Comment choisir les (xi ) pour que lerreur dinterpolation soit la plus petite pos-
sible ?
7.2.2. Travaux pratiques. Le but de ce TP est de mettre en vidence certains ph-
nomnes lis linterpolation des fonctions. Pour les calculs, on saidera du logiciel
Maple. Le compte-rendu (un par binme) est remettre la fin de la seconde sance
de 1h30. La qualit de la prsentation et la prcision de la rdaction (plus que la
longueur du compte-rendu) auront un poids important dans la notation.
> with(linalg) :
> ? linalg
> ? Digits
> Digits :=5 ;
> N :=20 ;
> A :=matrix(N+1,N+1,(i,j)- > x[i-1]^(j-1)) ;
> x :=array(0..N,[seq(-1.+2.*i/N,i=0..N)]) ;
> A :=map(eval,A) ;
> f :=x- > sin(2*Pi*x) ;
> y :=[seq(evalf(f(x[i-1])),i=1..N+1)] ;
> c :=evalm(inverse(A)&*y) ;
> P :=sum(c[i]*t^(i-1),i=1..N+1) ;
> ? plot
> plot({P,f(t)},t=-1..1,-2..2) ;
7.3. TD TP n 3.
7.3.1. Exercices.
ANALYSE NUMRIQUE 31
Rsolution itrative des quations non linaires. 1) Montrer que lquation f (x) =
x3 2 possde une solution unique et quon peut obtenir celle-ci en utilisant
la mthode de Newton partir de x0 = 1. Donner une minoration du nombre
ditrations effectuer pour obtenir une prcision = 1010
2) Soit la fonction f (x) = cos x xex avec 0 x 2
a) Montrer que cette fonction a une et une seule racine l dans [0, 2 ]
b) Expliciter la mthode de Newton. Donner une valeur de x0 assurant la conver-
gence vers l.
c) Soit la mthode suivante
x0 [a, b]
xn+1 = cos xn exn = g(xn )
Montrer que lon peut choisir un intervalle [a, b] [0, 2 ] telle que la mthode
converge vers l (montrer que |xn l| Ln |x0 l|. Que vaut L ?)
d) Montrer que lon peut prendre [a, b] = [0, 2 ]
e) Calculer un nombre ditrations suffisant pour obtenir une prcision de 106
si [a, b] = [0.45, 2 ]
Rsolution des sytmes linaires. 1) On considre le problme : trouver u C 2 [0, 1]
solution de
(9) u00 (x) + c2 (x)u(x) = f (x)
u(0) = u(1) = 0
c et f sont des fonctions continues sur [0, 1] . N N tant donn, on pose h = 1
N
et xi = ih pour 0 i N . Montrer que
u(xi+1 ) + u(xi1 ) 2u(xi )
u00 (xi ) = + o(h)
h2
7) On pose i = E(x/h) x fix (E(x) = partie entire de x). Soit (ui )0iN
trouv la question 6 et u(x) la solution de la question 4. Montrer que ui u(x)
quand h tend vers 0.
7.3.2. TP : rsolution itrative des quations non linaires. Le but de ce TP est de
dterminer diverses mthodes pour rsoudre :
f (x) = 0 avec f (x) = tan(x) 1 + x sur lintervalle [0, 1]
Le compte-rendu ne doit pas dpasser une copie double, courbes comprises.
1) Vrifier dabord graphiquement que f (x) = 0 admet une unique racine x sur
]0, 1[. Donnez un encadrement de x 101 prs.
Indications :
f :=tan(x)-1+x ;plot(f,x=0..1) ;
2) Mthode du point fixe
On pose :
f (x) + x
g (x) =
et on considre la mthode :
x0 [0, 1]
xn+1 = g (xn )
Tracer g (x) sur [0, 1] pour = 3. Montrer que xn x
Indications :
g :=(f+alpha*x)/alpha ;
alpha :=-3 ;
plot(g,x=0..1) ;
?diff ;
3) Dans cette question, x0 = 0
On dsire tudier lordre de convergence de la mthode, cest dire dterminer
tel que :
|xn+1 x|
avec 0 < < +
|xn x|
Quelle mthode proposez-vous ? Quelles sont les difficults de mise en oeuvre, com-
ment sen affranchir grce Maple ? Comparer les valeurs thoriques de et avec
les valeurs numriques.
Indications :
xn :=0 ;N :=20 ;Digits :=100 ;
graf :=[] ;
xb :=fsolve(f=0,x=0..1) ;
for i to N do
xnp1 :=evalf(subs(x=xn,g)) ;
graf :=[op(graf),[ln(abs(xn-xb)),ln(abs(xnp1-xb))]] :
xn :=xnp1 :od :
plot(graf) ;
(graf[N][2]-graf[N-1][2])/(graf[N][1]-graf[N-1][1]) ;
4) Mthode de Newton
Raliser la mme tude pour la mthode de Newton :
x0 = 0
f (xn )
xn+1 = xn
f 0 (xn )
ANALYSE NUMRIQUE 33
5) Mthode de la scante
Mme tude pour la mthode de la scante :
x0 = 0, x1 = 1
xn xn1
xn+1 = xn f (xn )
f (xn ) f (xn1 )
1+ 5
Vrifier que = 2
7.4. TD TP n 4.
on rappelle que les vecteurs propres e(k) et les valeurs propres (k) sont donns
par
ik
e(k)i = sin( ) 1iN 1 1k N 1
N
k
(k) = 4 sin2 ( )
2N
1) En vous aidant des instructions suivantes, vrifiez lintrt de la mthode LU
pour les matrices tridiagonales. Pour cela, comparer, en fonction de N , le temps de
calcul de rsolution dun systme linaire plein ou tridiagonal.
restart :with(linalg) :N :=40 ;
A :=evalm(1e-6*randmatrix(N-1,N-1)) :
for i to N-1 do A[i,i] :=2. :od :
for i to N-2 do A[i,i+1] :=-1. :A[i+1,i] :=-1. :od :
# utiliser la ligne suivante la place des 3 prcdentes :
#A :=band([-1.,2.,-1.],N-1) ;
s :=randvector(N-1) ;
# calcul du temps. Ne pas oublier de faire restart entre chaque calcul ! ! !
tt :=time() :linsolve(A,s) :time()-tt ;
2) Programmer dans Maple les mthodes de Jacobi et de Gauss-Seidel. Comparer
sur quelques exemples leurs vitesses de convergence (compter le nombre ditrations
ncessaires pour atteindre une prcision donne).
3) Vrifier que lalgorithme suivant permet de calculer la valeur propre de plus
grand module de B. Justifier votre rponse. Comment calculer la valeur propre de
plus petit module ?
> restart :with(linalg) :N :=20 ;
> A :=band([-1.,2.,-1.],N-1) ;
> x :=evalf(randvector(N-1)) ;
> iter :=30 ;
> for i to iter do
> y :=evalm(A&*x) :x :=evalm(1./norm(y,2)*y) :od :
> seq(y[i]/x[i],i=1..N-1) ;
> k :=N-1 :lambda :=evalf(4.*sin(k*Pi/2/N)^2) ;
> s :=vector(N-1,[seq(evalf(sin(i*k*Pi/N)),i=1..N-1)]) ;
> s :=evalm(1./norm(s,2)*s) ;
> op(x) ;
4) Expliquer quoi servent les lignes suivantes.
> k :=N/2-2 ;
> lambda :=evalf(4.*sin(k*Pi/2/N)^2)+1e-5 ;
> x :=evalf(randvector(N-1)) ;iter :=30 ;Id :=array(1..N-1,1..N-1,identity) ;
> for i to iter do
> y :=linsolve(evalm(A-lambda*Id),x) :x :=evalm(1./norm(y,2)*y) :od :
> seq(y[i]/x[i],i=1..N-1) ;
> s :=vector(N-1,[seq(evalf(sin(i*k*Pi/N)),i=1..N-1)]) ;
> s :=evalm(1./norm(s,2)*s) ;
> op(x) ;
> y :=evalm(A&*x) :
> seq(y[i]/x[i],i=1..N-1) ;
ANALYSE NUMRIQUE 35
5) Dcrire la mise en oeuvre de lalgorithme (11) pour trouver les racines dun
polynme de degr 2. Pouvez-vous gnraliser des polynmes de degr > 2 ?
Quels sont les avantages de cette mthode compare dautres mthodes ? Que se
passe-t-il si Q a des racines multiples ou complexes ?
Exercice 4. 1) Soit y une fonction de classe C sur R. On souhaite approcher y 0
par une formule de la forme
(12) y 0 (t) ' y(t) + y(t h) + y(t 2h)
Grce un dveloppement de Taylor au voisinage de h = 0, dterminer (, , ) de
faon que la mthode soit la plus prcise possible.
2) En utilisant la formule (12), proposer une mthode pour rsoudre lquation
diffrentielle
y 0 (t) = f (y(t)) t 0
y(0) = y0
par une formule de la forme
H(yn+1, yn , yn1 , h) = 0
3) Comment mettre en oeuvre une telle mthode ? Comment calculer y1 ?
8.2. Corrig.
Exercice 1. 1) La formule tant exacte pour x 1 et x x, on trouve = 1 et
= 1/2
2) La formule tant aussi exacte pour x x2 , on trouve = 1/3
Rb R1
3) On a a f (t)dt = (b a) 0 f ((b a)t0 + a)dt0 , do
Z b
(b a)2 0 2 1
f (t)dt ' (b a)f (a) + f ( a + b)
a 2 3 3
RB PN 1 R A+(i+1)h PN 1 2
4) A f (t)dt ' i=0 A+ih f (t)dt = i=0 hf (A + ih) + h2 f 0 (A + (i + 13 )h)
Exercice 2. 1) P est donn par P = f (0)G0 + f 0 (0)G1 + f (1)D0 + f 0 (1)D1
2) g(t0 ) = f ((b a)t0 + a) est dfinie sur [0, 1]. On pose Q(t0 ) = f (a)G0 (t0 ) + (b
a)f 0 (a)G1 (t0 ) + f (b)D0 (t0 ) + (b a)f 0 (b)D1 (t0 ) et donc
ta
P (t) = Q( )
ba
ta ta ta ta
= f (a)G0 ( ) + (b a)f 0 (a)G1 ( ) + f (b)D0 ( ) + (b a)f 0 (b)D1 ( )
ba ba ba ba
3) Sur lintervalle [xi1 , xi ], F est donne par la formule de la question 2) avec
a = xi1 et b = xi
ANALYSE NUMRIQUE 37
1
4) Montrer que |x| s |b| o |u| dsigne la norme euclidienne usuelle du vecteur
u dans R3
Sn
5) Montrer que |xn x| s |b|