Télécharger ajuste2.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : ajuste2.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4.  
  5.  
  6. GRAPH=faux ;
  7. * EXEMPLE :
  8. *
  9. * On cherche a interpoler un nuage de points avec la fonction
  10. * suivante:
  11. * the given sets of points ( x , f(x)) must be adjusted with
  12. * a function as follows :
  13. *
  14. * f(x) =( A * (x**B ))+ (C * sin(D*x + B)) + (E * x)
  15. *
  16. * les deux parametres p1 et p2 non linéaires sont B et D.
  17. * The two non linear parameters p1 and p2 are B and D.
  18. *
  19. * les autres A,C,E sont linéaires. On peut donc mettre la
  20. * fonction sous la forme :
  21. * A,C,E are linear parameters. It is possible to write the function
  22. * in the following way :
  23. *
  24. * f(x)= A*f1(x) +C*f2(x)+E*f3(x)
  25. *
  26. * PROCEDURE : FCT
  27. *
  28. DEBPROC FCT xtab*'TABLE' p*'LISTREEL' ;
  29. tab1 = 'TABLE';
  30. tab1 . 'F' = 'TABLE';
  31. x = xtab . 1;
  32. n = 'DIME' x;
  33. * fonction f1
  34. tab1 . 'F' . 1 = x**('EXTR' p 1);
  35. * fonction f2
  36. aa = ((('EXTR' p 2)*x) + ('PROG' n*('EXTR' p 1)))*180. / PI;
  37. tab1 . 'F' . 2 = 'SIN' aa ;
  38. * fonction f3
  39. tab1 . 'F' . 3 = x;
  40. * useless to give fonction g
  41. * tab1 . 'G' = 'PROG' N*0;
  42. FINPROC tab1;
  43.  
  44. * PROCEDURE : DERI
  45. *
  46. DEBPROC DERI xtab*'TABLE' p*'LISTREEL';
  47.  
  48. tab = 'TABLE' ;
  49. tab . 'F' = 'TABLE' ;
  50. tab . 'F' . 1 = 'TABLE' ;
  51. tab . 'F' . 2 = 'TABLE' ;
  52. x = xtab . 1;
  53. N = DIME x;
  54. * fonction df1/dp1
  55. tab . 'F' . 1 . 1 = ('LOG' x)*(x**('EXTR' p 1));
  56. * fonction df2/dp1
  57. aa = ((('EXTR' p 2)*x) + ('PROG' n*('EXTR' p 1)))*180. / PI;
  58. tab . 'F' . 1 . 2 = 'COS' aa ;
  59. * fonction df3/dp1
  60. tab . 'F' . 1 . 3 = 'PROG' N*0;
  61.  
  62. * fonction df1/dp2
  63. tab . 'F' . 2 . 1 = 'PROG' N*0;
  64. * fonction df2/dp2
  65. tab . 'F' . 2 . 2 = x * ('COS' aa);
  66. * fonction df3/dp2
  67. tab . 'F' . 2 . 3 = 'PROG' N*0;
  68.  
  69. * useless to give dg/dpj
  70. * tab . 'G' = 'TABLE' ;
  71. * tab . 'G' . 1 = 'PROG' N*0;
  72. * tab . 'G' . 2 = 'PROG' N*0;
  73.  
  74. FINPROC tab;
  75.  
  76. * Programme principal
  77. *
  78. * définition de la fonction pour le calcul des couples x,F(x)
  79. x = prog 0.01 pas 0.01 1.;
  80.  
  81. * posons A = 1 ; B=0.5 ; C=1; D=1; E=3.14159...(pi)
  82. af1 = x ** 0.5;
  83. aa = (X + ('PROG' 100*0.5))* 180./PI;
  84. cf2 = 'SIN' aa;
  85. ef3 = pi * x;
  86. y = af1 + cf2 + ef3;
  87.  
  88. k=2;
  89. l=3;
  90. xtab = 'TABLE';
  91. xtab . 1 = x;
  92. tab1=table;
  93. tab1.'X' = xtab;
  94. tab1.'F' = y;
  95. tab1.'K' = k;
  96. tab1.'L' = l;
  97. tab1.'PMIN' = 'PROG' K*0;
  98. tab1.'PMAX' = 'PROG' K*10;
  99. tab1.'POIDS' = 'PROG' 0.75 'PAS' 0.01 1.74;
  100.  
  101. q p = AJUSTE tab1;
  102.  
  103. * recalcul de F(x) pour comparaison avec courbe initiale
  104. * computation of f(x) for comparison with initial curve
  105. n = DIME x;
  106. B = 'EXTR' p 1;
  107. D = 'EXTR' p 2;
  108. A = 'EXTR' q 1;
  109. C = 'EXTR' q 2;
  110. E = 'EXTR' q 3;
  111. f1 = A * (x **B);
  112. aa = ((D*x) + ('PROG' N*B)) * 180. / PI;
  113. f2 = C * ('SIN' aa);
  114. f3 = E * x;
  115. y1 = f1 + f2 + f3;
  116.  
  117. * Tracé
  118. ev = 'EVOL' 'ROUGE' 'MANU' 'X' x 'Y' y ;
  119. ev1 = 'EVOL' 'BLEU' 'MANU' 'X' x 'Y1' y1;
  120. evt = ev 'ET' ev1;
  121. 'SI' (GRAPH) ;
  122. 'DESSIN' evt;
  123. 'FINSI' ;
  124.  
  125. * Test d'efficacité
  126. err = 'SOMM' ('ABS' (y1 - y)) ;
  127. 'SI' (err > 1.d-5) ;
  128. 'ERREUR' 5 ;
  129. 'SINON' ;
  130. 'ERREUR' 0 ;
  131. 'FINSI' ;
  132.  
  133. 'FIN' ;
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  

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