数值积分之龙贝格积分
来源:互联网 发布:三国杀陈琳淘宝 编辑:程序博客网 时间:2024/04/30 19:02
除了复化求积外,这里用龙贝格积分法进行近似求积,其原理与埃特金插值有些类似,进行线性整合后使结果具有高精度的求积效果。在实际过程中,由于对于评判合理步长的困难,我们常采取变步长的办法进行计算,使结果满足精度要求。龙贝格运算过程:梯形公式装载数据→辛甫生化→柯特斯化→龙贝格高精度化。
对于梯形公式,我们知道T1=[F(Xk)+F(Xk+1)]*h/2,T2=[F(Xk)+2*F(Xk+1/2)+F(Xk+1)]*h/4,显然得出T2=T1/2+∑F(Xk+1/2)*h/2的关系。其中的h=(b-a)/N,在下一步计算时,要进行步长二分。当取得一定的梯形公式数据点后,就可以直接进行数据高精度化了。
辛甫生化:Sn=(4*T2n-Tn)/3;
柯特斯化:Cn=(16*S2n-Sn)/15;
龙贝格化:Rn=(64*C2n-Cn)/63。
建立数组T[]、S[]、C[]、R[]分别存放各自的数据,用函数F(x)=Sin(x)/x在区间[0,1]上进行检验,F(0)=1。
h=b-a;T2=T1=(F(a)+F(b))*h/2;//进行梯形公式数据装载for(int i=0;i<N+3;i++)//N为龙贝格数据个数{T[i]=T2;sum=0;x=a+h/2;while(x<b){sum=F(x)+sum;x+=h;}T2=(T1+h*sum)/2;h=h/2;T1=T2;}//进行梯形公式到辛甫生的转化for(int i=0;i<N+2;i++)S[i]=(4*T[i+1]-T[i])/3;//进行辛甫生到柯特斯的转化for(int i=0;i<N+1;i++)C[i]=(16*S[i+1]-S[i])/15;//进行柯特斯到龙贝格的转化for(int i=0;i<N;i++)R[i]=(64*C[i+1]-C[i])/63;
最后,当然是验证输出结果了:
在VS2010下运行的结果,看来龙贝格公式果然高精度啊!
- 数值积分之龙贝格积分
- 数值积分-龙贝格(Romberg)积分
- 数值积分之复化求积法
- 数值积分之Newton_Cotes闭合积分公式
- 龙贝格求解数值积分
- 数值积分
- 数值积分
- 数值积分
- 数值积分
- 数值积分
- 数值积分
- 数值积分
- 数值积分之Romberg求积法
- 数值积分之Gauss求积法五点公式
- 数值积分之Simpson 1/3法则
- 数值积分之Simpson 3/8法则
- 数值积分(转载)
- Matlab数值积分
- spring 3.0 + ibatis 2 整合
- 安全警告——“Windows已经阻止此软件因为无法验证发行者”解决办法
- 配置ASP.NET平台时遇到的“访问IIS元数据库失败”--解决方案
- sql 函数实现三种父子递归
- 执行./startup.sh,或者./shutdown.sh的时候,Permission denied
- 数值积分之龙贝格积分
- 详解iPhone文件读写系统操作教程
- Codeforces 166B - Polygons
- Tomcat 配置 https 协议
- CocosBuilder工具使用(包仔的个人经验)
- java二维码生成与解析代码实现
- 数字101的特别之处
- spring 依赖对象的注入方式(3种) 和 公共属性的设置abstract="true" parent
- SlowScrollView用法大全