ESILV–CS 305 Problèmes inverses
TD CS 305 – Problèmes inverses
M. Kern 9 décembre 2002
Exercice 1 : Identification de paramètres – problème elliptique
On considère le problème elliptique en dimension 1 suivant : (1)
−b u00(x) +c u0(x) = f(x) dans]0,1[
u(0) =0, u0(1) =0 ,
où b et c sont des paramètres réels, et f ∈L2(0,1).
On cherche à identifier les coefficients b et c connaissant une mesure de u(x)sur]0,1[.
1 Proposer une formulation aux moindres carrés de ce problème inverse.
2 On introduit une discrétisation de l’intervalle]0,1[par un maillage de pas h. On pose xj= jh, j=0, . . . ,N, uj≈u(xj)et fj ≈ f(xj). On effectue une approximation du problème (1) par une méthode d’éléments finis P1 (u et f sont approchés par des fonctions affines sur chacun des intervalles]xj−1,xj+1[). Montrer que le problème approché s’écrit :
(2) (bK+cD)x=Mb,
où x= (u1, . . . ,uN)t, b= (f1, . . . ,fN)t. Donner l’expression des matrices K,D et M.
Donner l’expression de la fonction coût discrète J.
3 Écrire les équations linéarisées, et montrer comment calculer le gradient de la fonction coût discrète.
4 Écrire l’équation adjointe, et montrer comment calculer la dérivée de la fonction coût.
5 Programmer la résolution du problème direct. Pour valider, vous pouvez utiliser l’exemple (b=c=1) : f(x) =π2/4 sin(π/2 x) +π/2 cos(π/2 x)avec la solution u(x) =sin(π/2x). Écrire une fonctionu=function direct(b,c,f)où b,c et f dont des vecteurs.
1
ESILV–CS 305 Problèmes inverses 6 Programmez les fonctions correspondantes, et calculer les dérivées partielles de J au point b=c=1. Valider par différences finies.
7 Programmer le calcul de l’état adjoint et des dérivées partielles. Validez l’état adjoint par le test du produit scalaire, et la dérivée par différences finies.
8 On prend f comme ci-dessus. Résoudre le problème d’optimisation, en prenant comme mesure la solution correspondant à b=c=1, et comme pont initial b=2,c=3.
Reprendre la question en ajoutant un bruit aléatoire de 1%, 5%, 10%.
Dans chaque cas, tracer les variations de la fonction coût en fonction b et c.
Les quelques lignes suivantes seront utiles pour démarrer : getf(’ellip.sci’)
nx=20; dx=1/nx; x=(dx:dx:1)’;
deff(’y=f(x)’, ’y=%pi^2/4*sin(%pi/2*x)+%pi/2*cos(%pi/2*x)’) fx=f(x);
deff(’y=uex(x)’, ’y=sin(%pi/2*x)’);
2