Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include "f.h"
  5. #define MAXIT 1234500
  6.  
  7. double f(double x)
  8. {
  9. return x*x;
  10. }
  11.  
  12. double solve(double (*f)(double x), double a,double b, double eps,double*r)
  13. {
  14. double h=b-a,Sn,S2n;
  15. int i,n=2,k;
  16. double sum1=0,sum2,fa=f(a),fb=f(b);
  17. sum2=f(a+h);
  18. Sn=0.5*h*(fa+fb);
  19. for(i=1;i<n;i++)
  20. {
  21. sum1+=f(a+(2*i)*h);
  22. sum2+=f(a+(2*i+1)*h);
  23. }
  24. Sn=(h/3)*(fa+2*sum1+4*sum2+fb);
  25.  
  26.  
  27. for (k=1; k<MAXIT;k++)
  28. {
  29. sum2=0;
  30. h/=2;
  31. for(i=0;i<n;i++)
  32. {
  33. sum2+=h*f(a+(2*i+1)*h);
  34. }
  35.  
  36. S2n=1/2*Sn+sum2;
  37. n*=2;
  38. printf("S2n=%lf\n",S2n);
  39. if(fabs(S2n-Sn)<eps)
  40. {
  41. // printf("N=%d\n",n);
  42. *r=S2n; return 1;
  43. }
  44. Sn=S2n;
  45. }
  46. if( k==MAXIT)
  47. return -1;
  48. return 0;
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement