- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告七常微分方程初值问题的数值解法
浙江大学城市学院实验报告
课程名称 数值计算方法
实验项目名称 常微分方程初值问题的数值解法
实验成绩 指导老师(签名 ) 日期 2015/12/16
一. 实验目的和要求
用Matlab软件掌握求微分方程数值解的欧拉方法和龙格-库塔方法;
通过实例学习用微分方程模型解决简化的实际问题。
二. 实验内容和原理
编程题2-1要求写出Matlab源程序(m文件),并有适当的注释语句;分析应用题2-2,2-3,2-4,2-5要求将问题的分析过程、Matlab源程序和运行结果和结果的解释、算法的分析写在实验报告上。
编程
编写用向前欧拉公式和改进欧拉公式求微分方程数值解的Matlab程序,问题如下:
在区间内个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句。
Euler法 y=euler(a,b,n,y0,f,f1,b1)
改进Euler法 y=eulerpro(a,b,n,y0,f,f1,b1)
分析应用题
假设等分区间数,用欧拉法和改进欧拉法在区间内求解初值问题
并作出解的曲线图形,同时将方程的解析解也画在同一张图上,并作比较,分析这两种方法的精度。
分析应用题
用以下三种不同的方法求下述微分方程的数值解,取
画出解的图形,与精确值比较并进行分析。
1)欧拉法;
2)改进欧拉法;
3)龙格-库塔方法;
分析应用题
考虑一个涉及到社会上与众不同的人的繁衍问题模型。假设在时刻(单位为年),社会上有人口人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众不同的人。而固定比例为的所有其他的后代也是与众不同的人。如果对所有人来说出生率假定为常数,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程表示为:
其中变量表示在时刻社会上与众不同的人的比例,表示在时刻人口中与众不同的人的数量。
1)假定和,当步长为年时,求从到解的近似值,并作出近似解的曲线图形。
2)精确求出微分方程的解,并将你当时在分题(b)中得到的结果与此时的精确值进行比较。
【MATLAB相关函数】
求微分方程的解析解及其数值的代入
dsolve(‘egn1’, ‘egn2’, ‘’)
subs (expr, {x,y,…}, {x1,y1,…} )
其中‘egn’表示第个方程,‘’表示微分方程中的自变量,默认时自变量为。
subs命令中的expr、x、y为符合型表达式,x、y分别用数值x1、x2代入。
syms x y z
subs(x+y+z,{x,y,z},{1,2,3})
ans =
6
syms x
subs(x^2,x,2)
ans =
4
s=dsolve(‘’, ‘’, ‘’)
ans =
syms x
subs(s,x,2)
ans =
-0.3721
右端函数的自动生成
f= inline(‘expr’, ’var1’, ‘var2’,……)
其中’expr’表示函数的表达式,’var1’, ‘var2’ 表示函数表达式中的变量,运行该函数,生成一个新的函数表达式为f (var1, var2, ……)。
f=inline(x+3*y,x,y)
f =
Inline function:
f(x,y) = x+3*y
f(2,3)
ans =
11
4,5阶龙格-库塔方法求解微分方程数值解
[t,x]=ode45(f,ts,x0,options)
其中f是由待解方程写成的m文件名;x0为函数的初值;t,x分别为输出的自变量和函数值(列向量),t的步长是程序根据误差限自动选定的。若ts=[t0,t1,t2,…,tf],则输出在自变量指定值,等步长时用ts=t0:k:tf,输出在等分点;options用于设定误差限(可以缺省,缺省时设定为相对误差,绝对误差),程序为:options=odeset(‘reltol’,rt,’abstol’,at),这里rt,at分别为设定的相对误差和绝对误差。常用选项见下表。
选项名
文档评论(0)