龙贝格算法 matlab,基于MATLAB实现的龙贝格求积分算法

求解多项式方程在曲线[a,b]的积分,同样的方法可以求解一般函数的积分。

function [int] =integRob(xi,a,b)

%a,b为上下界

%xi为多项式系数向量

tk=zeros(1,100);

sk=zeros(1,100);

ck=zeros(1,100);

rk=zeros(1,100);

tk(1)=(b-a)*(0.5*polyval(xi,a)+0.5*polyval(xi,b));

for n=2:20

sum=0;

for m=1:2^(n-2)

sum=sum+polyval(xi,a+(2*m-1)*(b-a)/2^(n-1));

end

tk(n)=tk(n-1)/2+sum*(b-a)/2^(n-1);

end

for n=1:20

sk(n)=tk(n+1)*4/3-tk(n)/3;

end

for n=1:20

ck(n)=sk(n)*16/15-sk(n)/15;

end

for n=2:20

rk(n)=ck(n)*64/63-ck(n)/63;

if (abs(rk(n)-rk(n-1))<=10^(-8))%精度控制

int=rk(n);

break;

end

end

end

验证算法:

选取函数进行积分

0

1

1

+

x

2

d

x

\int_{0}^{1}{\sqrt{1+x^2}\mathrm{d} }x

∫01​1+x2

​dx

f=@(x) sqrt(1+x^2);

int=integRobtest(f,0,1)

int =

1.147793574520714

与精确解相差小于0.000000001,编写算法求积分可行。

标签:ck,xi,20,int,sum,算法,tk,龙贝格,MATLAB

来源: https://blog.csdn.net/JZRejon/article/details/112095213

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值