| 查看: 2440 | 回复: 7 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
longwen8木虫 (文坛精英)
|
[求助]
微分方程组的四阶龙格库塔公式求解matlab版 已有1人参与
|
||
|
微分方程组的四阶龙格库塔公式,求解matlab版的代码。下面是我的代码,运行不出来。 function varargout=rungekutta(varargin) clc,clear x0=0;xn=1.0;y0=1;h=0.05;%h为步长 [y,x]=rungekutta4(x0,xn,y0,h); Function z=f(x,y); z=y-2*x/y; function [y,x]=rungekutta4(x0,xn,y0,h) x=x0:h:xn; n=(xn-x0)/h; y1=x; y1(1)=y0; for i=1:n %龙格库塔法的算法 K1=f(x(i),y1(i)); K2=f(x(i)+h/2,y1(i)+h/2*K1); K3= f(x(i)+h/2,y1(i)+h/2*K2); K4= f(x(i)+h,y1(i)+h*K3); y1(i+1)=y1(i)+h/6*(K1+2*K2+2*K3+K4); yy1(i)=(1+2*x(i+1)) ^0.5; error(i)=y1(i+1)-yy1(i); yy(i+1)=yy1(i); e(i+1)=error(i); end y=y1; n=(xn-x0)/h; fprintf(‘i x(i) yi数值解 y(i)真值 误差\n’); fprintf(‘-------------------------------------------------------------\n’); for i=1:n fprintf(‘%2d %12.4f %14.8f %14.8f %12.8f\n’,i, x(i+1), y(i+1), yy(i+1), error(i)); end plot(x,e,‘r.’);%画出误差曲线 xlable(‘x轴’),ylable(‘误差’); title(‘步长为0.05时的误差曲线’); |
» 猜你喜欢
散金币祈福
已经有186人回复
求助,如何提取ELK的rt-TDDFT在某一时刻的自旋密度分布和电子密度分布
已经有1人回复
物理学I论文润色/翻译怎么收费?
已经有178人回复
澳门大学IAPME李海峰教授常年招收博士研究生
已经有0人回复
澳门大学IAPME李海峰教授常年招收博士研究生
已经有0人回复
澳门大学IAPME李海峰教授常年招收博士研究生
已经有0人回复
深圳大学应用技术学院招聘凝聚态物理博士后
已经有114人回复
深圳大学2027级光电信息工程/物理学研究生推免
已经有70人回复
求助中医院临床中医中标的青年标书学习,谢谢
已经有4人回复
浙大物院表面物理课题组长期招收普博及直博学生
已经有257人回复
【征稿】Springer Nature热电专题 Discover Materials / Discover Chemistry
已经有39人回复
|
运行结果: i x(i) yi数值解 y(i)真值 误差 ------------------------------------------------------------- 1 0.0500 1.04880886 1.04880885 0.00000001 2 0.1000 1.09544514 1.09544512 0.00000002 3 0.1500 1.14017546 1.14017543 0.00000004 4 0.2000 1.18321600 1.18321596 0.00000005 5 0.2500 1.22474493 1.22474487 0.00000006 6 0.3000 1.26491113 1.26491106 0.00000007 7 0.3500 1.30384056 1.30384048 0.00000008 8 0.4000 1.34164088 1.34164079 0.00000009 9 0.4500 1.37840498 1.37840488 0.00000011 10 0.5000 1.41421368 1.41421356 0.00000012 11 0.5500 1.44913781 1.44913767 0.00000014 12 0.6000 1.48323985 1.48323970 0.00000015 13 0.6500 1.51657526 1.51657509 0.00000017 14 0.7000 1.54919353 1.54919334 0.00000019 15 0.7500 1.58113904 1.58113883 0.00000021 16 0.8000 1.61245178 1.61245155 0.00000023 17 0.8500 1.64316793 1.64316767 0.00000026 18 0.9000 1.67332034 1.67332005 0.00000028 19 0.9500 1.70293895 1.70293864 0.00000031 20 1.0000 1.73205115 1.73205081 0.00000034 图像上传不上来。 |

4楼2020-12-18 22:02:15
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
独孤神宇: 金币+5, 鼓励交流 2020-12-18 19:25:10
longwen8: 金币+20, ★★★★★最佳答案 2020-12-18 19:42:37
独孤神宇: 金币+5, 鼓励交流 2020-12-18 19:25:10
longwen8: 金币+20, ★★★★★最佳答案 2020-12-18 19:42:37
|
一、几个自定义函数位置错误。应为这样放置 1、主程序 , function rungekutta() clc,clear x0=0;xn=1.0;y0=1;h=0.05;%h为步长 [y,x]=rungekutta4(x0,xn,y0,h); end 2、 四阶龙格库塔函数程序 function [y,x]=rungekutta4(x0,xn,y0,h) 。。。 end 3、z函数程序 function z=f(x,y); z=y-2*x/y; end 二、xlable(‘x轴’),ylable(‘误差’);这句代码中函数书写错误。应为 xlabel('x轴'),ylabel('误差'); 三、修改后运行得到如下结果 |

2楼2020-12-18 18:12:48
longwen8
木虫 (文坛精英)
- 应助: 0 (幼儿园)
- 金币: 5454.8
- 散金: 13079
- 红花: 48
- 沙发: 83
- 帖子: 10843
- 在线: 1497.4小时
- 虫号: 4254310
- 注册: 2015-11-29
- 性别: GG
- 专业: 环境工程
3楼2020-12-18 19:43:08
longwen8
木虫 (文坛精英)
- 应助: 0 (幼儿园)
- 金币: 5454.8
- 散金: 13079
- 红花: 48
- 沙发: 83
- 帖子: 10843
- 在线: 1497.4小时
- 虫号: 4254310
- 注册: 2015-11-29
- 性别: GG
- 专业: 环境工程
5楼2020-12-19 00:00:51










回复此楼
20