Télécharger mma_06.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : mma_06.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5. ************************************************************************
  6. * Test de la procedure MOCA_MMA et de l'operateur MMA *
  7. * Application au fit d'une fonction afin de *
  8. * passer au mieux par une serie de points *
  9. * *
  10. * On cherche a optimiser les parametres w=(a,b,c,d) de la fonction : *
  11. * h(x,w) = a * (log ((b*x) + c)) + (exp (d*x)) *
  12. * passant au mieux par une serie de P points (Xi ; Hi) connus *
  13. * *
  14. ************************************************************************
  15.  
  16. * Options
  17. OPTI 'ECHO' 0 ;
  18. itrac = FAUX ;
  19.  
  20. * Procedure pour calculer la fonction h(w,X) ainsi que les
  21. * derivees partielles de h selon chaque composante de w (en option)
  22. DEBP H x*'LISTREEL' w*'LISTREEL' mot1/'MOT' ;
  23. ideri = VRAI ;
  24. a = EXTR w 1 ;
  25. b = EXTR w 2 ;
  26. c = EXTR w 3 ;
  27. d = EXTR w 4 ;
  28. h0 = (a * (LOG ((b * x) + c))) + (EXP (d * x)) ;
  29. SI (EGA (TYPE mot1) 'MOT') ;
  30. SI (EGA mot1 'VISU') ;
  31. ideri = FAUX ;
  32. FINSI ;
  33. FINSI ;
  34. SI ideri ;
  35. dval = ENUM ;
  36. REPE b1 (DIME x) ;
  37. x1 = EXTR x &b1 ;
  38. dhdw = PROG (LOG ((b * x1) + c)) ((a * x1) / ((b * x1) + c))
  39. (a / ((b * x1) + c)) (x1 * (EXP (d * x1))) ;
  40. dval = dval ET dhdw ;
  41. FIN b1 ;
  42. RESP h0 dval ;
  43. SINON ;
  44. RESP h0 ;
  45. FINSI ;
  46. FINP ;
  47.  
  48. * Choix des points connus (Xi,Hi)
  49. * ici on prend des points definits exactement par la fonction h
  50. * avec comme parametres wref
  51. wref = PROG 3. 2. 1. 0.1 ;
  52. xmes = PROG 0.2 'PAS' 0.1 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ;
  53. hmes = H xmes wref 'VISU' ;
  54.  
  55. * Valeurs initiales w0
  56. w0 = PROG 0.1 0.1 0.1 0.1 ;
  57.  
  58. * Optimisation
  59. SI itrac ;
  60. xplot = PROG 0.01 'PAS' 0.01 14. ;
  61. w mse lw = MOCA_MMA 'X0' w0 'ABSC' xmes 'ORDO' hmes 'PROC' (MOT 'H')
  62. 'XMIN' (PROG 4*0.001) 'XMAX' (PROG 4*10.) 'ECHO' 2
  63. 'VISU' xplot ;
  64. SINON ;
  65. w mse lw = MOCA_MMA 'X0' w0 'ABSC' xmes 'ORDO' hmes 'PROC' (MOT 'H')
  66. 'XMIN' (PROG 4*0.001) 'XMAX' (PROG 4*10.) 'ECHO' 2 ;
  67. FINSI ;
  68.  
  69. * Historique des parametres (au cours de l'optimisation)
  70. SI itrac ;
  71. lahist = PROG ;
  72. lbhist = PROG ;
  73. lchist = PROG ;
  74. ldhist = PROG ;
  75. lwa = EXTR lw 1 ;
  76. REPE b1 (DIME lw) ;
  77. lw1 = EXTR lw &b1 ;
  78. lahist = lahist ET (EXTR lw1 1) ;
  79. lbhist = lbhist ET (EXTR lw1 2) ;
  80. lchist = lchist ET (EXTR lw1 3) ;
  81. ldhist = ldhist ET (EXTR lw1 4) ;
  82. FIN b1 ;
  83. SI itrac ;
  84. nit = (DIME lahist) - 1 ;
  85. lit = LECT 0 'PAS' 1 nit ;
  86. evmse = EVOL 'ROUG' 'MANU' 'Iteration' lit 'Erreur S(x)' mse ;
  87. DESS evmse 'TITR' 'Erreur quadratique VS Iterations' ;
  88. aref = EXTR wref 1 ;
  89. bref = EXTR wref 2 ;
  90. cref = EXTR wref 3 ;
  91. dref = EXTR wref 4 ;
  92. eva = EVOL 'ROUG' 'MANU' 'LEGE' 'a calcule' 'Iteration' lit 'w' lahist ;
  93. evb = EVOL 'ORAN' 'MANU' 'LEGE' 'b calcule' 'Iteration' lit 'w' lbhist ;
  94. evc = EVOL 'VERT' 'MANU' 'LEGE' 'c calcule' 'Iteration' lit 'w' lchist ;
  95. evd = EVOL 'BLEU' 'MANU' 'LEGE' 'd calcule' 'Iteration' lit 'w' ldhist ;
  96. evar = EVOL 'ROUG' 'MANU' 'LEGE' 'a ref.' 'STYL' 'TIRR' 'Iteration' (PROG 0. nit)
  97. 'Parametres' (PROG aref aref) ;
  98. evbr = EVOL 'ORAN' 'MANU' 'LEGE' 'b ref.' 'STYL' 'TIRR' 'Iteration' (PROG 0. nit)
  99. 'Parametres' (PROG bref bref) ;
  100. evcr = EVOL 'VERT' 'MANU' 'LEGE' 'c ref.' 'STYL' 'TIRR' 'Iteration' (PROG 0. nit)
  101. 'Parametres' (PROG cref cref) ;
  102. evdr = EVOL 'BLEU' 'MANU' 'LEGE' 'd ref.' 'STYL' 'TIRR' 'Iteration' (PROG 0. nit)
  103. 'Parametres' (PROG dref dref) ;
  104. DESS (eva ET evar ET evb ET evbr ET evc ET evcr ET evd ET evdr)
  105. 'TITR' 'Valeurs VS Iterations' 'LEGE' ;
  106. FINSI ;
  107. FINSI ;
  108.  
  109. * Bilan et verification des parametres finaux
  110. err1 = EXTR mse (DIME mse) ;
  111. err2 = MAXI 'ABS' ((w - wref) / wref) ;
  112. MESS 'Erreur quadratique finale =' err1 ;
  113. MESS 'Erreur sur les parametres finaux =' err2 ;
  114. ierr = (err1 > 1.E-10) OU (err2 > 2.E-6) ;
  115. SI ierr ;
  116. ERRE 'Erreur dans l''optimisation' ;
  117. FINSI ;
  118. SAUT 2 'LIGNE' ;
  119.  
  120. * Fin du cas test
  121. SI (NON ierr) ;
  122. MESS 'Cas test passe avec succes !' ;
  123. FINSI ;
  124.  
  125.  
  126. FIN ;
  127.  
  128.  
  129.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales