• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请


 这次是我初次接触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
% [email protected](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)])

 

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

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab学习之数据分析发布时间:2022-07-18
下一篇:
matlab的fft谱振幅发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap