Romberg(龙贝格)积分法 | matlab

function s=rombg(a, b, TOL)
% a 为积分下限
% b 为积分上限
% TOL 为误差容限
% s 为最后Romberg积分的值
% rombg_f为积分函数

n = 1;
h = b - a;
delt = 1;  % 误差初值
x = a;
k = 0;
R = zeros(4, 4);
R(1, 1) = h / 2 * (rombg_f(a) + rombg_f(b));
while delt > TOL
    % 如果两次计算的误差大于给定误差则进入循环
    k = k + 1;
    h = h / 2;
    s = 0;
    for j = 1:n
        x = a + h * (2 * j - 1);
        s = s + rombg_f(x);
    end
    R(k+1, 1) = R(k, 1) / 2 + h * s;
    n = 2 * n;
    for i = 1:k
        R(k+1, i+1) = ((4^i) * R(k+1, i) - R(k, i)) / (4^i - 1);
    end
    delt = abs(R(k+1, k) - R(k+1, k+1)); % 计算前后两次的值
end
s = R(k+1, k+1);        
function f=rombg_f(x)
f = x / (4 + x^2);
end
% s = rombg(f, 0, 1.5, 1.e-6)

s = rombg(0, 1.5, 1.e-6)

%=> s = 0.3241
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值