什么是龙贝格积分算法
龙贝格(Romberg)积分算法也被称为逐次分半加速算法,通过把积分区间逐次分半的方法进行数值积分求解。 由于其采用的是逐次分半计算,后一次计算是对前一次近似结果的修正,因此相对于辛普森和科特斯求积方法精度更高;并且其前一次分割计算的函数值在分半之后还可以被继续使用,因此提升了计算的效率,是一种精度较高的加速计算积分的方法。龙贝格积分算法计算过程
龙贝格积分算法是一种将理查森外推加速法应用于复合梯形公式而形成的一种积分方法,递推公式可表示为
(1)取 ,求 (2)利用变步长梯形公式求 ,其中 为区间的分半次数,即 (3)按照次序依据递推公式逐个求出加速值 (4)比较递推矩阵相邻对角元素,两者之差绝对值小于预设精度要求时终止计算。龙贝格积分算法程序设计
龙贝格算法程序设计如下:function [y,T]=romberg(f,a,b,e)k=0;h=b-a;T(1,1)=h/2*(f(a)+f(b));%第一步d=h;%初始化相邻两次误差while e<=d k=k+1; QH=0; for j=0:2^(k-1)-1 QH=QH+f(a+(2*j+1)*(b-a)/2^k); end T(k+1,1)=T(k,1)/2+(b-a)/2^k*QH;%第二步 for j=1:k T(k+1,j+1)=T(k+1,j)+(T(k+1,j)-T(k,j))/(4^j-1);%第三步 end d=abs(T(k+1,k+1)-T(k,k));%第四步endy=T(k+1,k+1);
龙贝格积分算法算例分析
应用龙贝格算法计算积分
使其精度达到 10-5 ,其精确值为0.25。输入程序代码
f=inline('x^3')[y,T]=romberg(f,0,1,1e-5)
运行结果为
y = 0.250000000000000T = 0.500000000000000 0 0 0.312500000000000 0.250000000000000 0 0.26562500000000 0.250000000000000 0.250000000000000
注:
公式和代码左右滑动查看完整效果。