ESILV–CS 305 Problèmes inverses
TD CS 305 – Problèmes inverses
M. Kern 6 janvier 2003
Exercice 1 : Identification de paramètres – équations différen- tielles ordinaires
Le but de cet exercice est de réaliser un ensemble de fonctions en Scilab permettant d’attaquer des problèmes inverses pour les équations différentielles ordinaires
y0(t) = f(t,y,a), 0<t<T, y(0) =y0 où y :[0,T]→Rd, a∈Rpet f :[0,T]×U×Rp.
On suppose connue des mesures de l’état y à des instants τ1, . . . ,τQ, que l’on note d =
(d1, . . . ,dQ)avec dq∈Rd, et l’on cherche à identifier le paramètre a pour lequel la différence
entre dqet y(tq)est la plus petite possible, au sens des mondres carrés.
On supposera dans cet exercice que l’on intere l’équation différentielle par la méthode d’Eu- ler explicite. On notera t0=0≤t1≤ ··· ≤tn≤ ··· ≤tN ≤T les points de discrétisation, avec tn=nh, Nh=T . Le schéma d’Euler s’écrit alors :
yn+1−yn
h −f(tn,yn,a) =0, n=0, . . . ,N−1, y0=y0. Vous validerez votre code sur les deux exemples suivants :
(1) f(t,y,a) = −(a1+a3)y21 a1y21−a2y2t
avec les conditions initiales y(0) =y0= 1 0t
, et
(2) f(t,a,y) = −(a1+a2)y1 a1y1 a2y1−(a3+a4)y3+a5y5 a3y3 a4y3−a5y5t
. avec les conditions initiales y(0) =y0= 1 0 0 0 0t
.
Les fonctions et les données sont à télécharger à l’adresse http://www-rocq.inria.fr/
~kern/Teach/ESILV/CS305.html.
1 Rappeler la formulation aux moindres carrés de ce problème. On notera J la fonction coût.
1
ESILV–CS 305 Problèmes inverses
2 Rappeler comment on peut calculer le gradient de la fonction coût, d’abord par différentia- tion directe, puis par la méthode de l’état adjoint, enfin par différences finies.
3 En vous inspirant de la fonction direct, écrire des fonctions permettant de résoudre le problème linéarisé, le problème adjoint. Ces fonctions auront les spécifications suivantes : function [etat] = direct(t0, tf, f, h, a, y)
function [etadj]= adjoint(t0, tf, jyf, h, a, etat, r) function [detat] = linearise(t0, tf, jyf, h, a, etat, b) où
– t0(resp.tf) est l’instant initial (resp. final), – hest le pas de temps,
– a, de taille p, est le vecteur des paramètres,
– y, de taille d, correspond à y0en entrée dedirect,
– etat, de taille d×N, est l’état (en sortie dedirect, en entrée deadjointetlinearise), – detatetetatdj, de même taille que textttetat, sont les solutions des problèmes linéarisés
et adjoints respectivement,
– fetjyfsont la fonction f de l’équation différentielle et sa matrice jacobienne par rapport à y,
– b(resp.r), de même taille queetat, est le second membre de l’équation linéarisée (resp.
adjointe).
La fonction f caractérise le problème, et aura la séquence d’appel suivante : function ydot=f(t, y, a)
On aura également besoin des fonctions qui calculent les matrices jacobiennes par rapport à a et y, avec la même séquence d’appel.
4 Écrire les fonctions permettant de calculer la fonction coût et son gradient par la méthode de l’état adjoint.
function [cout] = simul(a, f, tobs, dobs)
function [g] = gradient(a, f, jyf, jaf, tobs, dobs)
Testez votre calcul en utilisant les fonctionststadjettstgradqui réalisent respectivement le test du produit scalaire et un calcul par différences finies .
5 En utilisant la fonction costf, écrire une fonction qui résout le problème de moindres carrés en apellantoptim.
6 Résoudre les problèmes correspondant aux données disponibles dans les fichiersgasoil.dat etpinene.dat. Les mesures sont prises sur un maillage uniforme en temps.
2