Задача: Вычисление эксцесса и коэффициентов асимметрии заданной выборки
Исходник: Вычисление коэффициентов асимметрии и эксцесса заданной выборки, #1, язык: C [code #106, hits: 8560]
автор: - [добавлен: 27.04.2006]
  1. /* bs02r.f -- translated by f2c (version 20000817).
  2. You must link the resulting object file with the libraries:
  3. -lf2c -lm (in that order)
  4. */
  5.  
  6. #include "f2c.h"
  7.  
  8. /* Subroutine */ int bs02r_c(real *data, integer *n, real *skew, real *curt)
  9. {
  10. /* System generated locals */
  11. integer i__1;
  12. real r__1;
  13.  
  14. /* Builtin functions */
  15. double sqrt(doublereal);
  16.  
  17. /* Local variables */
  18. static real adev, sdev;
  19. static integer j;
  20. static real p, s, ave, var;
  21.  
  22. /* IF(N.LE.1)PAUSE 'N must be at least 2' */
  23. /* Parameter adjustments */
  24. --data;
  25.  
  26. /* Function Body */
  27. s = 0.f;
  28. i__1 = *n;
  29. for (j = 1; j <= i__1; ++j) {
  30. s += data[j];
  31. /* L11: */
  32. }
  33. ave = s / *n;
  34. adev = 0.f;
  35. var = 0.f;
  36. *skew = 0.f;
  37. *curt = 0.f;
  38. i__1 = *n;
  39. for (j = 1; j <= i__1; ++j) {
  40. s = data[j] - ave;
  41. adev += abs(s);
  42. p = s * s;
  43. var += p;
  44. p *= s;
  45. *skew += p;
  46. p *= s;
  47. *curt += p;
  48. /* L12: */
  49. }
  50. adev /= *n;
  51. var /= *n - 1;
  52. sdev = (real)sqrt(var);
  53. if (var == 0.f) {
  54. return 0;
  55. }
  56. /* Computing 3rd power */
  57. r__1 = sdev;
  58. *skew /= *n * (r__1 * (r__1 * r__1));
  59. /* Computing 2nd power */
  60. r__1 = var;
  61. *curt = *curt / (*n * (r__1 * r__1)) - 3.f;
  62. return 0;
  63. } /* bs02r_c */
Найдено на http://www.srcc.msu.su/

+добавить реализацию