📄 tixingongsi.txt
字号:
这样也可以的:
double integral(double (*f)(double x),double start,double end,int n)
{
double h,al,be,sum;
int i,m;
if(n<=0||end-start<=0.0)
{ printf("Start is larger than end , or n<=0 in integral!");
exit(1); }
h=(end-start)/n;
al=start+h*0.4226497308;
be=start+h*1.577350269;
sum=(*f)(al)+(*f)(be);
m=n/2-1;
for(i=1;i<=m;i++)
{
al=al+2*h;
be=be+2*h;
sum=sum+(*f)(al)+(*f)(be);
}
sum=sum*sum;
return sum;
}
函数名:integral
功能:梯形法求曲线积分
用法:double _integral2(double (*f)(double x),double start,double end,int div)
参数:f:函数名,start,end:左右区间,div:等分区间的数目
返回:积分值
include<iostream.h>
#include<iomanip.h>
#include<math.h>
double f(double x);
void main()
{
int n=1;
double a=0,b=1;
double h,Tn,T2n,In,I2n;
const double eps=1e-8;
h=b-a;
T2n=I2n=h*(f(a)+f(b))/2;
In=0;
while(fabs(I2n-In)>=eps) //求积分
{
Tn=T2n;
In=I2n;
double sigma=0.0;
for(int k=0;k<n;k++)
{
double x=a+(k+0.5)*h;
sigma+=f(x);
}
T2n=(Tn+h*sigma)/2.0; //变步长梯形
I2n=(4*T2n-Tn); //辛普生公式
n*=2; //划分
h/=2;
}
cout<<"the intergral of f(x) from"
<<a<<"to"<<b<<"is\n"
<<setiosflags(ios::fixed)
<<setprecision(8)
<<setw(10)<<I2n<<endl;
}
double f(double x)
{
return exp(x)/(1+x*x);
}
梯形公式计算面积近似值:In=Tn=h/2(f(a)+f(b))
变长梯形面积:T2n=Tn/2+h/2∑f(Xk+h/2)
辛普生面积:I2n=(4T2n-Tn)/3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -