没有合适的资源?快使用搜索试试~ 我知道了~
实验报告七常微分方程初值问题的数值解法.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 22 浏览量
2022-07-14
15:30:09
上传
评论
收藏 426KB PDF 举报
温馨提示
试读
12页
实验报告七常微分方程初值问题的数值解法.pdf实验报告七常微分方程初值问题的数值解法.pdf实验报告七常微分方程初值问题的数值解法.pdf实验报告七常微分方程初值问题的数值解法.pdf实验报告七常微分方程初值问题的数值解法.pdf实验报告七常微分方程初值问题的数值解法.pdf实验报告七常微分方程初值问题的数值解法.pdf实验报告七常微分方程初值问题的数值解法.pdf
资源推荐
资源详情
资源评论
大学城市学院实验报告
课程名称 数值计算方法
实验项目名称
常微分方程初值问题的数值解法
实验成绩 指导老师(签名 ) 日期 2015/12/16
一. 实验目的和要求
1. 用 Matlab 软件掌握求微分方程数值解的欧拉方法和龙格-库塔方法;
2. 通过实例学习用微分方程模型解决简化的实际问题。
二. 实验容和原理
编程题 2-1 要求写出 Matlab 源程序(m 文件),并有适当的注释语句;分析应用题 2-2,2-3,
2-4,2-5 要求将问题的分析过程、Matlab 源程序和运行结果和结果的解释、算法的分析写
在实验报告上。
2-1 编程
编写用向前欧拉公式和改进欧拉公式求微分方程数值解的 Matlab 程序,问题如下:
在区间
a,b
(N 1)
个等距点处,逼近下列初值问题的解,并对程序的每一句添上注释语句。
y
f (x, y) a x b y(a) y
0
Euler 法 y=euler(a,b,n,y0,f,f1,b1)
改进 Euler 法 y=eulerpro(a,b,n,y0,f,f1,b1)
2-2 分析应用题
假设等分区间数
n 100
,用欧拉法和改进欧拉法在区间
t [0,10]
求解初值问题
y
(t) y(t) 20
y(0) 10
并作出解的曲线图形,同时将方程的解析解也画在同一图上,并作比较,分析这两种方法的
精度。
2-3 分析应用题
用以下三种不同的方法求下述微分方程的数值解,取
h 10
y
y 2x
y(0) 1
0 x 1
画出解的图形,与精确值比较并进行分析。
1)欧拉法;
2)改进欧拉法;
3)龙格-库塔方法;
2-4 分析应用题
考虑一个涉及到社会上与众不同的人的繁衍问题模型。假设在时刻
t
(单位为年),社会
上有人口
x(t)
人,又假设所有与众不同的人与别的与众不同的人结婚后所生后代也是与众
不同的人。而固定比例为
r
的所有其他的后代也是与众不同的人。如果对所有人来说出生率
假定为常数
b
,又如果普通的人和与众不同的人的婚配是任意的,则此问题可以用微分方程
表示为:
dp(t)
rb(1 p(t))
dt
其中变量
p(t) x
i
(t) x(t)
表示在时刻
t
社会上与众不同的人的比例,
x
i
(t)
表示在时刻
t
人口
中与众不同的人的数量。
1)假定
p(0) 0.01,b 0.02
和
r 0.1
,当步长为
h 1
年时,求从
t 0
到
t 50
解
p(t)
的近
似值,并作出近似解的曲线图形。
2)精确求出微分方程的解
p(t)
,并将你当
t 50
时在分题(b)中得到的结果与此时的精确值
进行比较。
【
MATLAB 相关函数
】
求微分方程的解析解及其数值的代入
dsolve(‘egn1’, ‘egn2’, ‘
x
’)
subs (expr, {x,y,…}, {x1,y1,…} )
其中‘egn
i
’表示第
i
个方程,‘
x
’表示微分方程中的自变量,默认时自变量为
t
。
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(‘
Dy 1 y
2
’, ‘
y(0) 1
’, ‘
x
’)
ans =
tan(x 1 4 pi)
>> syms x
>> subs(s,x,2)
ans =
-0.3721
右端函数
f (x, y)
的自动生成
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 用于设定误差
限(可以缺省,缺省时设定为相对误差
10
,绝对误差
10
),程序为:
options=odeset(‘reltol’,rt,’abstol’,at),这里 rt,at 分别为设定的相对误差
和绝对误差。常用选项见下表。
选项名
AbsTol
RelTol
InitialStep
MaxStep
MaxOrder
Stats
BDF
例:解微分方程
功能
设定绝对误差
设定相对误差
设定初始步长
设定步长上界
设定 ode15s 的最高阶数
显示计算成本统计
设定 ode15s 是否用反向差分
可选值
正数
正数
正数
正数
1,2,3,4,5
on,off
on,off
省缺值
1e 6
1e 3
自动
tspan 10
5
off
off
3 6
t
y y 2 0 t 4
y
y(0) 1
剩余11页未读,继续阅读
资源评论
若♡
- 粉丝: 6097
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功