* fichier : ajuste1.dgibi graph = faux; option echo 0; * fichier : ajuste.;dgibi * exemple d'utilisation de la procedure AJUSTE * on cherche a identifier les parametres a,b,c,d de la fonctions * y = a * (log ( (b*x) + c) ) + (exp (d*x)) * * on part d'un jeu de couple yi = f(xi) * qui sont calcules pour a = 3 b=2 c=1 d=0.1 *les valeurs de xi sont : * 0.2 pas 0.1 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. * debproc FCT xtab*'TABLE' p*LISTREEL ; x = xtab . 1; n=dime x; tbfonc = 'TABLE'; tbfonc.'F' = 'TABLE'; b = extr p 1; c = extr p 2; d = extr p 3; progc = prog n * c; tbfonc.'F' . 1 = log ( (b*x) + progc); tbfonc.'G' = exp (d*x); finproc tbfonc; debproc DERI xtab*'TABLE' p*LISTREEL; x = xtab . 1; n = dime x; tbderi = 'TABLE'; tbderi.'F' = table; tbderi.'G' = table; tbderi.'F' . 1 = 'TABLE'; tbderi.'F' . 2 = 'TABLE'; tbderi.'F' . 3 = 'TABLE'; b = extr p 1; c = extr p 2; d = extr p 3; progc = prog n * c; tbderi . 'F' . 1 . 1 = x / ((b*x)+progc); tbderi . 'F' . 2 . 1 = (prog n*1.) / ( (b*x) + progc); tbderi . 'F' . 3 . 1 = prog n*0.; tbderi . 'G' . 1 = prog n*0; tbderi . 'G' . 2 = prog n*0; tbderi . 'G' . 3 = x * (exp (d*x) ); finproc tbderi; debproc fonc x*LISTREEL; n = dime x; y = 3 * (log ( (2.*x) + (prog n*1.)) ) + (exp (0.1*x)); finproc y; tab1 = table; x = prog 0.2 pas 0.1 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ; y = fonc x; xtab=table; xtab . 1=x; tab1.'X'=xtab; tab1.'F'=y; tab1.'K'=3; tab1.'L'=1; pmin=prog 3*0.001; pmax=prog 3*10.; prc=prog 3*0.0001; tab1.'MXTER'=150; tab1.'PMIN'=pmin; tab1.'PMAX'=pmax; tab1.'PRECISION'=prc; q p=ajuste tab1 ; n=dime x; b = extr p 1; c = extr p 2; d = extr p 3; a = extr q 1; mess ' a = ' a ' pour 3. attendu'; mess ' b = ' b ' pour 2. attendu'; mess ' c = ' c ' pour 1. attendu'; mess ' d = ' d ' pour 0.1 attendu'; y1 = a * (log ( (b*x) + (prog n*c)) ) + (exp (d*x)); ev = evol roug manu 'X' x 'Y' y ; era = abs (( 3. - a ) / 3.); erb = abs (( 2. - b ) / 2.); erc = abs (( 1. - c ) / 1.); erd = abs (( 0.1 - d ) / 0.1); erma = maxi ( prog era erb erc erd); si (erma > 0.03) ; message ' erreur maxi ' erma ' valeur test 0.03'; erreur 5; sinon; 'ERREUR' 0 ; finsi; ev1 = evol bleu manu 'X' x 'Y1' y1; si graph; dess(ev et ev1); finsi; fin;
© Cast3M 2003 - All rights reserved.
Disclaimer