⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 变步长梯形公式.cpp

📁 数值分析的实验报告
💻 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 + -