自适应 Simpson积分算法( MATLAB及 C++实现代码)
(计算数学课用 )
在 CSDN论坛中找到了却要金币,无奈之下自己写了一份。
对于类似问题,改一下积分函数和区间即可。
针对问题: 数学上已经证明了
4
1 + ??
2
????= ??
1
0
成立,所以可以通过数值积分来求 π的近似值。
试利用自适应 Simpson算法计算积分近似值。
C++版: (直接复制粘贴在 VC++6.0即可运行 )
/* 用自适应 Simpson 积分方法计算积分值 */
#include<iostream>
#include<cmath>
int n=0; // 设置全局变量 n,用来记录最高迭代次数,避免递归一直进行下去。
double pi=3.141592653589793238462643 ; // 设置近似精确值,用以比较
double e1=0.00001 ; // 设置误差容限为 10^-5
double f(double); // 要积分的函数
double Simpson (double,double,double,double); // 迭代函数
using namespace std;
// 主函数
int main()
{
double a=0,b=1,t,h,S;// 积分区间
h=(b-a)/2;
S=h/3*(f(a)+f(b)+4*f((a+b)/2)); // 第一次 Simpson 公式积分值
t=Simpson(a,b,e1,S);
cout<<" 积分值为: "<<t<<endl;
cout<<" 最大迭代次数为: "<<n<<endl;
cout<<" 设置误差容限为 "<<e1<<" 误差为 :"<<pi-t<<endl;
return 0;
}
// 子函数 1(积分函数)
double f(double x)
评论2
最新资源