081数值计算方法—常微分方程组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
科学计算—理论、方法
及其基于MATLAB 的程序实现与分析
微分方程(组)数值解法
§1 常微分方程初值问题的数值解法
微分方程(组)是科学研究和工程应用中最常用的数学模型之一。如揭示质点运动规律的Newton 第二定律:
()()()⎪⎩⎪⎨⎧'='==0
00022x t x x t x t F dt x
d m (1) 和刻画回路电流或电压变化规律的基尔霍夫回路定律等,但是,只有一些简单的和特殊的常微分方程及常微分方程组,可以求得用公式给出的所谓“解析解”或“公式解”,如一阶线性微分方程的初值问题:
()
()0
0y y t f ay dt
dy
=+= (2) 的解为:
()()()τττd f e y e t y t
t a at ⎰-+=00 (3)
但是,绝大多数在实际中遇到的常微分方程和常微分方程组得不到“解析解”,因此,基于如下的事实:
1、绝大多数的常微分方程和常微分方程组得不到(有限形式的)解析解;
2、实际应用中往往只需要知道常微分方程(组)的解在(人们所关心的)某些点处的函数值(可以是满足一定精度要求的近似值);
如果只需要常微分方程(组)的解在某些点处的函数值,则没有必要非得通过求得公式解,然后再计算出函数值不可,事实上,我们可以采用下面将介绍的常微分方程(组)的初值问题的数值解法,就可以达到这一目的。
一般的一阶常微分方程(组)的初值问题是指如下的一阶常微分方程(组)的定解问题:
()()0
00,y t y t t t y t F dt
dy
f
=≤≤= (7)
其中
()()()()⎪⎪⎪⎪
⎪⎭
⎫ ⎝⎛=t y t y t y t y n 21 (8)
()()()()⎪⎪⎪⎪
⎪⎭
⎫ ⎝⎛=y t f y t f y t f y t F n ,,,,21
(9) 常微分方程(组)的初值问题通常是对一动态过程(动态系统、动力系统)演化规律的描述,求解常微分方程(组)的初值问题就是要了解和掌握动态过程演化规律。
§1.1 常微分方程(组)的Cauch 问题数值解法概论
假设要求在点(时刻)k t ,n k ,,2,1 =处初值问题(7)的解
()00,,y t t y y =的(近似)值,如果已求得k t 时刻的值()k t y 或它的近似值k y (如0t 时刻的值()0t y ),那么将式(7)的两端在区间[]1,+k k t t 上积分
()()()()dt t y t f t y t y dt dt
dy
k k
k k
t t k k t t ⎰⎰
++=-=+11
,1 (10)
可得
()()()()dt t y t f t y t y k k
t t k k ⎰
++
=+1
,1 (11)
或
()()()dt t y t f y y t y k k
t t k k k ⎰
++
=≈++1
,11 (12)
显然,为了利用式(11)或(12)求得()1+k t y 的精确值(近似值1+k y ),必须计算右端的积分,这是问题的关键也是难点所在,如前所述,一般得不到精确的公式解,因此需要采用数值积分的方法求其近似解, 可以说,不同的式值积分方法将给出不同的Cauch 问题的数值解法。 §1.2 最简单的数值解法——Euler 方法
假设要求在点(时刻)kh t t k +=0,n
t t h f 0
-=
,n k ,,2,1 =处初值问
题(7)的解()t y y =的近似值。首先对式(7)的两端积分,得
()()()()dt t y t f t y t y dt dt
dy
k k k k
t t k k t t ⎰⎰
++=-=+11
,1 (13) 对于式(13)的右边,如果用积分下限k t t =处的函数值()()k k t y t f ,代替被积函数作积分(从几何上的角度看,是用矩形面积代替曲边梯形面 积),则有
()()()()()[]k k t t
k k t y t hf dt t y t f t y t y k k
,,1
1≈=-⎰++ (14)
进而得到下式给出的递推算法—Euler 方法
()()0
01,,2,1,y t y n
k y t hf y y k k k k ==+=+ (15)
例1 用Euler 方法解如下初值问题,取3.0=h ,
()1
03
0sin 23=≤≤-=y t t y y dt
dy
解:由(15)得
()1
010
,,2,1sin 6.03.13
1==-=+y k t y y y k
k k k
结果如下:
如果取1.0=h ,其结果如下图所示:
Euler_Method
§1.3 改进的Euler 方法
对于(15)的右边,如果被积函数用积分限k t t =和1+=k t t 处的函数值的算术平均值代替(几何上,是用梯形面积代替曲边梯形面积),则有
()()()()()()()()[]111,,2
,1++++≈
=-⎰
+k k k k t t k k t y t f t y t f h
dt t y t f t y t y k k
(16) 进而得到下式给出的递推算法:
()()[]()0
0111,,2,1,,2
y t y n
k y t f y t f h
y y k k k k k k ==++=+++ (17)