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.
Ce document a été traduit de LATEX par HEVEA