Problème inverse, analyse de sensibilité et programmation fonctionnelle
F. Clément, E. Marchand, H. Ben Ameur, P. Weis
On parle de problème inverse lorsque l'évaluation d'une quantité n'est
accessible qu'à partir de la mesure d'une seconde quantité qui en dépend à
travers un opérateur.
Le problème consiste alors à inverser cet opérateur.
L'analyse de sensibilité consiste à déterminer quelles directions dans l'espace
des entrées d'un opérateur produisent les plus grands effets dans l'espace de
ses sorties.
Cette analyse permet de sélectionner a priori les directions principales dans
l'espace des paramètres d'entrée, mais également de relier les incertitudes sur
les sorties à celles sur les entrées.
On s'intéressera par exemple à la dépendance de concentrations en contaminants
aux exutoires en fonction de la perméabilité ou de la porosité du milieu.
Les techniques déterministes d'inversion et d'analyse de sensibilité reposent
sur le calcul des dérivées de l'opérateur.
Elles n'offrent qu'une vision locale, et sont en ce sens complémentaires des
techniques probabilistes qui sont globales mais (beaucoup) plus coûteuses.
L'implémentation de tous ces aspects est généralement fastidieuse et répétitive.
Il est alors primordial de tirer parti de toute l'offre disponible dans le
monde informatique.
Cela inclue bien sûr l'usage de bibliothèques numériques spécialisées, mais
également l'emploi d'outils de haut niveau telle la différenciation
automatique, la programmation générique, ou par squelettes.
Ces techniques de programmation sont rendues accessibles par les possibilités
de langages récents tels C++ ou Java, mais l'émergence de l'usage de langages
fonctionnels tel Caml dans le monde du calcul scientifique n'est pas à négliger.
En effet, ces langages reposent sur des bases théoriques et une sémantique
formelle, ils apportent la sûreté.
Quelques exemples concrets de l'utilisation de Caml seront présentées.