- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计报告_四阶Runge_Kutta方法
PAGE
PAGE 12
《计算机数值方法》
课程设计报告
题目四阶Runge-Kutta方法学生姓名班级计科12学号 成绩指导教师
延安大学计算机学院
2014年9月1日
目 录
摘要·······································································5
问题重述··································································5
方法原理及实现··························································5
计算公式或算法··························································5
Matlab程序·······························································6
测试数据及结果··························································6
结果分析·································································10
八、方法改进··································································10
九、心得体会··································································10
十、参考文献··································································10
摘要
本课程设计主要内容是用四阶Runge-Kutta方法解决常微分方程组初值问题的数值解法,首先分析题目内容和要求,然后使用Matlab编写程序计算结果并绘图,最后对计算结果进行分析并得出结论。
问题描述
在计算机上实现用四阶Runge-Kutta求一阶常微分方程初值问题
的数值解,并利用最后绘制的图形直观分析近似解与准确解之间的比较。
三、方法原理及实现
龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。龙格库塔方法的理论基础来源于泰勒公式和使用斜率近似表达微分,它在积分区间多预计算出几个点的斜率,然后进行加权平均,用做下一点的依据,从而构造出了精度更高的数值积分计算方法。如果预先求两个点的斜率就是二阶龙格库塔法,如果预先取四个点就是四阶龙格库塔法。
经典的方法是一个四阶的方法,它的计算公式是:
四、计算公式或算法
输入(编写或调用计算的函数文件),
3.For
End
4.输出
五、Matlab 程序
x=[a:h:b];
y(1)=y1;
n=(b-a)/h+1;
for i=2:n
fk1=f(x(i-1),y(i-1));
fk2=f(x(i-1)+h/2,y(i-1)+fk1*h/2);
fk3=f(x(i-1)+h/2,y(i-1)+fk2*h/2);
fk4=f(x(i-1)+h,y(i-1)+fk3*h);
y(i)=y(i-1)+h*(fk1+2*fk2+2*fk3+fk4)/6;
end
y
六、测试数据及结果
用调试好的程序解决如下问题:
应用经典的四阶Runge-Kutta方法解初值问题
取
步骤一:编写函数具体程序.
1.求解解析解程序:
dsolve(Dy=(y^2+y)/t,y(1)=-2,t)
结果:
2.综合编写程序如下:
a=1;
b=3;
h=0.5;
y(1)=-2;
x(1)=a;
n=(b-a)/h+1;
yy(1)=-2;
for i=2:n
k1=(y(i-1)^2+y(i-1))/x(i-1);
k2=((y(i-1)+h*k1/2)^2+(y(i-1)+h*k1/2))/(x(i-1)+h/2);
k3=((y(i-1)+h*k2/2)^2+(y(i-1)+h*k2/2))/(x(i-1)+h/2);
k4=((y(i-1)+h*k3)^2+(y(i-1)+h*k3))/(x(i-1)+h);
y
文档评论(0)