Transcript 微分方程
第14章 常微分方程的MATLAB求解
编者
Outline
14.1
14.2
14.3
14.4
14.5
14.6
微分方程的基本概念
几种常用微分方程类型
高阶线性微分方程
一阶微分方程初值问题的数值解
一阶微分方程组和高阶微分方程的数值解
边值问题的数值解
14.1 微分方程的基本概念
微分方程:一般的,凡表示未知函数、未知函数的导数与自变量之间的关系的方程,叫做微
分方程,有时也简称方程。
微分方程的阶:微分方程中所出现的未知函数的最高阶导数的阶数,叫做微分方程的阶
微分方程的解:找出这样的函数,把这函数代入微分方程能使该方程成为恒等式。这个函数
就叫做微分方程的解。
微分方程的通解:如果微分方程的解中含有任意常数,且任意常数的个数与微分方程的阶数
相同,这样的解叫做微分方程的通解。
初始条件:设微分方程中的未知函数为
,如果微分方程是一阶的,通常用来确定任
意常数的条件是
时,
或写成
其中
都是给定的值;如果微分方程是二阶的,通常用来确定任意常数的条件是
其中
和
都是给定的值,上述这种条件叫做初始条件。
确定了通解中的任意常数以后,就得到微分方程的特解。求微分方程
件
的特解是这样一个问题,叫做一阶微分方程的初值问题,记作
微分方程的解的图形是一条曲线,叫做微分方程的积分曲线。
满足初始条
14.2 几种常用微分方程类型
一般的,如果一个一阶微分方程能写成
的形式,就是说,能把微分方程写成一端只含
的函数和
,另一端只含
,那么原方程就称为可分离变量的微分方程。
1.可分离变量的微分方程
2.齐次方程
如果一阶微分方程可化成
的函数和
的形式,那么就称这方程为齐次方
程。
线性方程:方程
叫做一阶线性微分方程因为
它对于未知函数y 及其导数是一次方程。如果 ,
则上述方程称为齐次的;如果
,
则上述方程称为非齐次的。为了求出非齐次线性方程的解,我们先把
换成
零而写出方程
该方程叫做对应于非齐次线性方程的齐次线性方程。齐次线性方
3.一阶线性微分方程
程的通解为
伯努利方程:方程
时,该方程是线性微分方程,当
可把它化为线性的
非齐次线性方程的通解为
叫做伯努利(Bernoulli)方程。当
时,该方程不是线性的,但是通过变量的替换,便
4.可降阶的高阶微分方程
型的微分方程:微分方程
的右端仅含有自变量 x ,容易看出,只
要把
作为新的未知函数,那么微分方程
即化为新未知函数
的一
阶微分方程,两边积分,就得到一个
阶的微分方程
同理可得
依此法继续进行,接连积分 n次,便得到方程
的含有 n 个任意常数的通解。
型的微分方程:方程的右端不显含未知函数 y。如果我们设
,那么
因此,方程
,设其通解为
就成为
,又
,这是一个关于变量
的一阶微分方程
因此又得到一个一阶微分方程
对它进行积分,便得到方程
的通解为
型的微分方程:方程中不显含自变量x ,为了求出它的解,我们令
,并利用复合函数求导法则把
化为对 的导数,即
这样,方程
,设它的通解为
就成为
这是一个关于变量
分离变量并积分,便得方程
的一阶微分方程
的通解为
14.3 高阶线性微分方程
1.线性微分方程解的结构
是
在 n 阶微分方程
中, 若
的一次有理整式,则称此方程为 n 阶线性微分方程。一般形式可写成:
线性微分方程解的结构定理:
如果
是方程
的n个线性无关的解,则该方程的通解为
其中
是任意常数。
设
是方程
是对应的齐次线性方程的通解,则
是上述方程的通解。
若
和
分别是方程
与
的特解,则
是方程
的一个特解,
的特解
2.常系数线性微分方程的MATLAB符号求解
MATLAB中提供了dsolve函数求解微分方程(组)。该函数允许用字符串的形式描述微分方
程及初值、边值条件,最终将给出微分方程的解析解。
14.4 一阶微分方程初值问题的数值解
1.欧拉法及其MATLAB实现
对于一阶微分方程的初值问题
,若要求其数值解,我们可以采用
离散化方法。在求解区间
上取一组节点:
称
为步长。为简单起见,仅考虑等距步长 ,即
将方程
的两端在区间
上积分,得到
即
应用左矩形公式 :
略去上式中的
,得
,
的1个近似值
,则由上式可得
可依次求出
,则有
考虑到
。称上式即为求解初值问题的Euler公式。
,设已求得
由
2. Runge-Kutta法及其MATLAB实现
考虑微分方程
,由Lagrange微分中值定理,存在
,使得
于是,由
得
记
,则称 为区间
上的平均斜率。这样,只要给
出了
的一种算法,就可以得到求解微分方程初值问题的一种计算公式。显然,显式
Euler公式就是以 作为平均斜率 的近似。
经典四阶Runge-Kutta方法的迭代公式:
14.5 一阶微分方程组和高阶微分方程的数值解
1. 一阶微分方程组
前面研究的是求解单微分方程
的数值解法,对于微分方程组,只需将y
理解成向量,
理解成向量函数,那么对前面研究过的各种计算公式即可用到一阶
微分方程组上来。
2. 高阶微分方程
对于高阶微分方程组的数值求解,首先应将其变换成一阶显式常微分方程组。其具体
转换方法如下:(1)将微分方程的最高阶变量移到等式的左边,其他移到右边,并按阶次
从低到高排列,(这里以两个高阶微分方程的转换为例)假设两个高阶微分方程最后能够
显式的表达成下述形式:
(2)为每一阶微分式选择状态变量,最高阶除外
(3)根据(2)中选用的状态变量,写出所有状态变量的一阶微分的表达式
最后,对初值进行相应的变换,就可以得到所期盼的一阶微分方程组了。
3.微分方程组的MATLAB求解函数
MATLAB提供了一系列的函数来求解微分方程组,包括ode系列函数,另外还提供了
几类特殊的微分方程的求解函数,例如ode15s,ode15i等。
14.6 边值问题的数值解
打靶法也称为试射法,其基本思想是把边值问题作初值问题来求解,从满足
左端边界条件的解曲线中寻找也满足右端边界条件的解。
1.打靶法
线性方程边值问题的打靶法:
考虑如下给出的二阶线性边值问题
该边值问题的打靶法求解过程可以由如下步骤完成:(1)计算下面齐次微分方程在区间
上的数值解
,
,初值条件:
;(2)计算下面齐
次微分方程在区间
上的数值解
,
,初值条件:
;(3)计算下面初值问题在区间
,初值条件 :
计算
题的数值解
上的数值解
,
;(4)若
;(5)计算下面初值问题的数值解,则
,初值条件:
,则
即为原边值问
非线性方程边值问题的打靶法:
考虑二阶常微分方程
的边值问题,边界条件为
。假定
该问题可以转换为下面的初值问题
则问题转化为求解
,这是一个复杂的超越方程,可以考虑引入牛顿迭代法求
解参数 m。具体的迭代公式为:
式中
通过这些关系可以建立方程
具体计算中可以指定一个m 值,然后求解上面的初值问题,将结果代入上面的迭代公式中
迭代一步,并将结果代入上式中重新计算,直至两次计算出来的 m值的误差在允许的范围
内为止,最后将 m值代入初值问题 即可求解原始问题。
2.边值问题的MATLAB函数求解
MATLAB能求解的边值问题的一般形式如下
为方程中其他未知参数向量。该方程已知的边界值为
其中y 为状态变量向量
MATLAB提供了专门求解边值问题的bvp解算器bvpslover。要想求解一个常微分方程
的边值问题,一般应该遵循以下几个步骤:
(1)参数初始化
(2)微分方程和边值问题的MATLAB函数描述
(3)边值问题的求解
谢谢大家!