Précédent : Grands domaines d'application
Remonter : Projet MIAOU, Mathématiques et Informatique
Suivant : Résultats nouveaux
Résumé : hyperion est un logiciel destiné à l'identification de fonctions de transfert rationnelles multivariables strictement propres à partir de mesures fréquentielles ; il est complémentaire de logiciels pour automaticiens comme Matlab, scilab, etc. Destiné essentiellement à valider les algorithmes développés dans le projet Miaou, le logiciel hyperion est encore peu diffusé hors du projet ; cependant, suite à une collaboration qui dure depuis quelques années, le CNES a acheté les droits d'utilisation de ce logiciel.
Ce qui caractérise hyperion par rapport à d'autres interprètes Lisp est le fait que les polynômes, les matrices, et les matrices de polynômes sont des objets de base. Les opérations arithmétiques (somme, produit, etc), traitent ces objets, et font les conversions nécessaires (multiplier une matrice de nombres complexes par un polynôme réel est une opération valide, le résultat étant une matrice de polynômes à coefficients complexes).
Les coefficients des polynômes sont, soit des nombres flottants (double précision), soit des nombres en quadruple précision, soit des nombres en précision illimitée. La quadruple précision a été implémentée il y a quelques années car elle est nécessaire pour l'identification de fonctions de transfert de degré élevé. Notons que sur certaines architectures (Sun par exemple), il est possible d'utiliser des flottants sur 128 bits, sur d'autres (Dec Alpha) cela n'est possible que depuis Fortran. Le principal avantage de coder la quadruple précision en soft, plutôt que d'utiliser le hard, est que le résultat est indépendant de l'architecture (par résultat, on entend ici la convergence de l'algorithme d'identification, et non les valeurs numériques de la fonction de transfert, pour laquelle une précision de 5 chiffres est largement suffisante).
L'algorithme arl2, qui constitue la base du logiciel
hyperion, consiste essentiellement à minimiser une certaine
fonction . Le calcul de cette fonction
n'est pas facile et celui de ses dérivées moins encore. C'est
ainsi que nous avons écrit un module de différentiation
automatique pour générer, grâce à hyperion, le code C de la
fonction, de sa dérivée première en mode inverse, et de sa
dérivée seconde (en mode direct). Le lecteur intéressé par la
différentiation automatique, et les divers modes de
différentiation pourra consulter le rapport d'activité du projet
SAFIR de l'Inria-Sophia.
Dans le cas matriciel (multientrées, multisorties), on veut
minimiser par rapport à toutes les
matrices
intérieures de degré de McMillan
fixé. Cet ensemble est une variété différentielle, pour laquelle
il n'existe pas d'atlas très simple. Celui que l'on utilise
conduit à l'algorithme de Schur tangentiel [1]. L'une des difficultés essentielles
consiste à maîtriser le changement de cartes : dans quel cas
faut-il changer de carte, et comment choisir une nouvelle carte.
Dans le cas
(cas où on veut identifier un
quadripôle comme celui du CNES), nous maîtrisons assez bien cette
difficulté ; le cas général est encore en phase d'étude.
L'algorithme d'identification proprement dit consiste en deux
phases séparées. Dans un premier temps, on identifie chaque voie
sous la forme d'une fonction de degré infini, dans l'espace de
Hardy (ou Hardy-Sobolev). Si le degré cherché est
(typiquement de l'ordre de 400), il s'agit de trouver
tel que
soit égal à une
valeur
donnée par l'utilisateur. La fonction
est croissante, et calculer
revient simplement à inverser une matrice de taille
. La complexité de cet algorithme est donc
proportionnelle à
et, si
est raisonnable, la phase correspondante prend peu de temps. Le
résultat final de l'approximation dépend fortement du choix de
: de nombreux essais peuvent être
nécessaires.
La deuxième phase consiste à appliquer un algorithme
arl2 d'approximation rationnelle sur l'ensemble de toutes
les voies. Si est la matrice des
déterminée à l'étape précédente, il s'agit de trouver
une fraction
, rationnelle, stable, de degré de
McMillan fixé, telle que
soit le plus
petit possible en norme
. Dans le cas de
degré 8 (cas du CNES), cette étape prend de l'ordre de 2
heures de CPU pour trouver un minimum local, plusieurs heures
pour chercher d'autres minima locaux (on ne peut garantir que
l'algorithme trouve le minimum absolu). Par contre, si on sait a
priori que
est proche de
,
quelques secondes suffisent. Par exemple, si on cherche à évaluer
l'influence d'un paramètre
, on veut
minimiser la norme de
, et on peut utiliser
comme condition initiale pour
la valeur
trouvée à l'itération
précédente. C'est
ainsi que nous avons calculé 600 valeurs
pour
le film « L'automatique : surveillance, prédiction et contrôle »,
disponible sur le serveur http://www.inria.fr/audiovisuel
.