📄 变步长梯形公式.cpp
字号:
//变步长梯形积分
#include<iostream>
#include<cmath>
#include <iomanip>
using namespace std;
#define f(x) (1/(1+x*x)) //举例函数
//变步长梯形公式
double computerAutoT(double aa, double bb, double epsilon)
{
//迭代初值
long n = 1;
double h = bb-aa; //步长
double temp = h*(f(aa) + f(bb))/2.0, t;
double p = epsilon + 1.0;//精度控制
double sum, x;
while (p >= epsilon)
{
sum = 0.0;
for (long k=0; k<n; k++)
{
x = aa + (k+0.5)*h;
sum = sum + f(x);
}
t = (temp + h*sum)/2.0; //key step
p = fabs(t-temp);
temp = t;
n = n+n;
h = h/2.0;
}
cout<<"最终分点n:"<<n<<endl;
return (t);
}
int main()
{
static double epsilon;
cout<<"Please input exact now"<<endl;
cin>>epsilon;
double a,b;
cout<<"变步长复化梯形积分,请输入积分范围a,b:"<<endl;
cin>>a>>b;
cout<<"积分结果:"<<setiosflags(ios::fixed)<<setprecision(11)<<computerAutoT(a, b, epsilon)<<endl;
system("pause");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -