实验四微分方程数值解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四 微分方程数值解及应用

一 引例

在18世纪末,英国人马尔萨斯在他出版的一本专著中,对人口数量的增长趋势进行了模拟,提出了人口的指数增长模式,导致最后会出现人口数量超过地球的承受容量,即人口爆炸问题。虽然马尔萨斯人口模拟忽略了一些人口增长的重要因素,但是他为以后人口模型的改进提供了基础,下面将介绍著名的马尔萨斯人口模型及改进。

马尔萨斯认为:单位时间内,人口的出生数量和死亡数量与人口总数成正比例,即人口出生率和死亡率都是常数,因此人口的净增长率为常数。

设时刻t 的人口数量为()p t ,人口出生率为b

,死亡率为d ,则有:

()()()()p t t p t bp t t dp t t +∆=+∆-∆,

从而

()

()()()dp t bp t dp t kp t dt

=-=, 其中:k

b d =- 称为净增长率(常数)。因此马尔萨斯人口模型如下:

()

()dp t kp t dt

=,()00p t p =。

该微积分方程初值问题的解析解:

()0()0k t t p t p e -=。

用此模型预测某国1850年人口数量的误差为1% ,1900年人口数量的误差为31%,2000年人口数量的误差达567%,2050年将达到80多个亿。 该模型对于长期预测不合理。

针对马尔萨斯人口模型的不足,1837年荷兰生物学家Verhulst 提出了如下改进: 由于资源的限制,人口存在最大值(极限)M 。因此,人口增长率不应该是常数,假设增长率k

是随着人口数量接近M 而线性递增:

()k r M p =-,

从而得到改进后的人口模型为

()

()dp t kp r M p p dt

==- ,()00p t p =, 称为逻辑斯谛增长模型。

刻画世界千变万化的规律,微分方程是最有力的工具。

二、微分方程的数值解法

讨论一阶微分方程的初值问题

00(,),()dy

f x y y x y dx

==, (1) 或一阶微分方程组的初值问题 00()(,),()x t f t x x t x ==

其中

()x t 是向量函数,t 为自变量。

微分方程的数值解法的基本原理: 引入自变量的取值点列

{}n x ,定义1n n n h x x -=-,称n h 为步长,常用等间距

的步长 (n h 与n

无关,记为h ),假设精确解为

{}()n y x 。为了寻求(n y x )的近似

值n y ,根据一定的原理,结合当前得到的近似解,近似地表示该点或前一点的导数值,由此推出计算n y 的迭代公式。

1. 欧拉方法

欧拉方法是一种简单的求解初值问题的数值逼近方法,其基本思路为:

对方程(1),在小区间1[,]n n x x +上,用差商1()n n y x y x h

+-() 代替导数'

y ,

1)用左端点n x 替换函数(,)f x y 中的x ,得到方程(1)的近似表达式

1()()(,())n n n n y x y x hf x y x +≈+

设(n n y x y ≈)

,则1()n y x +的近似值为 1

(,),0,1,

n n n n y y hf x y n +=+= (2)

其中00(,)x y 为初始点,(2)称为显示欧拉公式,也称向前欧拉公式。 向前欧拉法简单易于计算,但精度却不高,收敛速度慢。 2)用右端点1n x +替换函数(,)f x y 中的x ,

1

11(,),0,1,

n n n n y y hf x y n +++=+= (3)

其中00(,)x y 为初始点,(3)称为隐示欧拉公式,也称向后欧拉公式。 这是一个非线性方程,无法直接计算1n y +。在计算精度、收敛速度方面与向前

欧拉算法相同。

3)将(2)式与(3)式加以平均,得到

1111

[(,),(,)],0,1,2

n n n n n n y y h f x y f x y n +++=+

= (4)

称为梯形公式。与前两个方法相比,该方法的计算精度高、收敛速度快。但迭代计算与(3) 式一样繁!

4)改进的欧拉公式:先由公式(2)算出1n y +的预测值1n y

+,然后带入梯形公式(4)的右端,作为校正,即 1

(,)n n n n y y hf x y +=+

1111

[(,),(,)],0,1,

2

n n n n n n y y h f x y f x y n +++=+

= (5)

称为改进的欧拉公式。还可以写为

1121211

(),2(,),

(6)

(,)

n n n n n n h y y k k k f x y k f x y hk ++⎧

=++⎪⎪

=⎨⎪=+⎪⎩

人们常用的是向前欧拉公式和改进的欧拉公式。且欧拉法可以推广到求解微分方程组的情形。

练习1:用上述方法求解微分方程初值问题

'1y y x =-++

要求:取步长0.10.001h =和 ,分别用三种数值解法求解,并结合其精确解,对求解误差进行分析比较。

首先用解析法得到其精确解x

y x e -=+。

其次用数值解法(0.1)h =取 向前欧拉算法 迭代公式为

100.90.10.1,0,1,,1n n n y y x n y +=++==

向后欧拉算法 迭代公式为

111100.1(1),0.10.11)/1.1,0,1,

,1n n n n n n n y y y x y y x n y ++++=+-++=++==将它变形为(

相关文档
最新文档