* fichier optimise1.dgibi * section : mathematique, optimisation *----------------------------------------------------------------------* * O P T I M I S E 1 . D G I B I * *----------------------------------------------------------------------* * Objet : * ------- * * Exemple d'utilisation de la procedure OPTIMISE avec l'identification * des coefficients d'un polynome d'ordre 2. * * La "simulation" est dans ce cas une fonction polynomiale, realisee * par la procedure Gibiane "poly", definie en debut de fichier. * * Puis, on definit une solution de reference a partir d'un jeu de * coefficients donne. * * La procedure OPTIMISE est ensuite lancee avec un autre jeu de * coefficents. L'objectif est de determiner un jeu de coefficients qui * donne une solution egale a la solution de reference a la precision * pres. Les methodes mises en oeuvre ne garantissent pas que les 2 jeux * de coefficients (reference et donnes par OPTIMISE) sont identiques. * * La procedure OPTIMISE est lancee 2 fois : * - une 1ere fois pour tester le fonctionnement de l'algorithme de * Levenberg-Marquardt ; * - une 2eme fois pour tester la methode des moindres carres. * * Description : * ------------- * * Type de calcul : identification des coefficients d'un polynome * Mode de calcul : sans objet * Type d'element : sans objet * Chargement : sans objet * *----------------------------------------------------------------------* * * Pour dessins, mettre ig1 a VRAI : ig1 = faux ; *----------------- Definition d'une fonction polynome -----------------* * Procedure Gibiane de simulation : debp poly lree0*listreel lree1*listreel ; lx1 = lree0 ; lx2 = lx1 * lx1 ; lree2 = (a0 * lx0) + (a1 * lx1) + (a2 * lx2) ; finp lree2 ; *------------------------ Solution de reference -----------------------* lsref1 = poly lxref1 lpref1 ; * Affichage : si ig1 ; fins ; *-------------------------- Appel a OPTIMISE --------------------------* *------------------------- Levenberg-Marquardt ------------------------* * Table d'entrees de la procedure OPTIMISE : tab1 = table ; tab1 . points_de_mesure = lxref1 ; tab1 . valeurs_objectif = lsref1 ; tab1 . precision = 1.e-5 ; tab1 . dessin_evol = ig1 ; * Appel a OPTIMISE : tab2 = optimise tab1 ; * Affichage comparaison solution apres optimisation / reference : si ig1 ; fins ; *----------------------- Validation optimisation ----------------------* * Critere : racine carre de la somme des ecarts au carre, * divisee par norme euclidienne du vecteur solution * Test de validation : si (err1 '>' (tab1 . precision)) ; fins ; *-------------------------- Appel a OPTIMISE --------------------------* *--------------------------- MOINDRE_CARRES ---------------------------* * Appel a l'option : tab2 = optimise tab1 ; * Affichage comparaison solution apres optimisation / reference : si ig1 ; fins ; *----------------------- Validation optimisation ----------------------* * Critere : racine carre de la somme des ecarts au carre, * divisee par norme euclidienne du vecteur solution * Test de validation : si (err2 '>' (tab1 . precision)) ; fins ; *---------------- F I N O P T I M I S E 1 . D G I B I ---------------* fin ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales