Méthodes numériques
i
Table des matières
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4.2 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.4 Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
ii
TABLE DES MATIÈRES iii
2.3.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.3 Méthode QR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Discrétisation 18
3.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4.1 Motivations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3.5 Convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Chapitre 1
1.1 Introduction
1.1.1 Problème de structure en statique
Le problème considéré est un pont en construction métalique (treillis plan). On travaille
pour une barre quelconque kl :
(ul − uk ) · ekl
σkl = E · kl = E ·
lkl
Nkl = σkl · Skl
Avec :
– Nkl = la tension dans la barre
– Skl = la surface de la barre
1
1.2 Méthodes directes 2
Soit en fait :
nk
X (ul − uk ) · ekl
[E · Skl · ] · ekl + Fk = 0
lkl
l=1
Det(b, A2 , ..., An )
x1 =
Det(A)
...
Det(A1 , ...An−1 , b)
xn =
Det(A)
Nombre de calculs effectués :
– Det(A) → n! opérations
– résolution du système de Cramer → (n + 1) · n! = (n + 1)! opérations
(2) (1)
aij = aij , j ∈ {1, ..., n}
(1)
(2) (1) (1) ai1 2
aij = aij − a1j · (1) , (i, j) ∈ {2, ..., n}
a11
1.3 Décomposition LU ou Cholesky 3
(2) (1)
b1 = b1
(1)
(2) (1) (1) ai1
bi = bi − b1 ·
(1)
a11
Nombre de calculs effectués :(n − 1)[3 + 2 · (n − 1)] = (2n + 1)(n − 1)
Et ainsi de suite :
(k+1) (k)
aij = aij , i ≤ k, j ∈ {1, ..., n}
(k)
a(k+1) = a(k) − a(k) · aik , i ≥ k + 1, j ≥ k + 1
ij ij kj (k)
akk
(k)
(k) aik
(k+1) (k)
bi
= bi − bk · (k) , i ≥ k + 1
akk
e · x = eb
On obtient alors le système triangulaire : A
C’est à dire :
0 0 0
a11 x1 + ... + a1n xn = b1
...
a0 x = b0
nn n n
D’où finallement :
b0n
xn =
a0nn
n
X
b0i − a0ij xj
j=i+1
xi =
a0ii
Cela donne n2 opérations, donc peu de chose devant 32 n3 lorsque n est grand.
A=L·U
Avec :
1.3 Décomposition LU ou Cholesky 4
l11 0 ... 0 0
l
12 ? 0 ... 0
– L = ... ... ? 0 0
... ... ... ? 0
l1n ... ... ... lnn
u11 ... ... ... u1n
0 ? ... ... u2n
– U= 0 0 ? ...
0 ... ... ? ...
0 0 ... 0 unn
On obtient alors les équivalences suivantes :
(
Ly = b
A x = b ⇐⇒ L U x = b ⇐⇒
Ux=y
A = L · LT
1. une matrice symétrique (on s’arrange pour que se soit le cas lors de la mise en équation)
2. une matrice définie positive
On a alors les relations suivantes :
v
u
u i−1
X
l = ta − 2
lik
ii ii
k=1
i−1
X 1
l = a − ( lik ljk ) ·
ji ji
lii
k=1
Le calcul des termes de L se fait colonne par colonne, de haut en bas. Le nombre d’opérations
3 2
est de n3 + n2 + n6 soit environ la moitié du nombre d’operations à effectuer par la méthode
de Gauss.
1.4 Méthodes itératives 5
1. ∀A ∈ Mn (R), kAk ≥ 0
2. ∀A ∈ Mn (R), kAk = 0 ⇒ A = 0
Exemple :
3x = 5
Arbitrairement, on utilise l’équation : 2x = −x + 5 ⇒ x(n+1) = − 12 x(n) + 5
2
Par cette méthode on trouve :
– x(0) = 0
– x(1) = 52
– x(2) = 54
– etc...
– x(4) = 25
16 cette méthode converge bien...
1.4.2 Motivations
1. économie de mémoire : on ne remplit pas une matrice initialement creuse comme dans
une méthode directe.
2. vitesse de calcul importante : x(n+1) = (..) · x(n) + β. Soit une itération représente environ
2n2 opérations. Si n = 106 , il suffit que le nombre d’itérations effectuées soit ≤ 105 pour
gagner du temps, car avec la méthode directe, il faut 23 n3 calculs.
1.4 Méthodes itératives 6
M ·x=N ·x+b
x(n+1) = M −1 · N · x(n) + M −1 · b
..
. −U
A= D → M = D et N = L + U
..
−L .
M =D−L
N =U
(D − L) · x(n+1) = U · x(n) + b
i−1 n
(n+1) 1 X (n+1)
X (n)
xi = (bi − aij · xj − aij · xj )
aii
j=1 j=i+1
1.4.4 Convergence
(
x(n+1) = B · x(n) + β
lim xn = x∗
n→∞
On a x∗
qui désigne la solution du problème. On obtient le critère de convergence suivant :
lim x − x∗ = 0.
(n)
n→∞
Ceci implique que :
x∗ = B · x∗ + β
x(n) − x∗ = B n · (x(0) − x∗ )
D’où, pour assurer la convergence :
lim B n = 0
n→∞
Remarque : D’après ce théorème, on peut détérminer une condition nécessaire et une condi-
tion suffisante à la convergence :
– kBk < 1 ⇒ ρ(B) ≤ kBk
B · xk = λxk avec xk vecteur propre de B. C’est une condition suffisante de convergence
du schéma.
– ρ(B) < 1 ⇒ |det(B)| < 1
C’est une condition nécessaire de convergence.
or,
|λk | · ||xk || = ||B · xk || ≤ ||B|| · ||xk ||
(|det(B)| < 1 est une condition nécessaire de convergence du schéma x(n+1) = Bx(n) +β)
3. Si ρ(B1 ) < ρ(B2 ) alors le schéma x(n+1) = Bx(n) + β converge plus vite que le schéma
x(n+1) = Bx(n) + β
De plus, on peut montrer que ρ(BGS ) = ρ(BJacobi )2 (GS=Gauss-Seidel).
On a Mω = ω1 D − L et Nω = 1−ω
ω D + U d’où Bω = Mω −1 Nω
Si le schéma converge alors
n
Y 1−ω
| aii |
|det(Nω )| ω
−1 i=1
|det(Bω )| = |det(Mω Nω )| = = n
|det(Mω )| Y 1
| aii |
ω
i=1
Qn
| 1−ω n
ω | | aii |
Soit |det(Bω )| = 1 n Qni=1 = (1 − ω)n
| ω | | i=1 aii |
1.4 Méthodes itératives 9
2.1 Motivations
Les valeurs propres sont liées par exemple aux modes vibratoires d’une structure comme
les problèmes de résonnance des ponts.
En mode vibratoire, on peut écrire : uk (t) = uk (ω)eiωt et en particulier : uk (t) = ukω eiωt
(Il en va de même pour ul (t))
On obtient alors :
nk
X (ulω − ukω ) · ekl
− [E · Skl · ] · ekl · eiωt = −ω 2 mk ukω eiωt
lkl
l=1
10
2.2 Méthode des puissances 11
[−ω 2 M + K] · uω = 0
soit
(M −1 K − ω 2 Id ) · uω = 0
ce qui peut se mettre sous la forme connue :
(A − λId ) · xk = 0
A(1) = P A(2) P −1
Les matrices A(1) et A(2) sont semblables, elles ont donc memes valeurs propres.
Prenons xk = α1 x1 + α2 x2 + α3 x3 + ... + αn xn
ce qui donne
A · xk = α1 λ1 x1 + α2 λ2 x2 + α3 λ3 x3 + ... + αn λn xn
2.2 Méthode des puissances 12
d’où,
A2 · xk = α1 λ21 x1 + α2 λ22 x2 + α3 λ23 x3 + ... + αn λ2n xn
de même,
Ak · xk = α1 λk1 x1 + α2 λk2 x2 + α3 λk3 x3 + ... + αn λkn xn
enfin,
λk2 λk3 λkn
Ak · xk = λk1 (α1 x1 + α2 x2 + α3 x3 + ... + αn xn )
λk1 λk1 λk1
λi (k)
Si |λ1 | > |λ2 | > |λ3 | > ... > |λk | alors lim ( ) = 0 pour i 6= 1
k→−∞ λ1
on a alors, lim A · xk = α1 λ1 x1
k→−∞
Et si ∃ε, ||λk − λk−1 || < ε alors λk est la plus grande valeur propre.
(xk )T · A · xk
On a λk =
(xk )T · xk
La méthode de puissance inverse se traduit en fait par :
1 1 1 1
lim λk = Sup( ; ; ....; ) =
k→+∞ λ1 λ 2 λn λn
λ1 0 0 0 0 λ1 X X X X
0 λ 0 0 0 0 λ X X X
2 2
En ésperant que lim A(k) =0 0 · 0 0 ou 0 0 · X X
k→+∞
0 0 0 · 0 0 0 0 · X
0 0 0 0 λn 0 0 0 0 λn
QQT = QT Q = Id
(Q1 Q2 )T Q1 Q2 = Id
On obtient alors
(k) (k+1) (k+1) (k)
a11 · · a1p · · a1q · · a1n
· · · · · · · · · ·
· · · · · · · · · ·
(k+1) (k+1)
· · · app · · apq · · ·
· · · · · · · · · ·
A(k+1) =
· · · · · · · · · ·
(k+1) (k+1)
· · · aqp · · aqq · · ·
· · · · · · · · · ·
· · · · · · · · · ·
· · · · · · · · · ·
(k+1) (k)
– aij = aij si (i, j) 6= (p, q)
(k+1) (k) (k)
– apj = apj · c − aqj · s
(k+1) (k) (k)
– aqj = apj · s + aqj · c
Méthode Jacobi :
(k−1) (k−1)
aqq − app (k)
cotan(2θk ) = (k−1)
⇒ apq =0
2apq
Si lim B (k) = 0 ou lim ||B (k) || = 0, alors c’est terminé et c’est gagné !
k→+∞ k→+∞
sX s
(k) (k−1) 2 (k)
X X
||B (k) ||2 = (aij )2 = (aij ) +2 (aij )2
i6=j i6=j6={p,q} i={p,q}6=j
s
(k−1) 2 (k) (k)
X X
(k)
||B ||2 = (aij ) +2 [(apj )2 + (aqj )2 + 2(apq
(k) 2
) ]
i6=j6={p,q} i6=j
(k)
or, apq = 0, d’où,
s X
(k−1) 2 (k−1) (k−1) (k−1) (k−1)
X
||B (k) ||2 = (aij ) +2 [(apj · c − aqj · s)2 + (apj · s + aqj · c)2 ]
i6=j6={p,q} j6={p,q}
or c2 + s2 = 1, d’où,
s
(k−1) 2 (k−1) 2 (k−1) 2
X X
(k)
||B ||2 = (aij ) +2 [(apj ) + (aqj ) ]
i6=j6={p,q} i6=j
sX
(k) (k−1) 2 (k−1)
||B ||2 = (aij ) − 2(apq )
i6=j
Et finallement, on obtient :
Remarque : En fait, prendre le terme |apq | le plus grand possible permet d’itérer plus vite.
2.3 Méthodes par transformations orthogonales 16
2.3.3 Méthode QR
2.3.3.1 Principe
Quelque soit la matrice A réelle inversible, il existe une unique décomposition A = QR.
Avec
– Q orthogonale.
– R triangulaire supérieure.
Ce procédé conserve les valeurs propres, car on multiplie par des matrices orthogonales.
λ1 X X X X
0 λ X X X
2
lim = 0 0 · X X
k→+∞
0 0 0 · X
0 0 0 0 λn
2.3.3.2 Factorisation QR
On utilise une matrice de rotation Householder H = Id −2uuT (où u est un vecteur unitaire)
– H est symétrique.
– H est orthogonale.
HT H = H2
H T H = Id 2 − 4uuT + 4uuT uuT
H T H = Id 2 = Id
d’où,
X X X X
0 X X X
A(2) = H 1 A(1) =
0 0 X X
0 0 0 X
2.4 Remarque sur les schémas itératifs 17
Discrétisation
3.1 Préambule
18
3.1 Préambule 19
En limitant les domaines d’intégration, on peut se permettre de faire des interpolations poly-
nomiales à faible degré. On utilise des fonctions de forme locales.
3.2 Interpolation de Lagrange 20
ln (x)
avec u
fn (x) = ui si x = xi
Remarque : La famille de polynômes {lk }k∈{0,...,n} forme une base de Rn [X]. Ceci implique
que le polynôme d’interpolation obtenu est unique.
Démonstration : La famille {lk }k∈{0,...,n} comporte n+1 vecteurs, qui sont tous linéairement
indépendants. De plus, la dimension de Rn [X] est également n + 1. Donc la famille est bien
une base de Rn [X]. La décomposition d’un polynôme dans une base est unique, ce qui revient
à dire que le polynôme d’interpolation formé est unique.
n
Y
(x − xi )
^ i=0 dn+1 u(ξ)
e(x) = u(x) − u n (x) = · , ξ ∈ [a, b]
(n + 1)! dxn+1
lim e(x) 6= 0
n→∞
1
Contre exemple : Runge : f (x) = 1+x2
ln (x)
rectement la déformation d’une poutre, il faut imposer u(x) et u0 (x) continues. Un polynôme
de degré 2n + 1 satisfait à cette condition :
(
u
fn (xi ) = ui
f0 (xi ) = u0
u n i
n
X
u
fn (x) = (u0i · ki (x) + ui · hi (x))
i=0
(
ki (x) = li (x)2 · (x − xi )
ki0 (x) = 2li (x) · li0 (x) · (x − xi ) + li (x)2
(
hi (x) = li (x)2 · [1 − 2(x − xi ) · li0 (x)]
h0i (x) = 2[1 − 2(x − xi ) · li0 (x)] · li (x) · li0 (x) − 2li (x)2 · [li0 (x) + (x − xi )li00 (x)]
Cette méthode permet d’imposer également les dérivées aux noeuds, en plus de la valeur de la
fonction.
3.4 Approximation diffuse 22
Z b n
X
I(f ) = f (x) dx → S(f ) = ωi · f (xi )
a i=0
Les xi sont les points d’intégration. On peut par exemple utiliser la méthode de calcul
suivante :
ωi = (xi+1 − xi )
Xn
S(f ) = (xi+1 − xi ) · f (xi )
i=0
1. Z b Z b
I(f ) = f (x) dx = (f˜n (x) + e(x)) dx
a a
2. Z b Xn Z b
I(f ) = ( li (x)f (xi )) dx + e(x) dx
a i= 0 a
3.
n Z b
X Z b
I(f ) = [ li (x) dx] · f (xi ) + e(x) dx
i=0 a a
4. Z b Z b
I(f ) = S(f ) + e(x) dx avec ωi = li (x) dx
a a
n
Y
(x − xi )
i=0
On a vu au paragraphe 3.2.2 que : e(x) = f (n+1) (ξ)
(n + 1)!
On peut donc exprimer :
n
Y
(x − xi )
Z b Z b
i=0
e(x) dx = f (n+1) (ξ) dx = R(f )
a a (n + 1)!
– R(f ) = 0 si f (x) est une fonction polynômiale de degré n ou moins.
n
Rb Y
2. si f (x) ∈ R2n+1 [X] et a xq · (x − xi ) dx = 0 :
i=0
n
Y
∃(Qn ; Rn ) ∈ (Rn [X])2 , f (x) = (x − xi ) · Qn (x) + Rn (x)
i=0
=0
z }| {
Z b Z bYn Z b
f (x) dx = (x − xi ) ·Qn (x) + Rn (x) dx = Rn (x) dx
a a i=0 a
Z b n
X
f (x) dx = ωk · Rn (xk )
a k=0
n
Y
f (xk ) = (xk − xi ) · Qn (xk ) + Rn (xk ) = Rn (xk )
i=0
Résolution d’équations
différentielles ordinaires
4.1 Introduction
nk
X (ul − uk ) · ekl
− [E · Skl · ] · ekl + F k = mk · ük
lkl
l=1
26
4.3 Méthodes de résolution 27
f1 (t, y1 , ..., yn )
– f= .. est continue sur [0, T ],
.
fn (t, y1 , ..., yn )
– f satisfait à la condition lipschitzienne :
dy
= f (t, y)
dt
y(t ) = y
0 0
T
On utilise un pas de temps constant h = n, n désignant le nombre de divisions.
solutionnumerique
y(t) −→ (y(t0 ), ..., y(tn ))
4.3 Méthodes de résolution 28
dy yn+1 − yn
(tn ) =
dt h
yn+1 = yn + h · f (yn , tn )
On applique la méthode d’Euler explicite. La résolution n’implique la résolution d’aucune
équation. C’est un schéma purement itératif, très rapide, mais qui peut être instable.
dy yn+1 − yn
(tn+1 ) =
dt h
yn+1 = yn + h · f (yn+1 , tn+1 )
On applique la méthode d’Euler implicite. Dans ce cas, il faut généralement résoudre une
équation non-linéaire à chaque pas. Cela ralentit la résolution, mais c’est un schéma qui est
généralement stable.
– la différence rétrogradée :
dy g 0 |t=t = −3h y(t0 ) + 2h y(t1 ) − h y(t2 ) = 1 (−3y0 + 4y1 − y2 )
|t1 = y(t) 0
dt 2h2 h2 2h2 2h
– la différence centrée :
dy g 0 |t=t = y2 − y0
|t1 = y(t) 0
dt 2h
– la différence avancée :
dy g 0 |t=t = 1 (y0 − 4y1 + 3y2 )
|t1 = y(t) 0
dt 2h
dy
Posons pour la suite, dt = f (t, y). On obtient alors :
yn+2 − yn
– = f (tn , yn ) ⇒ yn+2 = yn + 2hf (tn , yn )
2h
yn+2 − yn
– = f (tn+1 , yn+1 ) ⇒ yn+2 = yn + 2hf (tn+1 , yn+1 )
2h
4.3 Méthodes de résolution 29
yn+2 − yn
– = f (tn+2 , yn+2 ) ⇒ yn+2 = yn + 2hf (tn+2 , yn+2 )
2h
Remarque : Les deux premières expressions sont dites ”explicites”.
(
yn+1 = yn + hΦ(yn , tn , yn+1 , tn+1 , h)
y0 = y(t0 )
Le schéma est de consistance avec le problème
(
dy
dt = f (t, y)
y0 = y(t0 )
n
X
si : lim |y(tn+1 ) − y(tn ) − hΦ(y(tn ), tn , y(tn+1 ), tn+1 , h)| = 0
h→0
i=0
Une condition suffisante de consistance : lim Φ(y, t, h) = f (t, y)
h→0
S’il existe une constante S telle que |y(tn+1 ) − y(tn ) − hΦ(y(tn ), t(tn ), h)| ≤ Shp+1 , alors
le schéma est d’ordre p.
h2 00
|y(tn+1 ) − y(tn ) − hf (y(tn ), tn )| = |[y(tn ) + hy 0 (tn ) + y (ζ)] − y(tn ) − hf (y(tn ), tn )|
2
h2 00 y 00 (ζ) 2
|y(tn+1 ) − y(tn ) − hf (y(tn ), tn )| = | y (ζ)| ≤ | |h ≤ Sh(1+1)
2 2
Le schéma est donc d’ordre 1.
De laquelle on tire :
h2 00 hp (p)
Φ(y, t, h) = h · y 0 (t) + · y (t) + ... + · y (t)
2 p!
On peut donc construire le schéma suivant :
yn+1 = yn + h · Φ(yn , tn , h)
4.3 Méthodes de résolution 30
h
y(tn+1 ) = y(tn ) + (f (y(tn ), tn ) + f (y(tn+1 ), tn+1 ))
2
Ce schéma est d’ordre 2, de type Euler composé (moyenne de Euler explicite et implicite).
Il est donc implicite.
On peut écrire un schéma qui fonctionne très bien en prenant comme valeur (1, 1) pour le
couple (b2 , c2 ). Ceci nous donne le schéma suivant, appelé schéma de Heun :
1
ΦHeun = [f (y, t) + f (y + h · f (y, t), t + h)]
2
– xn−1 = n1 (1 − xn ) + n Dans ce cas l’erreur cumulée est divisée à chaque pas, ce qui rend
le schéma stable.
Définition 4.3.1 Soit les deux schéma suivants, respectivement d’origine et perturbé :
(
xn+1 = f (xn ), x0 = a
x∗n+1 = f (x∗n ) + n , x00 = a0
Théorème 4.3.2 Si Φ(y, t, h) est lipschitzienne par rapport à y, alors le schéma est stable :
4.3.5 Convergence
Définition 4.3.2 Un schéma est convergent si :
Théorème 4.3.3 Un schéma est convergent s’il est à la fois stable et consistant.