1 : $$$$ AJUSTE NOTICE CHAT 11/09/12 21:15:05 7124 2 : DATE 11/09/12 3 : 4 : procedure AJUSTE Voir aussi : MOCA LEVM 5 : ---------------- 6 : Q P = AJUSTE TAB1 ; 7 : 8 : TAB1.'X' (TAB1.'PMIN') 9 : TAB1.'F' (TAB1.'PMAX') 10 : TAB1.'K' (TAB1.'PRECISION') 11 : TAB1.'L' (TAB1.'MXTER') 12 : (TAB1.'POIDS') (TAB1.'MESSAGES') 13 : (TAB1.'IMPRESSION') 14 : 15 : 16 : 17 : Objet : 18 : -------- 19 : 20 : Soit une fonction F(x,y,z...,p1,..,pk) mise sous la forme : 21 : 22 : F(x,p) = q1 * f1(x,y,z,.,p1,..,pk) 23 : + q2 * f2(x,y,z,.,p1,..,pk) 24 : + ... 25 : + ql * fl(x,y,z,.,p1,..,pk) 26 : 27 : + g(x,y,z,.,p1,..,pk) 28 : 29 : qi (i=1,l) sont les parametres lineaires. 30 : pj (j=1,k) sont les parametres non lineaires. 31 : 32 : La procedure ajuste ces differents parametres afin que la 33 : fonction passe au mieux dans une serie de N couples 34 : 35 : ( (x,y,z,...) ; Fdi(x,y,z,..) ) 36 : 37 : fournie par l' utilisateur. 38 : 39 : En fait, on cherche a minimiser la fonction : 40 : 41 : G = [ (poids(i) * ( F(x,p) - Fdi(x,y,z..) )**2 ] 42 : somme sur i=1,N 43 : 44 : Donnees : 45 : ---------- 46 : 47 : TAB1.'X' : TABLE indicee par des entiers i=1,N qui contient 48 : le(s) LISTREEL(s) x,y,z,..... 49 : 50 : TAB1.'F' : valeurs a caler F(x,y,z...) (LISTREEL). 51 : 52 : TAB1.'K' : nombre de parametres non lineaires (ENTIER). 53 : 54 : TAB1.'L' : nombre de parametres lineaires (ENTIER). 55 : 56 : TAB1.'MESSAGES' : niveau de message (defaut=0 : rien) 57 : 1 -> resultats, 2 -> iterations 58 : 59 : TAB1.'IMPRESSION' : frequence des impressions si MESSAGES=2 60 : (type ENTIER, defaut : toutes les 20 iterations). 61 : 62 : 63 : TAB1.'PMIN' : valeurs minimum de p 64 : (LISTREEL, obligatoire si K > 0). 65 : 66 : TAB1.'PMAX' : valeurs maximum de p 67 : (LISTREEL, obligatoire si K > 0). 68 : 69 : TAB1.'PRECISION' : (LISTREEL, utile si K>0) : 70 : critere de precision de convergence pour les K 71 : parametres non lineaires (defaut 1.e-7) 72 : 73 : TAB1.'MXTER' : nombre maximum d'iterations 74 : (ENTIER, utile si K>1, defaut=100). 75 : 76 : TAB1.'POIDS' : valeurs de poids a affecter a chacun des points de 77 : mesure fournis. (LISTREEL, defaut=1.) 78 : 79 : TAB1.'NOM_FCT': nom de la procedure qui calcule les fi(x,p) et g(x,p) 80 : (MOT, defaut='FCT'). 81 : 82 : TAB1.'NOM_DERI': nom de la procedure qui calcule les derivees de 83 : fi(x,p) et g(x,p) par rapport aux p_j 84 : (MOT, defaut='DERI'). 85 : 86 : Sortie : 87 : -------- 88 : Q et P sont des LISTREELs contenant les parametres qi et pi. 89 : 90 : 91 : Utilisation : 92 : -------------- 93 : 94 : Deux procedures sont a creer par l'utilisateur. 95 : 96 : - Procedure FCT: 97 : 98 : Son but est de calculer la fonction a ajuster connaissant les 99 : valeurs des abscisses x,y,. et ceci pour un jeu de parametres 100 : p donne. En fait, on demande de calculer les fonctions 101 : f1,f2,...,fl et la fonction g. 102 : Pour chaque fonction fi, la procedure calcule autant de 103 : valeurs qu'il y a de valeurs dans x,y,z .. Le resultat doit 104 : etre mis sous la forme d'un objet TABLE. 105 : 106 : tbfonc = FCT xtab p; 107 : 108 : En argument FCT recevra la table TAB1.'X', ainsi que le 109 : LISTREEL p qui contient les valeurs courantes de P. 110 : 111 : La table doit se mettre sous la forme suivante: 112 : 113 : tbfonc.'F'.i = listreel des valeurs de fi 114 : 115 : tbfonc.'G' = listreel des valeurs de g 116 : 117 : Les parametres lineaires qi n'ont pas a etre ecrit. 118 : 119 : - Procedure DERI: 120 : 121 : Elle construit une table de listreels contenant les valeurs des 122 : fonctions f1,f2,...,fl et g derivees par rapport aux parametres 123 : non lineaires pj pour chaque valeur de x,y,z.. et de p. 124 : 125 : tbderi = DERI xtab p; 126 : 127 : En argument DERI recevra la table TAB1.'X', ainsi que le 128 : LISTREEL p. 129 : 130 : La table doit etre cree de la façon suivante: 131 : 132 : tbderi.'F'. j . i = listreel des valeurs de dfi/dpj 133 : 134 : tbderi.'G'. j = listreel des valeurs de dg/dpj 135 : 136 : 137 : Remarques : 138 : ----------- 139 : 140 : 141 : - Les abscisses etant dans un LISTRÉEL, il faut que les 142 : constantes soient exprimees, dans les procedures FCT et DERI, 143 : sous forme de LISTRÉEL. 144 : 145 : ex: f1(x)=x+1 donne f1(x)=x+(prog N*1); 146 : N etant la dimension de x. 147 : 148 : - Attention, les fonctions sinusoidales ont pour operandes des 149 : degres. 150 : 151 : - on peut creer des procedures de nom differents de ceux par 152 : defaut en completant les indices 'NOM_FCT' et 'NOM_DERI'. Bien 153 : faire preceder le nom de la procedure par l'operateur 'MOT'. 154 : 155 : - exemples dans : ajuste1.dgibi ajuste2.dgibi identifi.dgibi 156 : 157 : 158 : 159 : 160 : 161 :
© Cast3M 2003 - Tous droits réservés.
Mentions légales