利用Matlab编写龙贝格算法(romberg)求函数积分


 这次是我初次接触matlab,源于数学老师布置的一个作业:用龙贝格算法来计算函数的积分

 

具体的计算原理,由于是数学的东西,不好打印,就不写了。主要把自己的代码贴下来慢慢理解。

 

一共写了两个文件。一个是romberg.m主要是写利用龙贝格算法,第二个是compute.m是调用之前写的接口

 

代码如下:

romberg.m

function [R,k,T]=romberg(fun,a,b,tol)
% 龙贝格(Romberg数值求解公式)
% author:
%   -gongwanlu
% inputs:
%   -fun:积分函数句柄
%   -a/b:积分上下限
%   -tol:积分误差
% Outputs:
%   -R:7阶精度Romberg积分值
%   -k:迭代次数
%   -T:整个迭代过程
%
% Example
% fun=@(x)4./(1+x^2);
% [R,k,T]=romberg(fun,0,1,1e-6)
%
k=0; % 迭代次数
n=1; % 区间划分个数
h=b-a;
T=h/2*(fun(a)+fun(b));
err=1;
while err>=tol
    k=k+1;
    h=h/2;
    tmp=0;
    for i=1:n
        tmp=tmp+fun(a+(2*i-1)*h);
    end
    T(k+1,1)=T(k)/2+h*tmp;
    for j=1:k
        T(k+1,j+1)=T(k+1,j)+(T(k+1,j)-T(k,j))/(4^j-1);
    end
    n=n*2;
    err=abs(T(k+1,k+1)-T(k,k));
end
R=T(k+1,4);

 

compute.m

%计算(4/1+X^2)在0到1上面的积分
a = 0
b = 1
epsilon = 5e-6
f = @(x)4 ./ (1 + x^2);
y = romberg(f,a,b,epsilon) 


%后面是画出函数图像,注,不是积分函数图像。是被积函数图像
x = 0:0.01:1;
z = 4 ./ ( 1 + x.^2 );
plot(x,z),xlabel('x'),ylabel('y'),title(['Result = ',num2str(y)])

 

 画出的图像为,积分结果写在了图像上面。

 

 

  • 21
    点赞
  • 161
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值