自动选取步长梯形法算法.cpp
来自「数值分析课程必备的算法:自动选取步长梯形法算法。有需要的同学下载」· C++ 代码 · 共 43 行
CPP
43 行
//自动选取步长梯形法算法
#include<iostream.h>
#include<math.h>
double fun(double);
void main()
{
double a,b,h,e,T0,T1,S;
int n;
cout<<"**************自动选取步长梯形法算法**************"<<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=(fun(a)+fun(b))*h;
n=1;
int flag=1;
while(flag==1)
{ T0=T1;
S=0;
for (int k=1;k<=n;k++)
{
S+=fun(a+(2*k-1)*(h/n));
}
T1=T0/2+S*(h/n);
if (fabs(T1-T0)<3*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 + =
减小字号Ctrl + -
显示快捷键?