1、复合梯形公式:
#include"stdio.h"
#include"math.h"
double f1(double x)
{
return x/(4+x*x);
}
double f2(double x)
{
return sqrt(4-(sin(x)*sin(x)));
}
double Tixing(f,a,b,n)
double (*f)();
int n;
double a,b;
{
int k;
double h,x,s;
h=(b-a)/n;
x=a;
s=f(x)+f(b);
for(k=1;k<n;k++)
{
x+=h;
s+=2*f(x);
}
s*=h/2;
return s;
}
main()
{
double a,b,s1,s2;
int n;
a=3;b=6;n=8;
s1=Tixing(f1,a,b,n);
a=0;b=3.1415926/6;n=6;
s2=Tixing(f2,a,b,n);
printf("T8=%f\n",s1);
printf("T6=%f\n",s2);
}
2、复合Simpson公式:
#include"stdio.h"
#include"math.h"
double f1(double x)
{
return x/(4+x*x);
}
double f2(double x)
{
return sqrt(4-(sin(x)*sin(x)));
}
double Simpson(f,a,b,n)
double (*f)();
int n;
double a,b;
{
int k;
double h,x,s;
h=(b-a)/(2*n);
x=a;
s=f(x)-f(b);
for(k=1;k<=n;k++)
{
x+=h;s+=4*f(x);
x+=h;s+=2*f(x);
}
s*=h/3;
return s;
}
main()
{
double a,b,s1,s2;
int n;
a=3;b=6;n=4;
s1=Simpson(f1,a,b,n);
a=0;b=3.1415926/6;n=3;
s2=Simpson(f2,a,b,n);
printf("s4=%f\n",s1);
printf("s3=%f\n",s2);
}
转载于:https://blog.51cto.com/lucky/19411