Académique Documents
Professionnel Documents
Culture Documents
1 Introduction 4
1.1 Définitions, exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Un exemple simple mais fondamental . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Méthode naturelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Formalisation statistique . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.3 Méthodes d’assimilation de données . . . . . . . . . . . . . . . . . . 6
1.3 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Modèle et vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Observations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.3 Statistiques d’erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.4 Fonction coût . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Historique de l’assimilation de données . . . . . . . . . . . . . . . . . . . . 9
1.4.1 Interpolation des observations . . . . . . . . . . . . . . . . . . . . . 9
1.4.2 Analyse de Cressman . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.3 Nudging (ou relaxation newtonienne) . . . . . . . . . . . . . . . . . 9
1.4.4 Méthodes variationnelles . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Rappels d’optimisation 10
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Produit scalaire, norme, espace de Hilbert . . . . . . . . . . . . . . 11
2.2.2 Définitions utiles en optimisation . . . . . . . . . . . . . . . . . . . 12
2.2.3 Dérivée directionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.4 Dérivée au sens de Fréchet . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Minimisation sans contrainte : résultat théoriques . . . . . . . . . . . . . . 15
2.3.1 Existence d’un minimum (dimensions finie et infinie) . . . . . . . . 15
2.3.2 Théorème d’existence en dimension finie . . . . . . . . . . . . . . . 16
2.3.3 Théorème d’existence en dimension infinie . . . . . . . . . . . . . . 16
2.3.4 Conditions d’optimalité . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Minimisation d’une fonctionnelle quadratique en dimension finie . . . . . . 17
2.4.1 Inverse de Moore-Penrose . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.2 Lien avec l’assimilation de données variationnelle . . . . . . . . . . 18
2.4.3 Lien avec la vision statistique : BLUE . . . . . . . . . . . . . . . . 19
2.4.4 En pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Optimisation sous contrainte . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.1 Minimisation avec contraintes d’égalité . . . . . . . . . . . . . . . . 20
2.5.2 Exemple 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.3 Exemple 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6 Algorithmes d’optimisation : méthodes de descente . . . . . . . . . . . . . 22
2.6.1 Principe général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6.2 Méthodes à pas optimal, à pas constant . . . . . . . . . . . . . . . . 23
2.6.3 Méthodes de relaxation . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.4 Méthodes de gradient . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.5 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6.6 Méthodes de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6.7 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3 Méthode adjointe 27
3.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Un exemple simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Ecriture générale dans le cas du contrôle de la condition initiale . . . . . . 29
3.3.1 Dérivée directionnelle de J . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.2 Modèle linéaire tangent . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.3 Modèle adjoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.4 Calcul du gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4 Exemple : l’équation de Bürgers . . . . . . . . . . . . . . . . . . . . . . . . 32
3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6 Compléments 50
6.1 Analyse de sensibilté . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.1.1 Assimilation de données . . . . . . . . . . . . . . . . . . . . . . . . 51
6.1.2 Lien avec l’analyse de sensibilité . . . . . . . . . . . . . . . . . . . . 52
6.2 Méthodes réduites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.1 Idée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.2 Choix de l’espace réduit . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.3 Modélisation des covariances d’erreur . . . . . . . . . . . . . . . . . . . . . 54
6.3.1 Remarques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.3.2 Opérateur de diffusion . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.3.3 EOF et bases réduites . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.4 Méthodes d’ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.5 Autres méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Introduction
Sommaire
1.1 Définitions, exemples . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Un exemple simple mais fondamental . . . . . . . . . . . . . . 5
1.2.1 Méthode naturelle . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 Formalisation statistique . . . . . . . . . . . . . . . . . . . . . . 5
1.2.3 Méthodes d’assimilation de données . . . . . . . . . . . . . . . 6
1.3 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Modèle et vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.2 Observations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.3 Statistiques d’erreurs . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.4 Fonction coût . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Historique de l’assimilation de données . . . . . . . . . . . . . 9
1.4.1 Interpolation des observations . . . . . . . . . . . . . . . . . . . 9
1.4.2 Analyse de Cressman . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.3 Nudging (ou relaxation newtonienne) . . . . . . . . . . . . . . 9
1.4.4 Méthodes variationnelles . . . . . . . . . . . . . . . . . . . . . . 9
– bâtiment
– glaciologie
– agronomie
– etc.
Quelques caractéristiques :
– les systèmes considéres sont complexes ;
– les observations sont parfois indirectes, partielles (en espace et/ou en temps), en-
tachées d’erreurs ;
– le problème est souvent mal posé (par exemple : pas assez d’observations ou obser-
vations contradictoires)
Problèmes :
– Le résultat est sensible au changement d’unité : si on se donne y1 = 1 une mesure
de x et y2 = 4 une mesure de 2x, on est ramener à minimiser (x − 1)2 + (2x − 4)2 ,
et on trouve cette fois x̂ = 9/5.
→ Il faut sans doute normaliser, mais comment ?
– Le résultat n’est pas sensible à la précision de la mesure, on trouve le même résultat
si y1 est plus précise que y2 .
L’estimation x̂ cherchée doit minimiser cette variance. Cette fonction de α1 est minimum
lorsque sa dérivée par rapport à α1 s’annule, ce qui donne :
σ22
α1 =
σ12 + σ22
Puis :
1 1
y
σ12 1
+ y
σ22 y1 + σ12 y2
σ22 2
x̂ = 1 1 =
+
σ12 σ22
σ12 + σ22
−1
1 1
Var(x̂) = +
σ12 σ22
On obtient ce résultat lorsque l’on minimise la fonction :
1 (x − y1 )2 (x − y2 )2
J(x) = +
2 σ12 σ22
Remarques :
– Cette vision statistique permet de rationaliser le choix de la norme de la fonction-
nelle.
– Ça résout le problème de la sensibilité aux unités et d’insensibilité à la précision des
observations.
– La concavité de J donne une mesure de la précision de l’estimation :
1 1 1
J 00 (x) = 2
+ 2 =
σ1 σ2 Var(x̂)
σb 2
x̂ = xb + (y − xb )
σ 2 + σb 2
1.3 Vocabulaire
1.3.1 Modèle et vecteurs
Les notations usuelles (internationales) en assimilation de données sont les suivantes.
– x vecteur d’état
– xt vecteur de l’état vrai
– xb vecteur de l’ébauche (information a priori, issue d’un modèle, d’une prévision,
d’une climatologie, etc.)
– xa vecteur de l’état analysé (que l’on cherche)
Les exposants désignent donc la nature du vecteur, tandis que les indices désignent le
temps ou l’espace.
1.3.2 Observations
Le vecteur contenant les observations est noté y o . Il est souvent de taille inférieure
à celle du vecteur d’état : l’espace des observations et l’espace d’état sont en général
différents, et donc de dimensions différentes. Le passage de l’espace d’état (où vit le
vecteur x) à l’espace des observations (où vit y) se fait grâce à un opérateur d’observation
H :
Hx = y
ε = x − xt
Les statistiqus des erreurs qui nous intéressent (et sont relativement accessibles) sont leurs
moyennes ε̄ (en général supposées nulles), et leurs moments d’ordre 2, c’est a dire leurs
covariances :
Cov(ε) = E (ε − ε̄)(ε − ε̄)T
Alors
1 1 1
2
kHx − yk2 = 2
kHz x− zk2 + 2
kx − xb k 2
J = Jo + Jb
Rappels d’optimisation
Sommaire
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Produit scalaire, norme, espace de Hilbert . . . . . . . . . . . . 11
2.2.2 Définitions utiles en optimisation . . . . . . . . . . . . . . . . . 12
2.2.3 Dérivée directionnelle . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.4 Dérivée au sens de Fréchet . . . . . . . . . . . . . . . . . . . . 14
2.3 Minimisation sans contrainte : résultat théoriques . . . . . . . 15
2.3.1 Existence d’un minimum (dimensions finie et infinie) . . . . . . 15
2.3.2 Théorème d’existence en dimension finie . . . . . . . . . . . . . 16
2.3.3 Théorème d’existence en dimension infinie . . . . . . . . . . . . 16
2.3.4 Conditions d’optimalité . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Minimisation d’une fonctionnelle quadratique en dimension
finie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.1 Inverse de Moore-Penrose . . . . . . . . . . . . . . . . . . . . . 17
2.4.2 Lien avec l’assimilation de données variationnelle . . . . . . . . 18
2.4.3 Lien avec la vision statistique : BLUE . . . . . . . . . . . . . . 19
2.4.4 En pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Optimisation sous contrainte . . . . . . . . . . . . . . . . . . . 20
2.5.1 Minimisation avec contraintes d’égalité . . . . . . . . . . . . . . 20
2.5.2 Exemple 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.3 Exemple 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6 Algorithmes d’optimisation : méthodes de descente . . . . . . 22
2.6.1 Principe général . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6.2 Méthodes à pas optimal, à pas constant . . . . . . . . . . . . . 23
2.6.3 Méthodes de relaxation . . . . . . . . . . . . . . . . . . . . . . 23
2.6.4 Méthodes de gradient . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.5 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.6.6 Méthodes de Newton . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6.6.1 Idée de base . . . . . . . . . . . . . . . . . . . . . . . 25
2.6.6.2 Application à l’optimisation . . . . . . . . . . . . . . 26
2.6.7 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1 Introduction
Soit V un espace vectoriel, et U une partie non vide de V . Soit J : V → R. On cherche
à résoudre el problème :
Vocabulaire :
– J est appelé “critère”, “fonctionnelle”, “fonction coût”, etc.
– U est l’espace des solutions admissibles, ou “èspace de contrôle”
– Si U = V le problème est sans contrainte, si U 6= V , le problème est avec contraintes.
2.2 Définitions
2.2.1 Produit scalaire, norme, espace de Hilbert
Définition 2.2 Soit E un espace vectoriel. Une application b : E ×E → R est un produit
scalaire si c’est une forme bilinéaire définie positive.
Exercice 2.1 Montrer que les formes bilinéaires définies à l’exemple 2.3 sont bien des
produits scalaires.
Définition 2.4 La norme induite par un produit scalaire (., .) est donnée par :
kuk2 = (u, u)
Exercice 2.2 Montrer que les applications définies à l’exemple 2.5 sont bien des normes.
Remarque 2.6 Toute norme n’est pas forcément induite par un produit scalaire.
Définition 2.7 Un espace de Hilbert est un espace vectoriel muni d’un produit scalaire,
qui est complet pour la norme induite.
f (x̄) ≤ f (x), ∀x ∈ E
où
uK+αk − uK
û = lim
α→0 α
Remarque : en pratique, le calcul d’une dérivée directionnelle peut être fait par taux
d’accroissement. On calcule ainsi
f (x + αd) − f (x)
T (α) =
α
pour différentes valeurs de α de plus en plus petites. En général, on a convergence quand
α devient suffisamment petit, jusqu’à ce qu’il devienne trop petit et qu’on observe une
divergence numérique due à la précision machine.
On reviendra là-dessus pour le “test du gradient”, qui permet de tester le modèle adjoint.
x6
f (x, y) = si (x, y) 6= (0, 0), et f (0, 0) = 0
(y − x2 )2 + x8
la dérivée directionnelle Z
ˆ
J(K)[k] =2 (u − uobs )û
Ω
obs
ne s’écrit pas sous la forme (∇J , k) : le gradient n’est pas trivial ! On utilisera la méthode
adjointe pour l’obtenir.
Exercice 2.3 Soit A une matrice de taille (n, m), y un vecteur de Rn et d un vecteur
de Rm . On note k.k la norme euclidienne de Rn . On définit la fonction f de Rm dans
R de la façon suivante : pour tout x dans Rm , f (x) = kAx − yk2 . Calculer la dérivée
directionnelle de f dans la direction d. Puis en déduire le gradient de f en x.
Exercice 2.4 Soit X et Y deux espaces de Hilbert, k.kX et k.kY leurs normes respectives
et h., .iX , h., .iY les produits scalaires associés. Soit x ∈ X, y ∈ Y et d ∈ X. Soit g
une application de X dans Y différentiable. Soit f la fonction de X dans R définie par
f (x) = kg(x) − yk2X . Calculer la dérivée directionnelle de f en x dans la direction d, puis
le gradient de f en x.
La différence majeure entre ces deux exemples est le fait qu’on minimise en dimension
finie dans le premier exemple, et en dimension infinie dans le deuxième.
lim f (x) = +∞
kxk→+∞
Théorème 2.19 Supposons que E est un convexe de Rn et que f est strictement convexe
sur E, et telle que
lim f (x) = +∞
kxk→+∞
lim f (x) = +∞
kxk→+∞
C’est donc une condition nécessaire d’optimalité. Cette équation est aussi appelée équation
d’Euler.
Théorème 2.22 Soit f : E → R, où E est une partie convexe d’un espace de Hilbert. Si
x̂ est un point intérieur de E, et s’il existe un ouvert Ω tel que x̂ ∈ Ω ⊂ E, si de plus f
est convexe sur E et dérivable en x̂, alors :
M M + M = M, M +M M + = M +, (M M + )T = M M + , (M + M )T = M + M (2.1)
Cette matrice a été introduite par Moore (1920) et par Penrose (1955) de façon
indépendante, et on la désigne aussi sous le nom d’inverse de Moore-Penrose. On montre
à partir des relations (2.1) que l’inverse généralisé est unique et égale à M −1 si M est
inversible.
M + = (M T M )−1 M T
Démonstration. On vérifie les relations (2.1) avec M + = (M T M )−1 M T (qui est bien
définie car M T M est inversible pour M de rang n) :
M M + M = M (M T M )−1 M T M = M I = M
J(x) = kM x − bk2
pour x ∈ Rn , où M est une matrice de taille (m, n), de rang n et b ∈ Rn . La solution du
problème 2.1 est
x̂ = M + b
Démonstration. On a
kM x − bk2 = (M x − b)T (M x − b)
= x T M T M x − bT M x − x T M T b + bT b
= xT M T M x − 2bT M x + bT b
On a utilisé en particulier le fait que bT M x est un scalaire, il est donc égal à son transposé.
On calcule maintenant la dérivée directionnelle :
J(x + αδx) − J(x) = (x + αδx)T M T M (x + αδx) − 2bT M (x + αδx) + bT b
−xT M T M x + 2bT M x − bT b
= α(δxT M T M x + xT M T M δx − 2bT M δx) + α2 . . .
= α(2xT M T M δx − 2bT M δx) + α2 . . .
pour x ∈ Rn , où M est une matrice de taille (m, n), de rang n et b ∈ Rn , et N est une
matrice symétrique définie positive. Le minimum de J est atteint pour
x̂ = (M T N M )−1 M T N b
J1 (x) = (M x − b)T N (M x − b)
= (M x − b)T N 1/2 N 1/2 (M x − b)
= (N 1/2 M x − b)T (N 1/2 (M x − b))
On est donc ramené au cas précédent, en remplaçant M par N 1/2 M et b par N 1/2 b. On
obtient donc
x̂ = ((N 1/2 M )T N 1/2 M )−1 (N 1/2 M )T N 1/2 b
= (M T N M )−1 M T N b
2
M T N Y = B −1 xb + H t R−1 y
D’où
x̂ = (B −1 + H T R−1 H)−1 (B −1 xb + H t R−1 y)
= (B −1 + H T R−1 H)−1 ((B −1 + H T R−1 H)xb − H T R−1 Hxb + H t R−1 y)
= xb + (B −1 + H T R−1 H)−1 H T R−1 (y − Hxb )
La matrice (B −1 + H T R−1 H)−1 H T R−1 est appelée matrice de gain, le vecteur y − Hxb
est appelé innovation.
Remarque : on voit aussi qu’un tel choix donne naturellement une normalisation de
J o et J b , et qu’il résout donc le problème de sensibilité au changement d’unité.
2.4.4 En pratique
Etant données les grandes tailles m et n, il est souvent impossible de former explicite-
ment les matrices B, H, R... Donc le calcul de la matrice de gain est imposible. Le calcul
de x̂ se fait alors par un algorithme d’optimisation, ou bien directement après réduction
d’ordre (cf cours sur la réduction d’ordre).
où les fonctions hi : Rn → R sont au moins de classe C 1 . On cherche alors x̂ ∈ K tel que
Théorème 2.28 Si x̂ ∈ K est un minimum local de f sur K, si les vecteurs ∇h1 (x̂),
∇h2 (x̂), . . ., ∇hp (x̂) sont linéairement indépendants, alors il existe λ̂ = (λ̂1 , λ̂2 , . . . , λ̂p ) ∈
Rp tel que
p
X
∇f (x̂) + λ̂i ∇hi (x̂) = 0
i=1
On introduit le lagrangien L :
p
X
L(x, λ) = f (x) + λi hi (x)
i=1
2.5.2 Exemple 1
Supposons inconnues x et y, avec une observation x + y = 2, et cherchons la solution
de norme minimale. Le problème peut se voir comme celui de minimiser
Ecrivons le lagrangien :
L(x, y, λ) = x2 + y 2 + λ(x + y − 2)
2.5.3 Exemple 2
Remarque 2.29 Pour traiter cet exemple, il est recommandé d’attendre d’avoir traité le
chapitre “méthode adjointe” et plus précisément l’exemple de l’adjoint de l’équation de
Bürgers.
1 T L
Z Z Z L
2
L(u0 , µ) = (u − uobs ) dx dt + µ u0 (x) dx
2 0 0 0
∇u0 L = 0, ∇µ L = 0
où
– dk ∈ Rn est la direction de descente à l’itération k,
– αk ∈ R est le pas de descente à l’itération k.
Les méthodes de descente diffèrent dans le choix des αk et des dk .
Difficultés : ça peut être coùteux, et cela n’est pas forcément intéressant, dans la
mesure ou ce minimum n’est pas celui de J mais juste une valeur intermédaire.
αk = α, ∀k
xk+1 = xk + αk ek
Difficultés : la méthode a l’avantage d’être simple, mais elle peut être lente à converger.
Donc, si ∇J(xk ) 6= 0, la partie principale de l’accroissement de J est (∇J(xk ), h), qui sera
la plus négative possible lorsque h = −α∇J(xk ), ce qui revient à poser
dk = −∇J(xk )
Dans le cas particulier où J(x) = 12 (Ax, x) − (b, x), avec A symétrique définie positive,
on peut utiliser l’algorithme du gradient conjugué :
k∇J(xk )k2
dk = ∇J(xk ) + dk−1
k∇J(xk−1 )k2
(∇J(xk ), dk )
αk = − (et ∇J(xk ) = Axk − b)
(Adk , dk )
Remarques :
– c’est une méthode à pas optimal ;
– elle converge en au plus n itérations ;
– son coùt est en O(n3 ) : ce n’est pas intéressant pour une matrice pleine, car chercher
le minimum de J revient à résoudre Ax = b et dans ce cas la méthode de Choleski
est plus intéressante. Cependant si la matrice est creurs, cet algorithme ne nécessite
pas le stockage de A, seulement les produits matrice-vecteurs Adk et Axk .
2.6.5 Exemples
1 7
J(x, y) = x2 − xy + 2y 2 = (x − y)2 + y 2
2 4
Le minimum de J est atteint pour (x, y) = (0, 0). Posons x1 = (1, 1) et comparons les
méthodes de relaxation et de gradient.
Relaxation :
x2 = x1 + αe1 = (1 + α, 1)
donc
1 7
J(x2 ) = (1 + α)2 − (1 + α) + 2 = (α + )2 +
2 4
1 1
ceci est minimum pour α = − 2 , et on obtient x2 = ( 2 , 1).
1
x3 = x2 + αe2 = ( , 1 + α)
2
1 1 7 7
J(x3 ) = − (1 + α) + 2(1 + α)2 = 2(α + )2 +
4 2 8 32
ce qui donne α = − 78 et x3 = ( 12 , 81 ). En poursuivant ainsi, on obtient x4 = ( 16
7 1
, 8 ), et les
valeurs successivement prises par J(xi ) au cours de la descente sont
Gradient :
2x − y
∇J(x, y) =
−x + 4y
Pour x1 = (1, 1), on obtient ∇J(x1 ) = (1, 3)T . On cherche ensuite
x2 = x1 + α∇J(x1 ) = (1 + α, 1 + 3α)
11 + 21α 1 − 7α
x3 = x2 + α∇J(x2 ) = ( , )
16 16
Puis
J(x3 ) = ( 11+21α
16
)2 − 11+21α
16
. 1−7α
16
+ 2( 1−7α
16
)2
1
= 256 (686α2 + 489α + 112)
686 489 2 68207
= 256 ((α + 1372 ) + 4∗686 2)
489
= 0 ⇒ α = − 1372
Et on a ainsi
J(x1 = 2, J(x2 ) ' 1.75, J(x3 ) ' 0.097
On constate que la méthode de gradient converge nettement plus vite que la relaxation...
En dimension n :
f1 (x1 , x2 , . . . , xn ) = 0
... = 0 (⇔ f (x) = 0)
fn (x1 , x2 , . . . , xn ) = 0
2.6.7 Exercice
Exercice 2.5 Soit J la fonctionnelle suivante, définie en dimension 2 par la formule :
Méthode adjointe
Sommaire
3.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Un exemple simple . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Ecriture générale dans le cas du contrôle de la condition
initiale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.1 Dérivée directionnelle de J . . . . . . . . . . . . . . . . . . . . 29
3.3.2 Modèle linéaire tangent . . . . . . . . . . . . . . . . . . . . . . 30
3.3.3 Modèle adjoint . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.4 Calcul du gradient . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4 Exemple : l’équation de Bürgers . . . . . . . . . . . . . . . . . 32
3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1 Motivation
Les méthodes d’optimisation précédentes requièrent le calcul de ∇J. Si la dépendance
de J vis à vis de la variable de contrôle est complexe et/ou indirecte, ce calcul peut être
difficile, comme on l’a vu au chapitre précédent avec
Z T
o
J (x0 ) = kH(x(t)) − y o (t)k2 dt
0
Numériquement, on peut toujours s’en sortir par un calcul de taux d’accroissement. Mais
pour avoir le gradient, il faut faire le calcul pour chaque direction de perturbation pos-
sible. Si x0 est la condition initiale du modèle, le gradient ∇x0 J o va demander plusieurs
simulations du modèle pour chaque composante du gradient, ce qui donne un nombre de
simulations supérieure à la taille de l’état initial, et ce à chaque itération de l’algorithme
de descente). En pratique c’est le plus souvent hors de portée. En météorologie ou en
océanographie, l’état initial vit dans un espace de dimension 106 à 107 .
Remarque : on verra également que le modèle adjoint peut servir à beaucoup d’autres
choses...
u(0) = 0, u(1) = 0
avec f une fonction donnée de L2 (]0, 1[), b et c des paramètres inconnus, que l’on cherche
à identifier grâce à une mesure de u(x) sur ]0, 1[. La fonction coût s’écrit
Z 1
2
J(b, c) = u(x) − uobs (x) dx
0
En notant u
e = ub+αδb,c+αδc , u = ub,c , on a :
Z 1
e + u − 2uobs (e
J(b + αδb, c + αδc) − J(b, c) = u u − u)
0
u(0) = 0, u(1) = 0
D’où
−bû00 − δbu00 + cû0 + δcu0 = 0
û(0) = 0, û(1) = 0
On obtient ainsi le modèle linéaire tangent :
−bû00 + cû0 = δbu00 − δcu0
û(0) = 0, û(1) = 0
R1
On veut pouvoir reformuler 0 (u − uobs )û, donc on multiplie le modèle linéaire tangent
par une variable p et on intègre :
Z 1 Z 1 Z 1
00 0
−b û p + c û p = (δb u00 − δc u0 )p
0 0 0
Calculons séparément :
R1 R1
0
û00 p = [û0 p]10 − 0 û0 p0
R1
= [û0 p − ûp0 ]10 + 0 ûp00
R1
= û0 (1)p(1) − û0 (0)p(0) + 0 ûp00
R1 0 1
R1 0
û p = [ûp] − ûp
0 R 01 0 0
= − 0 ûp
Ce qui donne :
R1 R R
1 1
−b û0 (1)p(1) − û0 (0)p(0) + 0 ûp00 + c − 0 ûp0 = 0 (δb u00 − δc u0 )p
R1 R1
⇔ 0 (−bp00 − cp0 )û = bû0 (1)p(1) − bû0 (0)p(0) + 0 (δb u00 − δc u0 )p
Posons maintenant
−bp00 − cp0 = 2(u − uobs )
p(0) = 0, p(1) = 0
(on appelle ces équations le modèle adjoint)
On a alors
Z 1 Z 1 Z 1 Z 1
obs 00 0 00 0
2 (u − u )û = (−bp − cp )û = δb pu + δc − pu
0 0 0 0
D’où Z 1 Z 1
00 0
∇J(b, c) = pu , − pu
0 0
On a alors
1 T
Z
J(U + αu) − J(u) = kH Xe − Y k2 − kHX − Y k2
2 Z0
1 T e − Y, H Xe − HX + HX − Y ) − (HX − Y, HX − Y )
= (H X
2 Z0
1 T e − Y, H(X e − X)) + (H X
e − Y − (HX − Y ), HX − Y )
= (H X
2 Z0
1 T e − Y, H(X e − X)) + (H(Xe − X), HX − Y )
= (H X
2 0
On pose alors
e −X
X
X̂ = lim
α→0 α
et on calcule
D’où
Z T ! Z T T !
dX̂ ∂M dP ∂M
− X̂, P = 0 = X̂, − − P +(X̂(T ), P (T ))−(u, P (0))
0 dt ∂X 0 dt ∂X
En identifiant avec Z T
ˆ ](u) =
J[U (X̂, H T (HX − Y ))
0
On obtient les équations du modèle adjoint :
T
dP
∂M
+ P = H T (HX − Y )
dt ∂X
P (t = T ) = 0
On remarque que le modèle adjoint est rétrograde : l’équation est intégrée de T jusqu’à
0.
Or
ˆ ](u) = (∇JU , u)
J[U
D’où
∇JU = −P (0)
∂ 2u
∂u ∂u
+ u − ν =f
∂t ∂x ∂x2
u(x = 0, t) = ψ1 (t)
u(x = L, t) = ψ2 (t)
u(x, t = 0) = u0 (x)
où u est la solution de l’équation de Bürgers ci-dessus associées aux conditions (u0 , ψ1 , ψ2 ).
On sait que la dérivée de J dans la direction de (hu , h1 , h2 ) est donnée par
Z T Z L
ˆ 0 , ψ1 , ψ2 )[hu , h1 , h2 ] =
J(u û(u − uobs )
0 0
∂ 2 û
∂ û ∂(uû)
+ − ν =0
∂t ∂x ∂x2
û(x = 0, t) = h1 (t)
û(x = L, t) = h2 (t)
û(x, t = 0) = hu (x)
3.5 Exercices
Exercice 3.1 Soient L et T des réels strictement positifs. On considère l’équation aux
dérivées partielles suivante, pour x ∈]0, L[ et t ∈]0, T [ :
∂u ∂u3 ∂ 2u
+ − ν =f
∂t ∂x ∂x2
u(x = 0, t) = ψ1 (t)
∂u
(x = L, t) = ψ2 (t)
∂x
u(x, t = 0) = u0 (x)
Où les fonctions ψ1 , ψ2 et u0 sont choisies de sorte que l’équation admette une solution
forte sur ]0, T [. Le vecteur de contrôle est (u0 , ψ1 , ψ2 ), et la fonction coût est donnée par
Z T Z L
1
J(u0 , ψ1 , ψ2 ) = (u − uobs )2
2 0 0
1 T L
Z Z
J(u0 , ψ2 ) = (u − uobs )2
2 0 0
1 T L 1 L
Z Z Z
2
J(u0 , ψ1 , ψ2 ) = (u − uobs ) + (u0 − ub )2
2 0 0 2 0
Sommaire
4.1 Adjoint continu et adjoint discret . . . . . . . . . . . . . . . . . 35
4.2 Ecrire un adjoint pour faire de l’assimilation de données . . . 36
4.2.1 Remarque introductive . . . . . . . . . . . . . . . . . . . . . . . 36
4.2.2 Méthode adjointe discrète . . . . . . . . . . . . . . . . . . . . . 37
4.2.3 Autres remarques . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.2.4 Exercice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3 Validation du code adjoint : tests du gradient . . . . . . . . . 39
4.3.1 Premier test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.2 Test dans le cas quadratique . . . . . . . . . . . . . . . . . . . 40
Remarques
– Si le code direct est codé de manière explicite, son adjoint devient implicite (et
vice-versa), il faut donc faire attention aux critères de stabilité numérique !
– Le problème ici est lié à la non symétrie de l’algorithme temporel discret, on peut
avoir le même genre de difficultés avec les algorithmes spaciaux, s’ils sont non
symétriques.
Deux bonnes raisons pour utiliser l’approche discrète (ie prendre l’adjoint du
code discret, et non discrétiser les équations adjoints continu)
1. La fonction coût est calculée par le code direct discret, son gradient est donc donné
par l’adjoint de ce même code discret. L’adjoint continu donne une approximation
de ce gradient qui peut être assez mauvaise...
2. L’approche discrète permet d’utiliser des dérivateurs automatiques de codes (logi-
ciels qui prennent en entrée le code, les variables, et rendent en sortie le code tangent
et le code adjoint).
en annexe A nous permettent d’écrire l’adjoint d’un code, mais ne nous disent pas com-
ment faire apparı̂tre l’écart aux observations, sous forme discrète. Nous allons voir ci-
dessous comment ceci apparaı̂t naturellement, lorsque l’on reprend la méthode adjointe et
qu’on l’adapte au cas discret. En pratique il est conseillé de procéder ainsi : schématiser
le modèle sous forme discrète comme nous allons le faire, afin d’identifier l’endroit ou va
intervenir l’écart aux observations, puis utiliser les règles présentées dans l’annexe A pour
écrire en détail les adjoints des routines mises en jeu.
Fonction coût et dérivée directionnelle. La fonction coût que l’on veut minimiser
par méthode de descente dans la direction du gradient est la suivante :
1 T
Z Z
J(u0 ) = (u − uobs )2 dx dt
2 0 Ω
que l’on écrit sous forme discrète de la manière suivante, en utilisant la méthode d’intégration
des rectangles :
M
1X
J(u0 ) = h(uk − uk,obs )(uk − uk,obs )T
2 k=1
Le gradient de J dans la direction hu est donné par
M
X M
X −1
ˆ 0 )[hu ] =
J(u T
hûk (uk − uk,obs ) = hûk+1 (uk+1 − uk+1,obs )T (4.1)
k=1 k=0
Modèle adjoint. Pour obtenir le modèle adjoint, on multiplie l’équation tangente par
la variable adjointe pk et on intègre en temps et par parties (de manière discrète) :
M −1
X ûk+1 − ûk
0 = h + B ûk+1 pTk
k=0
h
M
X −1 M
X −1 M
X −1
T T
= ûk+1 pk − ûk pk + hB ûk+1 pTk
k=0 k=0 k=0
M −1 M −2 M −1 (4.2)
X X X
= ûk+1 pTk − ûk+1 pTk+1 − û0 pT0 + hûk+1 (B T pk )T
k=0 k=0 k=0
M −2
X T T
= ûk+1 pk − pk+1 + h(B T pk ) + ûM pM −1 + hB T pM −1 − hu pT0
k=0
∇J(u0 ) = p0
2. Si au lieu de multiplier par pk dans (4.2) on avait multiplié par pk+1 on aurait trouvé
la même chose, à un décalage d’indice près pour p :
(
pM +1 = 0
pk − pk+1
+ B T pk = uk − uk,obs , pour k = 1 : M
h
∇J(u0 ) = p1
4.2.4 Exercice
Exercice 4.1 Soient L et T des réels strictement positifs. On considère l’équation aux
dérivées partielles suivante, pour x ∈]0, L[ et t ∈]0, T [ :
∂u ∂u3 ∂ 2u
+ − ν =f
∂t ∂x ∂x2
u(x = 0, t) = ψ1 (t)
∂u
(x = L, t) = ψ2 (t)
∂x
u(x, t = 0) = u0 (x)
Où les fonctions ψ1 , ψ2 et u0 sont choisies de sorte que l’équation admette une solution
forte sur ]0, T [. Le vecteur de contrôle est (u0 ), et la fonction coût est donnée par
1 T L 1 L
Z Z Z
2
J(u0 ) = (u − uobs ) + (u0 − ub )2
2 0 0 2 0
où u est la solution de l’équation ci-dessus associées aux conditions (u0 , ψ1 , ψ2 ) et l’ébauche
ub est une fonction de x ∈]0, L[.
1. Reprendre l’exercice en version continue (voir exercice 3.1).
2. Ecrire un schéma numérique implicite pour le modèle direct.
3. Ecrire les équations du modèles tangent et du modèle adjoint, lorsque la fonction
coût est discrétisée par la méthode des rectangles. En déduire le gradient de J.
4. Reprendre la question précédente lorsque J est discrétisé par une autre méthode
(trapèzes par exemple).
où ∇J est donné par le modèle adjoint. Ensuite il suffit de mesurer l’erreur relative
|τ (α, ei ) − δ(ei )|
ε(α, ei ) =
|δ(ei )|
et de vérifier que ε(α, ei ) tend bien vers 0 avec α pour diverses directions ei .
τ (α, ei ) − δ(ei ) 1
= C(ei )
α 2
Le deuxième test du gradient consiste donc à calculer la quantité r(α, ei )
τ (α, ei ) − δ(ei )
r(α, ei ) =
α
pour diverses directions ei et divers α et à vérifier que pour α → 0 cette quantité tend
vers une constante dépendant de ei .
Algorithmes d’assimilation de
données variationnelle
Sommaire
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 Le 3D-Var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2.1 Fonction coût et algorithme . . . . . . . . . . . . . . . . . . . . 42
5.2.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3 Le 4D-Var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3.1 Fonction coût et gradient . . . . . . . . . . . . . . . . . . . . . 43
5.3.2 Algorithme et remarques . . . . . . . . . . . . . . . . . . . . . 44
5.3.3 Variante : 3D-FGAT . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4 Compléments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4.1 En présence de non linéarités : algorithmes incrémentaux . . . 46
5.4.2 Effet d’une seule observation . . . . . . . . . . . . . . . . . . . 47
5.4.2.1 3D-Var . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4.2.2 4D-Var . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4.3 Préconditionnement . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1 Introduction
Rappel : l’estimation linéaire optimale (BLUE) donne les formules suivantes pour
calculer l’état analysé :
Algorithme 5.1 (BLUE)
1. Calcul de la matrice K, appelée matrice de gain de l’analyse :
K = BH T (HBH T + R)−1
2. Analyse
xa = xb + K(y − H(xb ))
Cet algorithme permet de calculer le minimum xa de la fonction coût suivante :
J(x) = (x − xb )T B −1 (x − xb ) + (y − H(x))T R−1 (y − H(x))
5.2 Le 3D-Var
5.2.1 Fonction coût et algorithme
Le 3D-Var est un algorithme adpaté aux modèles qui ne dépendent pas du temps. La
fonction coût du 3D-Var est la suivante :
avec les notations usuelles. Lorsque H est linéaire, son gradient est donné par
∇J = 2B −1 (x − xb ) − 2H T R−1 (y − H(x))
L’algorithme itératif utilise comme critère d’arrêt soit le fait que ∇J est suffisamment
petit ou bien que le nombre maximal d’itérations est atteint :
Au sujet de la matrice B : comme pour le BLUE, les dimensions de cette matrice font
que son stockage explicite est en général impossible : une modélisation de cette matrice est
nécessaire. Cependant, seul intervient des produits matrice-vecteur impliquant B 1 et ceci
autorise des modélisations complexes sous forme d’opérateur (ie on définit une fonction
complexe qui reçoit φ en entrée, et renvoie B −1 φ en sortie).
Au sujet de la dimension temporelle : cet algorithme est prévu a priori pour des
modèles qui ne dépendent pas du temps. Cependant, il est parfois utilisé pour des modèles
dépendant du temps, mais de grosse dimension. Dans ce cas, x représente l’état initial, et
les observations y o (pourtant réparties sur la fenêtre temporelle) sont ramenées à l’instant
initial. Ceci simplifie grandement le calcul du gradient car, contrairement au 4D-Var (cf
paragraphe suivant), l’algorithme du 3D-Var ne requiert ni l’intégration de l’adjoint du
modèle M T , ni même l’intégration du modèle M .
5.2.2 Exemple
On cherche x1 et x2 les températures à Grenoble et à Chambéry.
La climatologie nous
T 1 0.25
donne une ébauche xb = 10 5 , avec B = . On observe y o = 4 à
0.25 1
Chambéry, avec R = 0.25 , et donc H = 0 1 .
On a donc
−1
1 0.25 x1 − 10
J(x) = x1 − 10 x2 − 5 + R−1 (x2 − 4)2
0.25 1 x2 − 5
−1
16 1 −0.25 x1 − 10
= x1 − 10 x2 − 5 15 + 4(x2 − 4)2
−0.25 1 x2 − 5
16
= 15 ((x1 − 10)2 + (x2 − 5)2 − 0.5(x1 − 10)(x2 − 5)) + 4(x2 − 4)2
16
= 15 (x21 − 17.5x1 + 100 + x22 − 5x2 − 0.5x1 x2 ) + 4 (x22 − 8x2 + 16)
De sorte que le gradient de J est :
16
(2x1 − 0.5x2 − 17.5) 1 32x1 − 8x2 − 280
∇J(x) = 15
16 =
15
(2x2 − 5 − 0.5x1 ) + 4(2x2 − 8) 15 −8x1 + 152x2 − 560
Le minimum de J est donc atteint pour
∇J(x) = 0 ⇒ x1 = 9.8, x2 = 4.2
5.3 Le 4D-Var
5.3.1 Fonction coût et gradient
Le 4D-Var généralise le 3D-Var au cas dépendant du temps, les observations étant
obtenues à des instants différents. La fonction coût est toujours écrite en fonction de
l’état initial x, mais fait intervenir le modèle puisque l’observation yio au temps i est
comparée à Hi (xi ), où xi est l’état au temps i du modèle initialisé avec x.
ébauche
analyse
observation
J b (x) = (x − xb )T B −1 (x − xb )
avec
xi = M0→i (x)
= Mi−1,i Mi−2,i−1 . . . M1,2 M0,1 x
= Mi Mi−1 . . . M2 M1 x
en notant Mi,i−1 = Mi .
Le terme d’observation de la fonction coût du 4D-Var est alors, en fonction de x :
n
X
o
J (x) = (yio − Hi Mi Mi−1 . . . M1 x)T Ri−1 (yio − Hi Mi Mi−1 . . . M1 x)
i=0
di = yio − Hi Mi Mi−1 . . . M1 x
On a alors
n
X
− 12 ∇J o (x) = M1T . . . Mi−1
T
MiT HiT Ri−1 di
i=0
= H0T R0−1 d0 + M1T H1T R1−1 d1 + M1T M2T H2T R2−1 d2 + . . . +
M1T . . . Mn−1
T
MnT HnT Rn−1 dn
H0T R0−1 d0 + M1T H1T R1−1 d1 + M2T H2T R2−1 d2 + . . . + MnT HnT Rn−1 dn
=
Cette factorisation permet de calculer J o puis ∇J o avec une intégration du modèle direct
et une du modèle adjoint (cf “chain rule, mode reverse”).
di = yio − Hi Mi Mi−1 . . . M1 x
n
X
b T −1
J = (x − x ) B (x − x ) + b
dTi Ri−1 di
i=0
α = (α1 , α2 , . . . , αp )
il suffit d’ajouter des variables de contrôle et des termes dans la fonction coût :
Pourquoi utiliser l’adjoint pour le calcul du gradient ? Une autre façon de faire
serait de revenir à la définition :
avec
J(x1 , . . . , xj−1 , xj + h, xj+1 , . . . , xn ) − J(x1 , . . . , xn )
∇Ji = lim
h→0 h
On a alors deux problèmes :
1. Le calcul n’est pas exact, puisque la limite est calculée de manière approximative.
2. Il faut faire ce calcul pour tout j ∈ {1, . . . , n}
L’adjoint, lui, donne un résultat exact.
Non-linéarités. Comme pour le BLUE et le 3D-Var, tout ceci est valide lorsque les
opérateurs M et H sont linéaires. S’ils ne le sont pas, on peut essayer de les linéariser, et
espérer que le résultat soit correct, ou bien conserver les opérateurs non linéaires et faire
de l’optimisation non convexe.
5.4 Compléments
5.4.1 En présence de non linéarités : algorithmes incrémentaux
Dans le cas où le modèle et/ou l’opérateur d’observation sont faiblement non-linéaires,
on peut étendre les algorithmes des 3D- et D4-Var pour prendre en compte ces faibles
non-linéarités. Les hypothèses de “faibles non linéarités” sont les suivantes :
où les Mj représentent les divers pas de temps du modèle non linéaire et les Mj en sont
une bonne approximation linéaire. De même, on impose
où de la même façon, Hi est une bonne approximation linéaire de Hi . Alors on définit
l’incrément δx
δx = x − xb
et on réécrit la fonction coût en fonction de l’incrément δx :
J b (δx) = δxT B −1 δx
n
X
o
J (δx) = (di − Hi Mi . . . M1 δx)T Ri−1 (di − Hi Mi . . . M1 δx)
i=1
di = yio − Hi Mi . . . M1 (xb )
La fonction coût incrémentale J(δx) est ainsi une approximation de la vraie fonction coût,
de plus elle est quadratique, donc facile à minimiser !
L’algorithme du 4D-Var incrémental permet de prendre en compte les faibles non-linéarités
en remettant périodiquement à jour les opérateurs linéarisés Mi et Hi .
Seule la k-ème colonne contient 1, les autres sont nulles. La gradient de J vaut
5.4.2.2 4D-Var
De la même façon, on n’observe que le k-ème point du vecteur d’état, seulement au
temps ti . La fonction coût associée est
1 1
J(x0 ) = (x0 − xb )T B −1 (x0 − xb ) + (HM0→i x0 − y o )T R−1 (HM0→i x0 − y o )
2 2
Comme précédemment, en écrivant que son gradient s’annule en xa , et en utilisant les
valeurs particulières de H et R, on obtient :
T
o a
y − xi,k (BM 0→i ) 1,k
xa − xb = ...
σ2 T
(BM0→i )n,k
5.4.3 Préconditionnement
On rappelle que le conditionnement d’une matrice A est le produit kAk kA−1 k, qui est
proportionnel au quotient de la plus grande valeur propre de A par sa plus petite.
Le changement de variable
Compléments
Sommaire
6.1 Analyse de sensibilté . . . . . . . . . . . . . . . . . . . . . . . . 50
6.1.1 Assimilation de données . . . . . . . . . . . . . . . . . . . . . . 51
6.1.2 Lien avec l’analyse de sensibilité . . . . . . . . . . . . . . . . . 52
6.2 Méthodes réduites . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.1 Idée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.2 Choix de l’espace réduit . . . . . . . . . . . . . . . . . . . . . . 53
6.2.2.1 EOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.2.2 Autres bases . . . . . . . . . . . . . . . . . . . . . . . 53
6.2.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.3 Modélisation des covariances d’erreur . . . . . . . . . . . . . . 54
6.3.1 Remarques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.3.2 Opérateur de diffusion . . . . . . . . . . . . . . . . . . . . . . . 55
6.3.3 EOF et bases réduites . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.4 Méthodes d’ensemble . . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.5 Autres méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . 57
L’exemple que l’on va considérer est une équation de diffusion à coefficients non
constants, sur ]0, L[×]0, T [ :
∂u ∂ ∂u
= K(x)
∂t ∂x ∂x
u(x = 0, t) = u(x = L, t) = 0
u(x, t = 0) = u0 (x)
où û est
u(K + αk) − u(K)
û = lim
α→0 α
Le modèle linéaire tangent définissant û est
∂ û ∂ ∂ û ∂ ∂u
= K(x) + k(x)
∂t ∂x ∂x ∂x ∂x
û(x = 0, t) = û(x = L, t) = 0
û(x, t = 0) = 0
où xb est un état de référence fixé, et (φ1 , . . . , φr ) est une base de l’espace réduit.
On minimise alors la fonction coût réduite
J(x) = J(c
e 1 , . . . , cr )
La méthode des EOF porte aussi d’autres noms : POD (proper orthogonal decompo-
sition), ACP (analyse en composante principales).
6.2.3 Exemple
On considère le problème du contrôle du coefficient de diffusion K(x) dans l’équation
∂u ∂ ∂u
= K(x) = x ∈]0, 1[, t ∈]0, T [
∂t ∂x ∂x
u(x = O, t) = u(x = 1, t) = 0
u(x, t = 0) = u0 (x)
Le coefficient K est inconnu et on veut l’estimer à partir de l’observation uobs :
1 T 1
Z Z
J(K) = (uK − uobs )2
2 0 0
On suppose maintenant que les variations de K peuvent être représentées dans une base
(φ1 , . . . , φr ) :
Xr
K(x) = λi φi (x)
i=1
Et on a r
Z T Z L
ˆ 1 , . . . , λn )[d1 , . . . , dn ] = ∂p ∂u
X
J(λ di φi (x)
0 0 i=1 ∂x ∂x
Z TZ L
Pr ∂p ∂u
= i=1 di φi (x)
0 0 ∂x ∂x
= ∇J(λ1 , . . . , λn ).[d1 , . . . , dn ]
Donc Z T Z L
∂p ∂u
∇Ji (λ1 , . . . , λn ) = φi (x)
0 0 ∂x ∂x
B = (εb − εb )(εb − εb )T
On rappelle le lien avec les variances et les corrélations. Si la matrice B a pour coeffi-
cients Bi,j alors on a
Bi,j = (εbi − εbi )(εbj − εbj )
Les variances sont alors définies comme les coefficients diagonaux Bi,i :
0 0 0 CS
où les Cφ sont des matrices de corrélations spatiables pour une variable φ donnée, par
exemple ici on a 4 variables u, v, T et S dans l’océan (vitesses, température, salinité), de
sorte que le vecteur d’état s’écrit
x = (u1 , . . . , uM , v1 , . . . , vM , T1 , . . . , TM , S1 , . . . , SM )
où M est le nombre de points de grille. Dans ce cas, par exemple, la matrice Cu =
(Cu;i,j )1≤i,j≤M représente les corrélations entre le points de grille i et j pour la variable de
vitesse u.
Une première méthode naı̈ve consiste à dire que les fonctions de corrélation sont des
gaussiennes dépendant de la distance entre deux points :
di,j
Ci,j = c1 exp −
c2
où c1 et c2 sont des coefficients de normalisation et di,j représente la disctance entre le
point repéré par l’indice i dans la grille et celui repéré par l’indice j, de sorte que l’influence
du point i sur le point j décroit avec la distance entre ces points.
La méthode de l’opérateur de diffusion améliore cette idée, en déformant les gaus-
siennes pour suivre les frontières du domaine, ou le flot. Ceci est réalisé grâce à un
opérateur de diffusion (dont les solutions sont justement des gaussiennes déformées).
Un grand avantage de cette méthode est que la matrice produite est multivariée,
puisqu’elle fait apparaı̂tre naturellement des covariances non nulles entre les différentes
variables du modèle.
Cette technique peut s’appliquer avec n’importe quelle base réduite (voir le paragraphe
de réduction d’ordre 6.2).
avec Lj vecteur d’une seule colonne. Tout le problème est alors de calculer judicieusement
les vecteurs xj de l’ensemble. On se reportera aux méthodes de filtre d’ensemble pour voir
comment calculer ce éléments.
H : Rn → Rm
X 7→ Y
Hl : Rnl−1 → Rnl
Z l−1 7→ Z l
de sorte que
H = HK ◦ HK−1 ◦ . . . ◦ H1 = K
l=1 H
l
Le jacobien de H :
∂Hi
(Aij (X0 ))1≤i≤m,1≤j≤n =
∂Xj X=X0
est donné par la chain-rule (règle de composition des différentielles) :
Z K−1 = K−1 l
l=1 H (X), Z K−2 = K−2 l
l=1 H (X), ..., Z0 = X
Z0K−1 = K−1 l
l=1 H (X0 ), Z K−2 = K−2 l
l=1 H (X0 ), ..., Z 0 = X0
On a alors deux stratégies pour calculer le produit :
∂HK ∂HK−1
– −→ reverse mode : calculer de gauche à droite, ie commencer par le produit ∂Z K−1 . ∂Z K−2 ,
∂HK−2
puis multiplier le résultat par ∂Z K−3 , etc.
– ←− forward mode : calculer le produit dans le même sens que la composition des
2 ∂H1
fonctions, ie commencer par ∂H .
∂Z 1 ∂Z 0
et continuer de la droite vers la gauche.
Une autre différence entre les méthodes est que les résultats intermédiaires Z p = pl=1 Hl (X0 )
sont nécessaires pour faire le calcul, mais pas dans le même ordre si on travaille en reverse
ou en forward.
où δX est une petite variation de X. Le lien entre deux variables tangentes successives
est donné par :
∂Hl
l
δZ = δZ l−1
∂Z l−1 Z l−1 =Z l−1
0
avec Z0l l
=H ◦H l−1 1
◦ . . . ◦ H (X0 ).
De sorte que l’on a, en utilisant la définition des variables tangentes puis adjointes :
dH
δH = .δX
dX
d HK ◦ HK−1 ◦ . . . ◦ Hl+1 dZ l
= . .δX
dZ l dX
d HK ◦ HK−1 ◦ . . . ◦ Hl+1
= .δZ l
dZ l
= δ ∗ Z l .δZ l
Ceci vaut pour tout l, donc en particulier en écrivant ceci pour l = 0 on obtient :
δH = (∇X H, δX) = δ ∗ Z l , δZ l = δ ∗ Z l−1 , δZ l−1
A.2 Checkpointing
On a vu précédemment que le mode reverse (utilisé en assimilation de données)
nécessite les résultats intermédiaires dans l’ordre inverse. Il existe plusieurs stratégies
pour obtenir ces résultats intermédiaires :
– Stratégie 1 : on stocke tous les résultats intermédiaires lors du calcul du code direct.
Lorsque les dimensions du problèmes sont grandes, on a évidemment des problèmes
de mémoire.
– Stratégie 2 : on recalcule tout au fur et à mesure. De même, on peut avoir ici des
problèmes de temps de calcul.
– Stratégies intermédiaires : elles mélangent le stockage et le re-calcul. On appelle ça
le checkpointing.
Direct
800 900 1000
899
999
898
... ... 998
Adjoint (reverse)
Direct
800 900 1000
960 980
860 880
...
Adjoint (reverse)
Par exemple, les variables d’état sont en général actives, tandis que les paramètres phy-
siques et numériques sont passifs.
A.3.1 Affectation
On va appliquer la formule vue précédemment, ie on va dériver, puis transposer. Tra-
vaillons sur un exemple. Soit le code direct
Z = X sin(Y 2 ) + aX 2 + bY + c
où les variables X, Y et Z sont actives et a, b, et c sont passives. Avec les notations
précédentes, ceci est l’étape l :
l l−1 l−1 2 2
Z = X sin Y + aX l−1 + bY l−1 + c
Remarque : la valeur Z l−1 n’intervient pas dans le calcul de Z l , c’est pour cela qu’on
a ADZ = 0. C’est important de mettre cette ligne en dernier ! Réciproquement, si Z l−1
intervient, alors ADZ 6= 0. Par exemple :
ADY = ADY + ADZ
direct : Z = ZX + Y → adjoint : ADX = ADX + Z ADZ
ADZ = X ADZ
Conflits : lorsqu’on ne voit pas qu’une variable du membre de droite est la même que
celui de gauche. Par exemple :
A.3.3 Boucles
On distingue les boucles parallèles, lorsqu’il n’existe pas de dépendance entre les étapes
de la boucle, des boucles séquentielles. La règle est la suivante :
direct −→ adjoint (b. parallèle) adjoint (b. séquentielle)
do i = start, end, step do i = start, end, step do i = end, start, -step
bloc A adjoint bloc A adjoint bloc A
end end end
Conflits. Peuvent arriver si des variables actives sont écrasées durant la boucle. Voyons
un exemple.
F =1
do i = 1, N
F = F.X(i)
end
L’adjoint du bloc dans la boucle est
adX(i) = adX(i) + F adF
adF = X(i) adF
A.3.4 Blocs
Le code adjoint de
A→B→C
est
A∗ ← B ∗ ← C ∗
La difficulté est que, parfois, certaines variables sont requises pour faire les calculs. Par
exemple, C ∗ requiert les variables directes telles qu’elles étaient après avoir effectué A
puis B.
Comme précédemment, on peut trouver trois solutions pour gérer cette difficulté :
1. stocker les variables requises sur le disque ;
2. les stocker en mémoire ;
3. tout recalculer, de sorte que l’adjoint de A B C devient 0 A B C ∗ 0 A B ∗ 0 A∗ , où 0
signifie “revenir aux variables initiales” (telles qu’elles étaient avant l’évaluation de
A).
Par exemple, considérons le code direct
(A) Y = F.X 2
(B) X = 4X + C
y (C) Z = F. sin(X)
subroutine sub(X,Y,A)
implicit none
integer n,i,j
parameter n=100
real X(n),Y(n),A
real sumX,sumY,fac
real Xnorm
common /com1/ Xnorm
sumX = 0.
sumY = 0.
do i=1,n
sumX = sumX+X(i)
sumY = sumY+Y(i)
enddo
fac = sumX*sumY*Xnorm/A
do i=1,n
j = n+1-i
X(i) = fac*(X(i)^2+Y(j)^2)
enddo
end
A
B
do i=n,1,-1
j = n+1-i
adfac = adfac + adX(i)*(X(i)^2+Y(j)^2)
adY(j) = adY(j)+2*Y(j)*fac*adX(i)
adX(i) = 2*X(i)*fac*adX(i)
enddo
Ensuite on passe au bloc B ∗ . Il nécessite sumX et sumY, qui ont déjà été recal-
culés avant le bloc C ∗ , et pas modifiés, donc on peut passer directement à B ∗ sans
recalculer le bloc A :
adsumX = adsumX + adfac*sumY*Xnorm/A
adsumY = adsumY + adfac*sumX*Xnorm/A
adXnorm = adXnorm + adfac*sumX*sumY/A
adfac = 0
Et enfin, pour A∗ on a :
do i=n,1,-1
adX(i) = adX(i) + adsumX
adY(i) = adY(i) + adsumY
enddo
adsumX = 0.
adsumY = 0.
3. Pour les déclarations, on conserve les variables requises de la routine directe, on
ajoute les adjoints des arguments actifs X et Y, on ajoute les adjoints des variables
locales actives sumX, sumY et fac, et enfin les adjoints des variables de common
actives Xnorm.
integer n,i,j
parameter n=100
real X(n),Y(n),A
real sumX,sumY,fac
real Xnorm
common /com1/ Xnorm
real adX(n),adY(n)
real adsumX,adsumY,adfac
real adXnorm
common /adcom1/ adXnorm
La mise à zéro des variables acitves locales est immédiate :
adsumX = 0
adsumY = 0
adfac = 0
4. Enfin, on identifie les arguments à conserver : les variables X, Y et A sont requises,
et adX et adY sont les variables adjointes des arguments actifs X et Y.
5. Il suffit maintenant de tout remettre en ordre :
subroutine adsub(X,Y,A,adX,adY)
declarations
mise a zero des variables actives locales
A, B, C*, B*, A*
end
L’adjoint d’une fonction est l’appel à une subroutine construite selon les mêmes règles
que précédemment, au détail près que l’on ajoute un argument suppémentaire à la su-
broutine adjointe, qui est l’adjoint du résultat de la fonction. Par exemple, le code
Z = fct(X,Y)
function fct(X,Y)
real X,Y,fct
fct = X^2+2*Y^2
end
call adfct(X,Y,adX,adY,adZ)
real X,Y,adX,adY,adZ
adX = adX + 2*X*adZ
adY = adY + 4*Y*adZ
end
adZ = 0
open(1)
write(1) X
read(1) Z
close(1)
local Xh
Xh = X
Z = Xh
Xh = 0
local adXh
adXh = 0
adXh = adXh + adZ
adZ = 0
adX = adX + adXh
adXh = 0
Que l’on peut simplifier en :
local adXh
adXh = adZ
adZ = 0
adX = adX + adXh
adXh = 0
Ce qui donne avec des entrées / sorties :
open(2)
write(2) adZ
adZ = 0
read(2) adXh
adX = adX + adXh
adXh = 0
close(2)
A.4 Exercices
Ecrire les adjoints des codes suivants
1. (x, y et z sont actives)
z = 2x^2+3*y/x+cos(y)*x
2. (x, y et z sont actives)
z = x*z + a*x*z
Vérifier que c’est équivalent à
h = x*z
z = h + a*x*y
3. (x et y actives)
do i =0,4
x(i) = y(i)*x(4-i)
enddo
Comparer à
do i =0,4
z(i) = y(i)*x(4-i)
enddo
do i =0,4
x(i) = z(i)
enddo
4. (x, y et z actives)
y = a/x^2
x = b*x+c*y
z = x*y
5. (x et u actives)
do i=1,n
x(i) = x(i-1) + h*f(x(i-1),u(i))
enddo
function f(y,v)
integer parameter n=3
real v(n)
real y
real a,b,c
a=0
b=1
c=2
f = v(1)*(y-b)*(y-c)/((a-b)*(a-c)) + ...
v(2)*(y-a)*(y-c)/((b-a)*(b-c)) + ...
v(3)*(y-a)*(y-b)/((c-a)*(c-b))
end