龙贝格积分

算法原理和程序框图

龙贝格积分法是在复化梯形求积公式、复化辛普森求积公式和复化科茨求积公式关系的基础上,构造出的一种精度更高的数值积分方法。龙贝格积分为:

                                   (1)

其截断误差为,已具有很高精度。龙贝格积分法是将区间[a, b]逐次分半进行计算。计算顺序为:计算T1,逐次计算T2k+1逐次计算S2k,C2k和R2k直到满足精度为止。因此,对已知函数f(x)在区间[a, b]上的龙贝格积分法的计算程序如下:

3.2程序使用说明

被积函数f(x),积分区间[a,b]和误差界都可根据需要在程序中直接修改,最大递推次数也可自己设定。给定好初值后直接运行就好。

3.3计算实例结果

选取第 211 页 计算实习 6.2为例。通过设置断点逐个求解。被积函数为f(x)=1/(1+x)时,递推到5次后满足要求精度,所求积分I=0.6931472;被积函数为f(x)=ln(1+x)/(1+x^2)时,递推到4次后满足要求精度,所求积分I=0.2721983;被积函数为f(x)=ln(1+x)/x时,递推到5次后满足要求精度,所求积分I=0.8224670;被积函数为f(x)=sin(x)/x时,递推到4次后满足要求精度,所求积分I=0.9460831。

% ** 文件名:Romberg.m
% 
% ** 创建人:**
% 
% ** 日 期:2016.12.14
% 
% ** 描 述:Romberg积分法计算定积分
% 
% ** 函数:第 211 页 计算实习 6.2     
% 
% ** 参考教材:《数值分析》李乃成,梅立泉,科学出版社
%
%%
clear;
clc
% %被积函数为f(x)=1/(1+x);积分区间为[0,1];  保留7位有效数字
%误差界eps=10^(-8)
b=1;a=0;h=b-a;eps=10^(-8);
kmax=30;%最大递推次数
T1=h/2*(1/(a+1)+1/(b+1));

S1=0;C1=0;C2=0;R1=0;R2=0;
for k=1:kmax
    h=(b-a)/2^k;
    i=1:2^(k-1);
    x=a+(2*i-1)*h;
    fx=sum(1./(1+x));  
    T2=T1/2+fx*h ;
    S2=T2+(T2-T1)/3;
    if(k<3)
        if k==2
            C2=S2+(S2-S1)/15;
        end
    else
        C2=S2+(S2-S1)/15;
        R2=C2+(C2-C1)/63;
        if abs(R2-R1)


你可能感兴趣的:(matlab)