常微分方程与偏微分方程数值方法比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常微分方程与微分方程数值方法比较
1. 微分方程数值方法的有关概念
首先回顾微分方程的定义与分类。
含有自变量、未知函数及其导数(微分或偏导数)的方程称为微分
方程;如果未知函数只含有一个变量,则称为常微分方程;如果未知函数含有若干个变量,则称为偏微分方程。
微分方程中未知函数的导数或偏导数的最高阶次称为微分方程的阶。
例如:微分方程
(,)du
f t u dt
=是一阶常微分方程, 而2
22u u a t x
∂∂=∂∂是二阶偏微分方程。
所有使微分方程成为等式的函数,都是微分方程的解;在 n 阶微分方程中,将微分方
程的含有 n 个任意常数的解称为该微分方程的通解。
为确定微分方程通解中的任意常数而需要的条件称为定解条件;定解条件可以分为初始条件和边界条件两类。
由微分方程和定解条件一起构成的问题称为微分方程定解问题。
根据定解条件的不同,常微分方程分为初值问题和边值问题;若定解条件是描述函数在一点(或初始点)处状态的,则称为初值问题,一阶常微分方程初值问题的一般形式为:
2(0)1dy x y dx
y y ⎧=-⎪
⎨⎪=⎩
若定解条件描述了函数在至少两点(或边界)处状态的称为边值问题,例如:
2
22(0,)(,)0(,0)()u u a t x u t u L t u x f x ⎧∂∂=⎪∂∂⎪⎪
==⎨⎪=⎪⎪⎩
2.常微分方程数值方法
有限差分法是常微分方程中数值解法中通常有效的方法,建立差分算法的两个基本的步
骤:
1. 建立差分格式,包括:a. 对解的存在域剖分;b. 采用不同的算法可得到不同的逼近误差—截断误差(相容性);c.数值解对真解的精度—整体截断误差(收敛性);d.数值解收敛于真解的速度;e. 差分算法—舍人误差(稳定性).
2.差分格式求解,将积分方程通过差分方程转化为代数方程求解,一般常用递推算法。
差分方法的基本思想“就是以差商代替微商”,差分形式如下:
1. 1()()()()i i i u t u t u t O h h +-'=
+ 2. 1()()
()()i i i u t u t u t O h h --'=+
3. 211()()()()2i i i u t u t u t O h h +--'=+
4. 2
112
()2()()()()i i i i u t u t u t u t O h h
+--+''=+ 对初值问题中的导数进行不同的离散化处理。
对于初值问题的数值解法,首先要解决的问题就是如何对微分方程进行离散化,建立求数值解的递推公式。
递推公式通常有两类,一类是计算yi+1时只用到xi+1, xi 和yi ,即前一步的值,因此有了初值以后就可以逐步往下计算,此类方法称为单步法;其代表是龙格—库塔法。
另一类是计算yi+1时,除用到xi+1,xi 和yi 以外,还要用到, (1,2,,)i p i p x y p k --= ,即前面k 步的值,此类方法称为多步法;其代表是亚当斯法。
欧拉(Euler )方法是解初值问题的最简单的数值方法。
初值问题
00
(,)()y f x y y x y '=⎧⎨
=⎩
的解y=y(x)代表通过点00(,)x y 的一条称之为微分方程的积分曲线。
积分曲线上每一点
(,)x y 的切线的斜率()y x '等于函数(,)f x y 在这点的值。
通常取1i i i x x h h +-== (常数),
则Euler 法的计算格式
100(,)()i i i i y y hf x y y y x +=+⎧⎨
=⎩ i=0,1,…,n
带入不同的差分方法,构造出了隐式欧拉法、梯形公式、中点欧拉公式
为了提高数值解法的精度,又发展出改进欧拉法,然后,通过在
[]1,i i x x +这一步内多预
报几个点的斜率值,然后将其加权平均作为平均斜率,则可构造出更高精度的计算格式,这就是龙格—库塔(Runge-Kutta )法的基本思想,亚当姆斯(Adams )方法是设用xi,xi+1两点
的斜率值加权平均作为区间
[]1,i i x x +上的平均斜率,有计算格式
[]111
11(1)(,)
(,)
i i i i i i i i i i y y h y y y f x y y f x y λλ+----''⎧=+-+⎪
'=⎨⎪'=⎩ 将1i y -'在xi 处Taylor 展开 2311
()()()2!
i i i y y y h y h O h -'''''''=+-+
-+代入计算因此有 231()()()()i i i i y y x hy x h y x O h λ+'''=+-+这样导出的计算格式11(3)2
i i i i h
y y y y +-''=+-称
之为二阶亚当姆斯格式。
类似地可以导出三阶亚当姆斯格式。
常微分方程初值问题的基本数值解法。
包括单步法和多步法。
单步法主要有欧拉法、改进欧拉法和龙格—库塔方法。
多步法是亚当姆斯法。
它们都是基于把一个连续的定解问题离散化为一个差分方程来求解,是一种步进式的方法。
用多步法求常微分方程的数值解可获得较高的精度。
3.偏微分方程数值方法
差分方法又称为有限差分方法或网格法,是求偏微分方程定解问题的数值解中应用最广泛的方法之一。
它的基本思想是:先对求解区域作网格剖分,将自变量的连续变化区域用有限离散点(网格点)集代替;将问题中出现的连续变量的函数用定义在网格点上离散变量的函数代替;通过用网格点上函数的差商代替导数,将含连续变量的偏微分方程定解问题化成只含有限个未知数的代数方程组(称为差分格式)。
如果差分格式有解,且当网格无限变小时其解收敛于原微分方程定解问题的解,则差分格式的解就作为原问题的近似解(数值解)。
因此,用差分方法求偏微分方程定解问题一般需要解决以下问题:(i )选取网格; (ii )对微分方程及定解条件选择差分近似,列出差分格式; (iii )求解差分格式;
(iv )讨论差分格式解对于微分方程解的收敛性及误差估计。
下面我们只对偏微分方程的差分解法作一简要的介绍。
(二维)一、二阶偏导数的有限差分近似
1.(,)
(,)(,)
()i j i j i j x y u x h y u x y u O h x
h
+-∂=
+∂
1(,)
i j j j i i x y u u u
x h +-∂=∂
2.
(,)
(,)(,)
()
i j i j i j x y u x y u x h y u O h x h
--∂=
+∂1(,)
i j j j i i x y u u u
x
h
--∂=∂
3.
2
(,)
(,)(,)
()2i j i j i j x y u x h y u x h y u O h x
h
+--∂=
+∂
11(,)
2i j j j i i x y u u u
x
h
+--∂=∂
5.
1111
21111
(,)1()22i
j
j j j j i i i i x y u u u u u x y h k
++--+-+---+∂=∂∂22()()O h O k + 如上所示,其中有向前差分,向后差分,中心差分,在实际计算中,会通过对三种方式的组
合差分来对不同维方向进行差分,如迎风格式、蛙跳格式、Lax 格式。
要得到偏微分方程的唯一解,需要定解条件,即问题的初始和边界条件。
边界条件有三类:第一类是在边界上直接给出未知函数的数值 =μα,也称为 Dirichlet 条件;第二类是在边界上给定未知函数的法向导数值/=n μβ∂∂,也称 Neumnann 条件;第三类边界条件是 Dirichlet 条件和 Neumann 条件的线性组合/=n μμγ∂∂+,也称 Robbins 条件。
多数情况下定解条件为混合条件
差分过程的网格剖分可分为矩形网格,三角形网格,对比之下,三角形网格可以局部加密,对不规则图形的计算更准确。
避免了矩形网格的计算量大缺点
偏微分方程还可根据表达式形势不同分为:椭圆型、抛物型、双曲型
矩形网格计算简单,以热传导方程(抛物方程)矩形网格计算为例做下对比 1. 热传导方程的介绍
2
22(0,)(,)0(,0)()u u a t x u t u L t u x f x ⎧∂∂=⎪∂∂⎪⎪
==⎨⎪=⎪⎪⎩
2.离散化0(0,)0j u u jk == (,)0j N u u L t == 0(,0)()i i u u ih f ih f ===
(1)向前差分格式:1211
2
2j j j j j
i i i i i u u u u u a k h
++---+=计算:111(12)j j j j i i i i u su s u su ++-=+-+ 2
2ka s h
=
这是一个显式格式(四点格式)
每一层各个节点上的值是通过一个方程组求解得到的。
这可以从下面的计算过程看出来。
10001210
1
0002321
1000
3432
1000112(12)(12)(12)(12)N N N N u su s u su u su s u su u su s u su u su s u su ---⎧=+-+⎪=+-+⎪⎪=+-+⎨⎪⎪⎪=+-+⎩
系数矩阵为12121212s s s s s s s s -⎛⎫
⎪
- ⎪ ⎪ ⎪- ⎪ ⎪-⎝⎭ 上述显示偏微分方程求解方法与常微分方程求解原理类似,都是以前一步的的值推出下一步
的值,但是偏微分方程是以层的步进格式进行的。
(2)向后差分格式:1111
211
2
2j j j j j i i i i i u u u u u a k h
+++++---+=,11111(12)j j j j i i i i su s u su u ++++--++-= 11121011113212111432311111(12)(12)(12)(12)j j j j
j j j j j j j j j j j j
N N N N su s u su u su s u su u su s u su u su s u su u +++++++++++++-⎧-++-=⎪-++-=⎪⎪-++-=⎨⎪⎪
⎪-++-=⎩
其矩阵表达式如下:111122111112121212j j
j j j j N N j j N N u u s s u u s s s s s u u s s u u +++--+⎛⎫⎛⎫
+-⎛⎫ ⎪ ⎪ ⎪-+ ⎪ ⎪
⎪ ⎪ ⎪
⎪= ⎪ ⎪
⎪-+- ⎪ ⎪
⎪ ⎪ ⎪ ⎪ ⎪ ⎪-+⎝⎭⎝⎭⎝⎭
常微分方程隐式方程的解法需用迭代法求解,偏微分方程中当知道第n 层上的j
i u 时,要确定第n+1层上各点值1
j i u +必须通过求解一个线性代数方程组。