matlab变步长龙格库塔法,matlab 龙格库塔法 变步长龙格库塔法

《matlab 龙格库塔法 变步长龙格库塔法》由会员分享,可在线阅读,更多相关《matlab 龙格库塔法 变步长龙格库塔法(7页珍藏版)》请在金锄头文库上搜索。

1、河北科技大学硕士学位研究生20122013 学年第二学期Matlab 语言及应用结课论文学 院: 信息科学与工程学院专 业: 电 路 与 系 统姓 名: 张 利 超学 号: S2012014011经典龙格库塔法及变步长龙格库塔法1.经典龙格库塔法及变步长龙格库塔法 matlab 代码a.经典龙格库塔法文件: Rungkutta4.mfunction R=Rungkutta4(f,a,b,N,ya)h = (b-a)/N;x = zeros(1,N+1);y = zeros(1,N+1);x = a:h:b;y(1) = ya;for i+1:Nk1 = feval(f,x(i),y(i); k。

2、2 = feval(f,x(i)+h/2,y(i)+(h/2)*k1); k3 = feval(f,x(i)+h/2,y(i)+(h/2)*k2); k4 = feval(f,x(i)+h,y(i)+h*k3); y(i+1) = y(i)+(h/6)*(k1+2*k2+2*k3+k4);endb.变步长龙格库塔法文件:change_step_RK .mfunction change_step_RK(fun); p21=2p-1; while x(end)AbsTol; x1=x2; y1=y2; h=h/2; x2,y2=RK_f(fun,x(n),y(n),h/2); end end xa。

3、,ya=RK_f(fun,h,x(n),y(n); x(n+1)=xa; y(n+1)=ya; n=n+1; end plot(x,y,k); function xa,ya=RK_f(fun,h,x,y); k1=fun(x,y); k2=fun(x+h/2,y+h*k1/2); k3=fun(x+h/2,y+h*k2/2); k4=fun(x+h,y+h*k3); xa=x+h; ya=y+h*(k1+k2*2+2*k3+k4)/6; 2.利用两种方法求解初值问题0AbsTol; x1=x2; y1=y2; h=h/2; x2,y2=RK_f(fun,x(n),y(n),h/2); end 。

4、end xa,ya=RK_f(fun,h,x(n),y(n); x(n+1)=xa; y(n+1)=ya; n=n+1; end fprintf( i x(i) y(i)n); for i=1:n fprintf(%2d %4.6f %4.6fn,i,x(i),y(i); end plot(x,y,r)function xa,ya=RK_f(fun,h,x,y) k1=fun(x,y); k2=fun(x+h/2,y+h*k1/2); k3=fun(x+h/2,y+h*k2/2); k4=fun(x+h,y+h*k3); xa=x+h; ya=y+h*(k1+k2*2+2*k3+k4)/6; 。

5、运行结果i x(i) y(i)1 0.000000 0.0000002 0.002500 0.0025033 0.007500 0.007528 4 0.010000 0.0100505 0.015000 0.0151126 0.017500 0.0176537 0.022500 0.0227538 0.025000 0.0253129 0.030000 0.03045010 0.032500 0.03302811 0.037500 0.03820312 0.040000 0.04080013 0.045000 0.04601214 0.047500 0.04862815 0.052500 0。

6、.05387816 0.055000 0.05651217 0.060000 0.06179918 0.062500 0.06445219 0.067500 0.06977720 0.070000 0.0724493.结论从运行结果来看,变步长龙格库塔法产生的误差|y(i+1)-y(i)| 比经典龙格库塔法的小,但是运算量比较大。单从每一步看,步长越小,截断误差就越小,但随着步长的缩小,在一定求解范围内所要完成的步数就增加了. 步数的增加不但引起计算量的增大,而且可能导致舍入误差的严重积累,经过推算得以验证。经典的四阶龙格-库塔公式从节点 出发,先以 h 为步长求出一个近似值 ,nx hny1。

7、由于公式的局部截断误差为 ,故有5o然后将步长折半,即取 为步长从 跨两步到 ,再求得一个近似值 ,2hnx1n 21hny每跨一步的截断误差是 ,因此有5o比较(3.14)式和(3.15)式我们看到,步长折半后,误差大约减少到 ,既有16由此易得下列事后估计式 .15)( )(1)2(1)2(1 hnhnhnn yyxy 这样,可以通过检查步长,折半前后两次计算结果的偏差来判定所选的步长是否合适. 具体地说,将区分以下两种情况处理:1. 对于给定的精度 ,如果 ,反复将步长折半进行计算,直至 为止.这时取最终得到的 作为结果; 21hny2. 如果 ,反复将步长加倍,直到 为止,这时再将步长折半一次,就得到所要的结果.表面上看,为了选择步长,每一步的计算量增加了,但总体考虑往往是合算的. 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值