FitOO

Corrélations non-linéaire pour OpenOffice.org

Logo FitOO

Télécharger la dernière version de FitOO

Télécharger CorelPoly, version préliminaire de FitOO permettant la correlation de polynomes et sommes d'exponentielles

FitOO est un outil de corrélation non-linéaire dédié à la suite OpenOffice.org. Il correspond à un modèle de document Calc définissant la structure nécessaire à la méthode employée et un ensemble de macro implémentant l'algorithme de Levenberg-Maquard permettant de résoudre le problème de minimisation.

Ce document résume les quelques points essentiels nécessaires pour débuter avec FitOO.

Pré-requis

Bien sûr, il est nécessaire d'avoir installé OpenOffice.org. FitOO a été developpé à partir de la version 1.1 Béta 1 sous windows. Il serait très utile d'avoir un retour d'expérience des utilisateurs sous d'autres versions.

Installation et démarrage

Copier le fichier FitOO.stc (modèle Calc) dans le répertoire [ooo]/user/Template. Vérifier que les macros sont autorisées. Pour demarrer une session FitOO, lancer Calc, menu "Fichier", "Nouveau", "A partir du modèle" et choisir "FitOO". On pourra également double-cliquer directement sur le fichier stc, un nouveau document sur ce modèle sera ouvert comme indiqué sur la figure 1 (plus bas).

Utilisation

Un peu de blabla (théorie serait un peu fort...)

Je n'ai pas l'intention de rentrer dans la description de l'algorithme utilisé, mais je vais juste en rappeler l'idée générale.
Nous avons une série de points X,Y issue de mesures par exemple. D'un autre côté, une modélisation nous donne une forme générale d'équation.
Le but du jeu est de calculer les constantes de cette équation théorique de telle manière à ce que la courbe obtenue approche au mieux la série de point. Le problème se ramène à un processus de minimisation d'une méthode des moindres carrés.
Dans le cas de fonctions simples (linéaires, polynomiales, exponentielles...) dont nous pouvons facilement et analytiquement programmer la dérivée partielle par rapport à chacune de ces constantes (qui deviennent donc les variables de notre étude), le problème peut être résolu directement et de manière certaine.
Dans le cas de fonctions plus complexes (combinaisons de fonction simples) ou fonction non linéaires, il devient nécessaire d'utiliser un algorithme itératif qui va petit à petit minimiser l'écart entre la courbe et les points experimentaux.

Figure 1

Comme tout processus itératif, l'algorithme nécessite une premier jeu de paramètres pas trop éloignés de la solution.
La version 1.1 de FitOO prend désormais en compte un nombre quelconque d'inconnues de l'équation théorique. Ainsi les équations du type Y = F (X1...Xn;A1...Am) sont désormais gérées. Cette modification implique la disparition du graphe de corrélation en temps réel et surtout que la méthodologie d'utilisation a un peu changé.

Effectuer une simulation FitOO

Toutes les cellules à modifier sont écrites en rouge. Ne pas toucher aux autres.

L'utilisation de FitOO se résume en trois étapes :

Définition de l'équation

L'équation est définie dans Feuille FitOO, Cellule B4.
Pour des raisons de rapidité (discutables ?), j'ai pris le parti de ne pas me servir d'une cellule Calc pour évaluer la fonction chaque fois que nécessaire mais plutôt de créer dynamiquement une fonction dans la macro, évitant ainsi des accès incessant à la feuille de calcul.
C'est pourquoi j'ai mis en place deux règles d'écriture de la fonction :

Ainsi FitOO gère des équations de dimensions quelconques vis à vis des inconnues X.
Ainsi, la fonction donnée en exemple &1*#1*cos(#2+&2)+&3 correspond en fait à Y=a X1 Cos(X2+b)+c
Les paramètres recherchés étant a, b et c.

Cette écriture permet d'avoir donc autant de paramètres que l'on veut. Ils ont été limités toutefois à 99 ce qui devrait être largement suffisant. De même, le nombre de variables X est lui aussi limité à 99.
Une fois l'équation rentrée, il est nécessaire de la valider et de construire les colonnes de travail.
Cela se fait donc en cliquant sur le bouton Initialise.
La macro associée va également déterminer le nombre de paramètres de l'équation (Cellule B10) et construire la liste à remplir pour le jeu inital (cellule B16 et suivantes).

Alimentation des points expérimentaux

La procédure précédente a nettoyé la feuille DATAS et préparé autant de colonnes que d'inconnues X détectées dans l'équation.
L'utilisateur doit donc remplir ces colonnes issues de points expérimentaux ainsi que la colonne Y.
Il est à noter que les données pour l'équation d'exemple fournie par FitOO se situent en colonne AA de cette feuille. Il suffit de les copier et les coller au bon endroit.

Résolution

Avant de lancer la résolution, il faut spécifier obligatoirement les jeux de paramètres initials (Cellule B16 et suivantes).Un jeu de paramètre pertinent minimisera suffisament la valeur du critère en cellule D20.
Les paramètres numériques peuvent être laissés tels quels dans un premier temps (Cellules B13 et B14). Le critère de convergence reporté dans le diagramme du même nom est la somme des différences au carré entre les points experimentaux et les valeurs calculées de la fonction. Il est à noter que ce critère n'est pas "objectif" puisqu'il n'est pas "normé" et dépend de la valeur de la fonction sur la plage d'abscisse considérée.
Une fois que tout est rempli, on peut lancer la résolution en cliquant sur Calculer.
Le diagramme de convergence est rafraîchi à chaque itération ce qui peut ralentir le processus.
Le bouton Arrêter permet de stopper le calcul après l'itération en cours.

Quelques Remarques

Il est nécessaire de faire très attention lors de la définition de la fonction pour, tant que faire se peut, assurer une solution unique au problème.
Par exemple, la fonction f(x)=(ax+b)/(cx+d) devrait être remplacer par f(x)=(a'x+b')/(c'x+1) (on a tout divisé par d) car l'algorithme risque d'osciller entre deux solutions et ainsi ne pas converger.
De même pour les fonctions trigonométriques definies à k.pi près.

Résolution de systèmes d'équations

Une des conséquences de la gestion de N dimensions de l'équation, FitOO pourra être utilisé pour résoudre des sytèmes d'équations.
L'équation théorique aura la forme générale d'une des équations du système (aX1+ bX2+cX3+d)
La colonne Y sera mise à 0.
La procédure est exactement le même que celle décrite précédemment.

Traduction

FitOO inclue désormais une gestion dynamique de la traduction des feuilles et messages. Si vous désirez rajouter une langue, il suffit simplement de remplir une colonne de la feuille "Translation" et de me renvoyer le document SXC à oooconv@free.fr.