-
在
Matlab
中使
用
ode45
简介
< br>Matlab
中常微分方程常用的函数是
ODE45
p>
,
这个函数能够利用
--
< br>龙哥库塔法
--
有效求解带时
间
变量步长的计算。
Ode45
用于求解如下的一般问题:
dx
?
f
?
t
,
x
?
,
x
?
< br>t
0
?
?
x
0
(
1
)
dt
其中,时间
t
是独立变量,
x
为时间相关矢量
,
f
?
t
,<
/p>
x
?
是时间
t<
/p>
和
x
的函数。当(
1
)右边的
f
?
t
,
x
?
是固定的,且给定
x
的初始值,那么问题的解是唯一的。
在
ME175
中,
解法是不完整的,但是只要你解决了问题,就可以获得
ODE
代
表的系统运
动趋势。
这有利于得到一个直观的印象,
看起来很复杂的常微分方程,
代表的质点运动轨迹
确实简单明了的。以下简要解释如何得到运动轨迹:
第一步:
对给定的
< br>ODE
方程进行降阶处理,得到一系列一阶方程
这就是你要做的第一步,在一张草稿纸上处理。例如,给定
ODE
p>
方程如下:
m
y
?
y
e
?
p>
y
?
5
,
y
0
?
3
,
y
0
?
< br>?
1
(
2
)
对本问题,矢量
x
有两个组成分量:
y
和
y<
/p>
,或
?
?
p>
?
?
y
2
?
x
?
1
?
?
y
x
< br>?
2
?
?
y
且
?
(
3
)
d
p>
?
x
?
1
?
?
?
x
?
2
?
dt
(
4
)
d
?
x
?
2
?
?
1
2<
/p>
?
5
?
x
?
2
?
e
?
x
?
1
?
?
?
?
x
?
1
?
?
dt
m
?
?
其中,用(
3
)中的式子代表了
y
,
y
,
y
,于是把(
2
)改写为
(
4
)
。
如果求解的问题有更多阶数更多变量呢?例如,
我们除了有上面的方程
(
2
)
,
同时还有以下
的方程:
?
d
3
z
d
2
z
?
?
sin
?
z
?
?
t
,
z
0
?
0<
/p>
,
z
0
?
1
.
(
5
)
dt
3
dt
2
?
?
?
那么,我们可以通过构造更大的矢量
x
同时求解
y
,
z
:
x
?
3
?
?
z
x
?
4
?
?
z
(
6
)
p>
x
?
5
?
?
z
?
?
?
然后
?
?
?
?
?
?
x
?
?
y
,
y
,
z<
/p>
,
z
,
z
?
(
7
)
?
?
以及
<
/p>
?
x
t
?
0
?
?
y
t
?
0
,
y
t
?
0
,
z
t
?
0
,
z
t
?<
/p>
0
,
z
t
?
0
?
(
8
)
?
其中,
y
变量和
z
变量的放置位置对求解不造成影响。实际上,任意次序都是有效的,例如
?
?
?
?
p>
?
x
?
?
y
,
z
,
y
,
z
,
< br>z
?
和
x
?
?
z
,
z
,
z
,
p>
y
,
y
?
?
?
?
?
?
?
?
< br>?
?
?
?
?
?
?
?
?
?
?
但是重要的是,在整个计算过程中
,你使用的顺序都必须和一阶
ODE
方程中定义的变量顺
序相同。之后,如果你使用的是(
7
)中给定
的的式子,那么系统的一阶
ODE
方程,由以
< br>下方程组组成。
(
10
)
<
/p>
?
?
?
?
?
?
而涉及的表征变量
x
?
?
y
,
z
,
y
,
p>
z
,
z
?
结果如下:
?
?
p>
(
11
)
基本上,可以处理任意数量的高阶
ODE
方程
。重要的是把它们处理成多个一阶的
ODE
方
< br>程,并且确保记住被求解的矢量
X
中,不同变量所分配的
顺序。
第二步
编写代码
既然你已经有所求解问题的
一阶格式,在你编程的主要代码中,将会用到以下的命令
?<
/p>
t
,
x
?
?
ode
45
?
p>
@
fname
,
t
span
,
xinit
,
options
?
·
p>
fname
是函数的
M
文件名用于求解方程(
1
)右边代数式的值。这个函数将被
输入一阶
ODE
系统中,并且被积分(见(
10
)
,
(
11
)
)
。后面,将会更详细的解释
。
注:当然关于
ODE45
如何积分给定的方程有细微的差别,但是对于简单的问题,不分先后
次序
的积分,是可以接受的。
·
tspan
是矢量定义了积分的起
始点和终点,同时也定义了时间步长。例如,我们需要积分
t=0
到
t=10
,希望步数是
100
p>
步,那么
tspan=[0:0.1:10]
或者
tspan=linspace
(
0,10,100).
·
xinit
是初始条件矢量。确保初始值的顺序和给定的
x
中变量和它倒
数的顺序是一致的。
同时注意如果
x
有
5
个变量,那么同时要输入
5
个初始值。
·
opt
ion
这个在
matlab
的帮助文件
中有很好的说明。
对于大部分的问题,
使用默认值就可以
满足计算要求。
·
t
是独立变量,计算数组
x
在时间点<
/p>
t
的数值。这个矢量不必等于
tspan
,
ODE45
自动调节
步数以取得最大的效率和精确度。
(在快速变化部分采用小步长,在变化缓慢部
分采用大步
长)
。
< br>·
x
相关内容如下。
X
是数组或矩阵,大小为
length
(
t
)
*length
(
xinit
)
。每一列
x
代表不
?
?
?
?
?
?
同的因变量。例如,
x
?
?
y
,
y
,
z
,
z
,
z
?
,为简单假定
t=0,1
,2....,10,
将会计算函数在
11
个点的
?
?
值。
< br>
(
12
)
如果
z
是<
/p>
x
的第四个变量,那么
x
?
1
,
4
?
得到了
z
在
t=0
时候的值,
x
?
7
,
4
?
得到了
z
在
t=6
时
候的值,
x
?
11
,
4
?
得到了
t=10
时候的值。简而言之,
·
x
?
:,
k
?
代表
x
的第
k
个变量,
k=1
与变量
y
相关,<
/p>
k=2
与变量
y
相关。
·
x
?
j
,
:
?<
/p>
计算所有变量在某一时间点
j
的数值
p>
?
?
?
?
注:在产生
hokey
pokey
舞蹈前,史前儿童围坐在篝火前齐唱:
You put your left foot in
You put your left foot out'
You put your left foot in
And you shake it all about
当
你使用
matlab
函数
ODE45<
/p>
及时完成作业时,
x
就是要做得全部内容
。
不幸的是由于缺乏
matlab<
/p>
软件,使得这本书过时了。
·
x
?
j
,
k
?
?
x
< br>?
时间,变量值
?
-
-
-
-
-
-
-
-
-
上一篇:英语六级阅读真题长难句解析1
下一篇:电气工程及其自动化专业英语第一章课文翻译