Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include "f.h"
- #define MAXIT 1234500
- double f(double x)
- {
- return x*x;
- }
- double solve(double (*f)(double x), double a,double b, double eps,double*r)
- {
- double h=b-a,Sn,S2n;
- int i,n=2,k;
- double sum1=0,sum2,fa=f(a),fb=f(b);
- sum2=f(a+h);
- Sn=0.5*h*(fa+fb);
- for(i=1;i<n;i++)
- {
- sum1+=f(a+(2*i)*h);
- sum2+=f(a+(2*i+1)*h);
- }
- Sn=(h/3)*(fa+2*sum1+4*sum2+fb);
- for (k=1; k<MAXIT;k++)
- {
- sum2=0;
- h/=2;
- for(i=0;i<n;i++)
- {
- sum2+=h*f(a+(2*i+1)*h);
- }
- S2n=1/2*Sn+sum2;
- n*=2;
- printf("S2n=%lf\n",S2n);
- if(fabs(S2n-Sn)<eps)
- {
- // printf("N=%d\n",n);
- *r=S2n; return 1;
- }
- Sn=S2n;
- }
- if( k==MAXIT)
- return -1;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement