📄 自动选取步长simpson公式求积分算法.cpp
字号:
//自动选取步长Simpson公式求积分算法
#include<iostream.h>
#include<math.h>
double fun(double);
void main()
{
double a,b,h,e,S1,S2,T0,T1;
int n;
cout<<"**************自动选取步长Simpson公式求积分算法**************"<<endl;
cout<<"请输入积分区间的[a,b]:"<<endl;
cout<<"a= "; cin>>a;
cout<<"b= "; cin>>b;
cout<<"请输入容许误差e:"<<endl;
cout<<"e= "; cin>>e;
h=(b-a)/2;
T1=((b-a)/6*(fun(a)+4*fun((a+b)/2)+fun(b)));
n=1;
int flag=1;
while(flag==1)
{
T0=T1; S1=0; S2=0;
for (int k=1;k<=n;k++)
{
S1+=fun(a+(2*k-1)*(b-a)/(2*n));
}
for ( k=1;k<=n-1;k+=2)
{
S2+=fun(a+k*(b-a)/n);
}
T1=T0/2+2*(b-a)*S1/n/3-(b-a)*S2/(3*n);
if (fabs(T1-T0)<15*e)
{ flag=0;
cout<<"所求函数f(t)=2/(1+t*t)在["<<a<<","<<b<<"]的积分近似值为:"<<T1<<endl;
}
else { n=2*n; flag=1; }
}
}
double fun(double x)
{ return 2/(1+x*x); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -