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

Matlab数值积分(2)

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

实验目的:

  掌握理查森外推法

实验要求:

1. 给出理查森外推算法

2. Matlab实现理查森外推算法

3. 用Matlab实现自适应积分算法

实验内容:

  1. 理查森外推算法,数学知识:利用Richardson外推对逐次分半,若记则有Richardson外推方法,可得到左式的误差为考虑舍入误差,m不能取得太大。

  算法描述:

  (1)命名函数;(2)如果输入的未知数少于4个,默认精度0.001;(3)描述T表示矩阵坐标;4)依次赋值计算T表第一列;(5)根据Richardson公式求出T表矩阵的值;(6)若达到精度则运算结束,若未达到则循环计算;(7)输出T表,得出的值就是导数值。

  

  2.Matlab实现理查森外推算法(见实验步骤)。

 

  3. 用Matlab实现自适应积分算法,被积函数在整个积分区间上的变化是不均衡到,在[a,b]分成的若干子区间中,有些变化缓慢,有些则变化大。为了使计算结果达到预期精度,可以使用Simpson求积公式。(此处只展示MATLAB程序)。

 

实验步骤:

  1.理查森外推算法代码:

 1 function t=romberg(fname,a,b,ep)
 2 if nargin<4
 3     ep=1e-5;
 4 end
 5 i=1;j=1;h=b-a;
 6 T(i,1)=h/2*(feval(fname,a)+feval(fname,b));
 7 T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h/2+0.001*h))*h/2;
 8 T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1);
 9 while abs(T(i+1,i+1)-T(i,i))>ep
10     i=i+1;h=h/2;
11     T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h))*h/2;
12     for j=1:i
13         T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1);
14     end
15 end
16 T
17 t=T(i+1,j+1);
romberg

  运行示例:

  

 

 

  2.自适应积分算法代码:

 1 function I=squad1(fun,a,b,ep)
 2 if nargin<4
 3     ep=1e-5;
 4 end
 5 N=1;
 6 h=b-a;
 7 T1=h/2*(feval(fun,a)+feval(fun,b));
 8 S0=T1;
 9 while 1
10     h=h/2;
11     T2=T1/2;
12     for k=1:N
13         T2=T2+h*feval(fun,a+(2*k-1)*h);
14     end
15     I=(4*T2-T1)/3;
16     if abs(I-S0)<ep
17         break;
18     end
19     N=2*N;
20     T1=T2;
21     S0=I;
22 end
squad1

  运行:

  

 

 

小结:

  在编写数学类的程序时,必须要熟读相关的数学知识。

 


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Delphi中Edit输入控制必需为数字(2位小数)发布时间:2022-07-18
下一篇:
Delphi编写下载程序:UrlDownloadToFile的进度提示发布时间: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