Télécharger agregation_01.dgibi

Retour à la liste

Numérotation des lignes :

  1. ** Petit test de l'operateur AGRE : fonctions d'agregation
  2.  
  3.  
  4. ** Plusieurs listes de nombres rassemblees dans une table
  5. tl = TABL ;
  6. * une suite de nombres quelconques
  7. tl . 1 = PROG 4. 8. 15. 16. 23. 42. ;
  8. * une suite aleatoire
  9. tl . 2 = BRUI 'BLAN' 'GAUSS' 42. 12. 60 ;
  10. * une suite un peu singuliere
  11. tl . 3 = PROG 50*3. 100. ;
  12.  
  13.  
  14. ** Pour chaque liste, on calcule l'ensemble des fonctions d'agregation disponibles
  15. REPE bl (DIME tl) ;
  16. l1 = tl . &bl ;
  17. n1 = DIME l1 ;
  18. min = MINI l1 ;
  19. max = MAXI l1 ;
  20. * Parametre pour les fonctions
  21. p = 4. ;
  22. np = ENTI p ;
  23. * Calcul des fonctions
  24. som = AGRE 'SOMM' l1 ;
  25. pro = AGRE 'PROD' l1 ;
  26. moy = AGRE 'MOYE' l1 ;
  27. moh = AGRE 'MOHA' l1 ;
  28. mog = AGRE 'MOGE' l1 ;
  29. var = AGRE 'VARI' l1 ;
  30. sig = AGRE 'ECTY' l1 ;
  31. asy = AGRE 'ASYM' l1 ;
  32. kur = AGRE 'KURT' l1 ;
  33. med = AGRE 'MEDI' l1 ;
  34. mop = AGRE 'PMOM' l1 p ;
  35. pmo = AGRE 'PMOY' l1 p 'ROBU' ;
  36. pno = AGRE 'PNOR' l1 p 'ROBU' ;
  37. leh = AGRE 'LEHM' l1 p 'ROBU' ;
  38. ks1 = AGRE 'KSL' l1 p 'ROBU' ;
  39. ks2 = AGRE 'KSU' l1 p 'ROBU' ;
  40. bol = AGRE 'BOLT' l1 p 'ROBU' ;
  41. lagre = PROG som pro moy moh mog var sig asy kur med mop pmo pno leh ks1 ks2 bol ;
  42. lfonc = MOTS 'Somme' 'Produit' 'Moyenne' 'Moyenne harm' 'Moyenne geom' 'Variance' 'Ecart type' 'Asymetrie' 'Kurtosis' 'Mediane'
  43. (CHAI 'P Moment' np /13) (CHAI 'P Moyenne' np /13) (CHAI 'P Norme' np /13) (CHAI 'Lehmer' np /13)
  44. (CHAI 'KS-' np /13) (CHAI 'KS+' np /13) (CHAI 'Boltzmann' np /13) ;
  45. * Calcul en Gibiane des memes fonctions
  46. gsom = SOMM l1 ;
  47. gmoy = gsom / n1 ;
  48. gpro = 1. ;
  49. REPE b1 n1 ;
  50. x1 = EXTR l1 &b1 ;
  51. gpro = gpro * x1 ;
  52. FIN b1 ;
  53. gvar = (SOMM ((l1 - gmoy) ** 2)) / n1 ;
  54. gsig = gvar ** 0.5 ;
  55. gasy = (SOMM (((l1 - gmoy) / gsig) ** 3)) / n1 ;
  56. gkur = (SOMM (((l1 - gmoy) / gsig) ** 4)) / n1 ;
  57. l2 = ORDO l1 ;
  58. SI (EGA (@MOD n1 2) 0) ;
  59. n12 = n1 / 2 ;
  60. gmed = ((EXTR l2 n12) + (EXTR l2 (n12 + 1))) / 2. ;
  61. SINON ;
  62. gmed = EXTR l2 ((n1 / 2) + 1) ;
  63. FINSI ;
  64. gmoh = n1 / (SOMM (1. / l1)) ;
  65. gmog = gpro ** (1. / n1) ;
  66. gmop = SOMM (l1 ** p) ;
  67. gpmo = (gmop / n1) ** (1. / p) ;
  68. gpno = (SOMM ((ABS l1) ** p)) ** (1. / p) ;
  69. gleh = gmop / (SOMM (l1 ** (p - 1))) ;
  70. gks1 = (LOG ((SOMM (EXP (p * l1))) / n1)) / p ;
  71. gks2 = (LOG (SOMM (EXP (p * l1)))) / p ;
  72. gbol = (SOMM (l1 * (EXP (p * l1)))) / (SOMM (EXP (p * l1))) ;
  73. lgibi = PROG gsom gpro gmoy gmoh gmog gvar gsig gasy gkur gmed gmop gpmo gpno gleh gks1 gks2 gbol ;
  74. * Comparaison des valeurs
  75. OPTI 'ECHO' 0 ;
  76. SAUT 2 'LIGNE' ;
  77. MESS 'Valeurs de la liste:' ;
  78. LIST l1 ;
  79. MESS ;
  80. MESS '------------------------' ;
  81. MESS ' Minimum :' min ;
  82. MESS ' Maximum :' max ;
  83. MESS ;
  84. MESS ' Fonction (P) | Operateur AGRE | Calcul Gibiane | Ecart relatif' ;
  85. MESS '--------------------------------------------------------------------' ;
  86. lerr = PROG ;
  87. REPE b1 (DIME lagre) ;
  88. fagr = EXTR lagre &b1 ;
  89. fgib = EXTR lgibi &b1 ;
  90. err = (fagr - fgib) / fgib ;
  91. lerr = lerr ET err ;
  92. MESS ' ' (CHAI (EXTR lfonc &b1) '|' /17 fagr >2 '|' /35 fgib >2 '|' /53 err >2) ;
  93. FIN b1 ;
  94. MESS '--------------------------------------------------------------------' ;
  95. * Test d'erreur
  96. SI ((MAXI 'ABS' lerr) > 1.E-12) ;
  97. ERRE 'Probleme dans l''operateur AGRE :-(' ;
  98. FINSI ;
  99. FIN bl ;
  100.  
  101. FIN ;
  102.  
  103.  
  104.  

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