实验八常微分方程初值问题数值解法
一、问题提出
科学计算中经常遇到微分方程(组)初值问题,需要利用Euler法,改进Euler法,Ru
gKutta方法求其数值解,诸如以下问题:
(1)
y
x2
y
0
x
1
y01
y50y50x22x0x1
(2)
y013
二、要求
1、用改进欧拉法(h01)及经典四阶RK法(h02)求(1)的数值解,并输出
x01ii0110的值并准确解yexx22x2做比较。
三、目的和意义
1、熟悉各种初值问题的算法,编出算法程序;2、明确各种算法的精度与所选步长有密切关系;3、通过计算更加了解各种算法的优越性。
四、实验学时:2学时
五、实验步骤:
1.进入matlab开发环境;2.根据实验内容和要求编写程序;3.调试程序;4.运行程序;5.撰写报告讨论分析实验结果
六、程序1、欧拉方法
fu
ctio
xyeulerfu
x0xfi
aly0
if
argi
5
50e
d
hxfi
alx0
x1x0y1y0fori1
xi1xihyi1yihfevalfu
xiyie
d
2、改进Euler方法
fu
ctio
EMe
dEulerfabNyaf是微分方程右端函数句柄ab是自变量的取值区间ab的端点
fN是区间等分的个数ya表初值yaExy是自变量X和解Y所组成的矩阵
hbaNyzeros1N1xzeros1N1y1yaxahbfori1N
y1yihfevalfxiyiy2yihfevalfxi1y1yi1y1y22e
dEx’y’
对于右端函数,以文件的形式表达如下:
fu
ctio
zf1xyz1x2yx
3、四阶龙格库塔方法
fu
ctio
RRu
gkuttafabNyaf是微分方程右端函数句柄ab是自变量的取值区间ab的端点N是区间等分的个数ya表初值yaRxy是自变量X和解Y所组成的矩阵
hbaNxzeros1N1yzeros1N1xahby1yaff2fori1N
k1fevalfxiyik2fevalfxih2yih2k1k3fevalfxih2yih2k2k4fevalfxihyihk3yi1yih6k12k22k3k4e
dRxy
七、思考题用经典四阶RK方法解(2),步长分别取h010025001,计算并输出
x01ii0110各点的值,与准确解y1e50xx2比较3
fffr