home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / misc / integra1_0a.lha / Integra / examples / 3test.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-23  |  1.6 KB  |  66 lines

  1. /*
  2.     Test per Int_points_p
  3.  
  4. */
  5. #include "simple.h"
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <math.h>
  9.  
  10.  
  11. int main(int argc, char *argv[])
  12. {
  13. int i, n;
  14. double d, x[1000], fx[1000], p[1000];
  15.  
  16. if (argc==1) {
  17.     printf("Quanti punti? ");
  18.     scanf("%d",&n);
  19. } else n=atoi(argv[1]);
  20. if (n>1000) n=1000;
  21. if (n<2) n=2;
  22.  
  23. printf("Test di Int_points_p per la funzione x tra 2 e 5 (finto)\n");
  24. for (i=0; i<n; i++) {
  25.     x[i] = 2 + i*(5-2)/(double)(n-1);
  26.     fx[i] = x[i];         /*  x*x*x*(x-1); */
  27. }
  28. d = Int_points_p(n, x, fx, p);
  29. printf("Esatto    : 10.5\n");
  30. printf("%-2d punti  : %.16g\n",n,d);
  31. for (i=0; i<(n>5?5:n); i++) printf("%g\t%g\n",x[i],p[i]);
  32. for (i=n-5; i<n-1; i++) printf("%g\t%g\n",x[i],p[i]);
  33.  
  34.  
  35.  
  36. printf("Test di Int_points_p per la funzione x^4-x^3 tra 2 e 5\n");
  37. x[0]=2; fx[0] = 2*2*2*(2-1);
  38. for (i=1; i<n-1; i++) {
  39.     d = ((rand()%100)/100.)*(5.-2.)*2/n;
  40.     if (d<0.001) d=0.001;
  41.     x[i] = x[i-1]+d;
  42.     if (x[i]>5) x[i] = x[i-1]+0.01;
  43.     fx[i] = x[i]*x[i]*x[i]*(x[i]-1);
  44. }
  45. x[n-1] = 5;
  46. fx[n-1] = 5*5*5*(5-1);
  47.  
  48. d = Int_points_p(n, x, fx, p);
  49. printf("Esatto    : 466.35\n");
  50. printf("%-2d punti  : %.16g\n",n,d);
  51. for (i=0; i<(n>5?5:n); i++) printf("%g\t%g\n",x[i],p[i]);
  52. for (i=n-5; i<n-1; i++) printf("%g\t%g\n",x[i],p[i]);
  53.  
  54. printf("Test di Int_points_p per la funzione x*sin(x)^2 tra 2 e 5 (finto)\n");
  55. for (i=0; i<n; i++) {
  56.     x[i] = 2 + i*(5-2)/(double)(n-1);
  57.     fx[i] = x[i]*sin(x[i])*sin(x[i]);
  58. }
  59. d = Int_points_p(n, x, fx, p);
  60. printf("Esatto    : 5.5748036294843\n");
  61. printf("%-2d punti  : %.16g\n",n,d);
  62. for (i=0; i<(n>5?5:n); i++) printf("%g\t%g\n",x[i],p[i]);
  63. for (i=n-5; i<n-1; i++) printf("%g\t%g\n",x[i],p[i]);
  64.  
  65. }
  66.