* * minimisation d'une fonction sinusoidale... * P.A. * * * quelques exemples * f/file 99 histo.ps meta 99 -111 exec do 2 100 wait exec do 3 100 wait exec do 8 100 wait exec do 25 100 wait exec do 100 100 close 99 return macro do np np2 * * genere np points "experimentaux" * plot les points experimentaux * genere np2 parametres d'entree possibles entre 0 et 10 pour le fit * fait np2 fits des points experimentaux * plot la derniere sinusoide trouvee et imprime la valeur finale du parametre * plot la valeur des parametres trouves en fonction des parametres d'entree * * NB : tres souvent MINUIT n'arrive pas a converger * et la valeur finale = valeur d'entree * opt liny ve/del * exec xy [np] zone 1 2 exec plotxy [np] ve/cr par([np2]) r ve/cr er([np2]) r [np2]*0. ve/cr conv([np2]) r ve/cr errconv([np2]) r ve/cr step(1) r 20 ve/cr pa(1) r sigma par=rndm(array([np2]))*10 do i=1,[np2] exec fitxy [i] enddo ve/pr pa(1) fun/pl fun.f 0 10 s fun/pl fun.f 0 10 s fun/pl fun.f 0 10 s fun/pl fun.f 0 10 s fun/pl fun.f 0 10 s fun/pl fun.f 0 10 s opt logy null 0 10 .11 500 *hplot/err par conv er errconv [np2] 25 .1 hplot/symb par conv [np2] 25 .1 hplot/atit 'omega in' 'omega out' prim/dline 0.5 10 1 1 prim/dline 1.5 2.5 2 2 prim/dline 2.5 3.5 3 3 prim/dline 3.5 4.5 4 4 *prim/dline 4.5 5.5 5 5 *prim/dline 5.5 6.5 6 6 *prim/dline 6.5 7.5 7 7 *prim/dline 7.5 8.5 8 8 *prim/dline 8.5 9.5 9 9 return macro xy n * * calcule la position (x,y) des n point experimentaux * ve/cr x([n]) r ve/cr y([n]) r ve/cr ex([n]) r [n]*0 ve/cr ey([n]) r do i=1,[n] si rat=6.2832*[i]/[n] si rat2=sin(rat) ve/in x([i]) rat ve/in y([i]) rat2 ve/in ey([i]) .005 enddo return macro plotxy n * * plot les n points "experimentaux" * null 0 6.4 -1.1 1.1 hplot/err x y ex ey [n] return macro fitxy m * * fit les points avec le m-ieme parametre * enregistre le resultat dans conv(m) * ve/del pa ve/cr pa(1) r par([m]) ve/cr errpa(1) r ve/cr pmin(1) r ve/cr pmax(1) r ve/fit x y ey fun.f 'nq' 1 pa step pmin pmax errpa ve/in conv([m]) pa(1) ve/in errconv([m]) errpa(1) ve/del errpa ve/del pmin ve/del pmax return