本书内容包括常微分方程两点边值问题的差分解法、椭圆型方程的差分解法、抛物型方程的差分解法、双曲型方程的差分解法和有限元方法简介。力求做到:(1)精选内容。重点介绍有限差分方法。(2)难点分散。对于差分方法,先从常微分方程两点边值问题出发,介绍差分方法的有关概念以及常用的分析技巧,然后将这些概念和技巧分别应用于椭圆型方程、抛物型方程和双曲型方程的数值求解。对于有限元方法,也先从常微分方程两点边值问题出发,介绍有限元方法的基本思想,再研究椭圆型方程的有限元解法。(3)强调会“用”各种数值方法。先举例示范,再要求学生模仿,最后到熟练掌握。书末的两个附录分别介绍有限Fourier级数法和Schr?dinger方程的差分方法。
本书是信息与计算科学及数学与应用数学专业的基础课教材,也可作为高等学校数学及其他专业研究生的教学参考书。
更多科学出版社服务,请扫码获取。
本书内容包括常微分方程两点边值问题的差分解法、椭圆形方程的差分解法、抛物型方程的差分解法、双曲型方程的差分解法和有限元方法简介。
孙志忠,男,1963年3月生。1984年、1987年在南京大学先后获得学士学位、硕士学位。1990年在中国科学院计算中心(现计算数学与科学工程计算研究所)获得博士学位。1990年至今在东南大学数学系任教。现为教授,博士生导师。1997年开始招收研究生。曾经担任东南大学数学建模队教练11年,荣获“全国数学建模优秀教练员”称号。2010年12月成为江苏省高校“青蓝工程”中青年学术带头人培养对象。
孙志忠教授的研究专业为计算数学与科学工程计算,研究方向为偏微分方程数值解法中的差分方法理论。主持完成国家自然科学基金项目3项和江苏省自然科学基金项目1项。自2006年以来,在SIAM J.Numer.Anal.,Math.Comp.,Numer.Math.,J.Comput.Phys.,Appl.Numer.Math.,Numer.Methods Partial Differential Eq,J.Comp.Appl.Math.,J.Comp.Math.,《中国科学》,《计算数学》,《应用数学学报》等国内外核心刊物上发表研究论文41篇(其中SCI论文33篇)。负责的工科研究生《数值分析》课程2002年被评为江苏省研究生培养创新工程优秀研究生课程。出版教材《计算方法与实习》、《计算方法与实习学习指导与习题解析》、《计算方法典型例题分析》、《数值分析》、《数值分析全真试题解析》和《偏微分方程数值解法》。其中,《计算方法与实习》被评为2001年度全国优秀畅销书,《数值分析》2003年被评为东南大学优秀研究生教材。2009年在科学出版社出版专著The Method of Order Reduction and Its Application to the Numerical Solutions of Partial Differential Equations。
目录
前言
第1章 常微分方程雨点边值问题的差分解法 1
1.1 Dirichlet 边值问题
1.1.1 基本辙分不等式 2
1.1.2 解的先验估计式 4
1.2 差分格式 5
1.2.1 差分格式的建立 7
1.2.2 差分格式解的存在性 8
1.2.3 差分格式的求解 9
1.2.4 差分格式解的先验估计式 13
1.2.5 差分格式解的收敛性和稳定性 17
1.2.6 Richardson 外推法 19
1.2.7 紧差分格式 21
1.3 导数边界值问题 24
1.3.1 差分格式的建立 24
1.3.2 差分格式的求解 26
小结与拓展 30
习题1 31
第2章 椭圆型方程的差分解法 34
2.1 Dirichlet 边值问题 34
2.2 五点差分格式 36
2.2.1 差分格式的建立 36
2.2.2 差分格式解的存在性 39
2.2.3 差分格式的求解 39
2.2.4 差分格式解的先验估计式 43
2.2.5 差分格式解的收敛性和稳定性 45
2.2.6 Richardson 外推法 46
2.3 紧差分格式 49
2.3.1 差分格式的建立 49
2.3.2 差分格式解的存在性 50
2.3.3 差分格式的求解 51
2.3.4 差分格式解的先验估计式 55
2.3.5 差分格式解的收敛性和稳定性 58
2.4 导数边界值问题 59
2.4.1 差分格式的建立 59
2.4.2 差分格式的求解 61
2.5 双调和方程边值问题 64
小结与拓展 65
习题2 66
第3章 抛物型方程的差分解法 69
3.1 Dirichlet 初边值问题 69
3.2 向前Euler 格式 71
3.2.1 差分格式的建立 73
3.2.2 差分格式解的存在性 74
3.2.3 差分格式的求解 74
3.2.4 差分格式解的先验估计式 76
3.2.5 差分格式解的收敛性和稳定性 78
3.3 向后Euler 格式 80
3.3.1 差分格式的建立 81
3.3.2 差分格式解的存在性 82
3.3.3 差分格式的求解 83
3.3.4 差分格式解的先验估计式 86
3.3.5 差分格式解的收敛性和稳定性 87
3.4 Richardson 格式 88
3.4.1 差分格式的建立 88
3.4.2 差分格式的求解 89
3.4.3 差分格式的不稳定性 90
3.5 Crank-Nicolson 格式 92
3.5.1 差分格式的建立 92
3.5.2 差分格式解的存在性 93
3.5.3 差分格式的求解 94
3.5.4 差分格式解的先验估计式 97
3.5.5 差分格式解的收敛性和稳定性 99
3.5.6 Richardson 外推法 100
3.6 紧差分格式 102
3.6.1 差分格式的建立 102
3.6.2 差分格式解的存在性 104
3.6.3 差分格式的求解 106
3.6.4 差分格式解的先验估计式 108
3.6.5 差分格式解的收敛性和稳定性 109
3.7 非线性抛物方程 110
3.7.1 向前Euler 格式 111
3.7.2 向后Euler 格式 117
3.7.3 Cr创业-Nioolson 格式 122
3.8 导数边界值问题 130
小结与拓展 132
习题3 134
第4章 双曲型方程的差分解法 143
4.1 Dirichlet 初边值问题. 143
4.2 显式差分格式 145
4.2.1 差分格式的建立 145
4.2.2 差分格式解的存在性 148
4.2.3 差分格式的求解 148
4.2.4 差分格式解的先验估计式 151
4.2.5 差分格式解的收敛性和稳定性 155
4.3 隐式差分格式 157
4.3.1 差分格式的建立 157
4.3.2 差分格式解的存在性 159
4.3.3 差分格式的求解 162
4.3.4 差分格式解的先验估计式 163
4.3.5 差分格式解的收敛性和稳定性 166
4.4 紧差分格式 168
小结与拓展 171
习题4 171
第5章 高维方程的交替方向法 178
5.1 二维抛铀型方程的交替方向隐格式 178
5.1.1 差分格式的建立 179
5.1.2 差分格式解的存在性 181
5.1.3 差分格式的求解 182
5.1.4 差分格式解的先验估计式 187
5.1.5 差分格式解的收敛性和稳定性 188
5.2 二维双曲型方程的交替方向隐格式 189
5.2.1 差分格式的建立 190
5.2.2 差分格式解的存在性 192
5.2.3 差分格式的求解 193
5.2.4 差分格式解的先验估计式 198
5.2.5 差分格式解的收敛性和稳定性 200
5.3 三维抛物型方程的紧交替方向隐格式. 202
5.3.1 差分格式的建立 202
5.3.2 差分格式解的存在性 205
5.3.3 差分格式的求解 206
5.3.4 差分格式解的先验估计式 210
5.3.5 差分格式解的收敛性和稳定性
5.4 二维双曲型方程的紧交替方向隐格式 213
小结与拓展216
习题5 216
第6章 有限元方法简介 220
6.1 常微分方程边值问题的有限元解法 220
6.1.1 变分原理 221
6.1.2 Ritz-Galerkin 方法 224
6.1.3 有限元方法 229
6.2 椭圆型方程边值问题的有限元解法 237
6.2.1 变分原理 237
6.2.2 Ritz-Galerkin 方法 239
6.2.3 有限元方法 243
6.3 抛物型方程初边值问题的有限元解法 251
小结与拓展254
习题6 254
参考文献 56
附录A 有限Fourier 级数 257
A.1 有限Fourier 级数 257
A.2 两点边值问题差分解的先验估计式 260
A.3 抛物型方程第一边值问题差分解的先验估计式 262
A.4 双曲型方程第一边值问题差分解的先验估计式 264
小结与拓展 267
附录B Schrodinger 方程的差分方法 268
B.1 Schrodinger 方程及其守恒律 268
B.2 两层非线性差分格式 270
B.2.1 差分格式的建立 270
B.2.2 差分格式解的守恒性和有界性 271
B.2.3 差分格式解的存在唯一性 274
B.2.4 差分格式的收敛性 276
B.2.5 差分格式的选代解法 277
B.3 三层线性化差分格式 279
B.3.1 差分格式的建立 279
B.3.2 差分格式的可解性 280
B.3.3 差分格式解的守恒性和有界性 281
B.3.4 差分格式的收敛性 284
B.4 紧差分格式 286
B.4.1 差分格式的建立 286
B.4.2 差分格式的可解性和收敛性 288
小结与拓展 291
第1 章常微分方程两点边值问题的差分解法
有限差分方法是用于微分方程定解问题求解的最广泛的数值方法, 其基本思想是
用离散的只含有有限个未知量的差分方程组去近似代替连续变量的微分方程和定解
条件, 并把差分方程组的解作为微分方程定解问题的近似解. 常微分方程两点边值问
题可以看成一维椭圆型方程的定解问题, 模型简单. 本章研究此模型问题的差分解法,
介绍微分方程数值解法中的一些基本概念, 分析差分格式的能量方法和提高数值解精
度的Richardson 外推法.
1.1 Dirichlet 边值问题
考虑如下定解问题:
?u00 + q(x)u = f(x); a < x < b; (1.1.1)
u(a) = ?; u(b) = ˉ; (1.1.2)
其中q(x) > 0; f(x) 为已知函数, ? 和ˉ 为已知常数.
当q(x) ′ 0 时, 对方程(1.1.1) 的两边从a 到x 积分一次, 得到
u0(x) = u0(a) ? Z x
a
f(s)ds:
将上式再从a 到x 积分一次, 并应用左边界条件u(a) = ?; 得到
u(x)=? + u0(a)(x ? a) ? Z x
a "Z ?
a
f(s)ds#d?
=? + u0(a)(x ? a) ? Z x
a ?Z x
s
f(s)d??ds
=? + u0(a)(x ? a) ? Z x
a
(x ? s)f(s)ds:
再应用右边界条件u(b) = ˉ; 可得
u0(a) =
ˉ ? ? + Z b
a
(b ? s)f(s)ds
b ? a
:
因而(1.1.1), (1.1.2) 的解可表示为
u(x) = ? + "ˉ ? ? + Z b
a
(b ? s)f(s)ds#x ? a
b ? a ? Z x
a
(x ? s)f(s)ds:
要想求出某点处的值还需要借助于数值积分. 当q(x) 6′ 0 时, 用同样的方法要想得到
解的精确表达式是困难的, 甚至是办不到的. 读者可对q(x) ′ 1 的情形试一试.
尽管难以求出精确解, 但我们可以设法给出解的估计式.
1.1.1 基本微分不等式
本书中Cm[a; b] 表示闭区间[a; b] 上所有具有m 阶连续导数的函数的集合.
设u(x) 2 C[a; b]: 记
kuk1 = max
a6x6b ju(x)j; kuk = sZ b
a
u2(x)dx;
如果u(x) 2 C0[a; b], 则进一步记
juj1 = sZ b
a
[u0(x)]2dx; kuk1 = qkuk2 + juj2
1:
引理1.1 (a) 设u(x) 2 C2[a; b]; v(x) 2 C1[a; b]; 则有
?Z b
a
u00(x)v(x)dx = Z b
a
u0(x)v0(x)dx + u0(a)v(a) ? u0(b)v(b); (1.1.3)
(b) 设u(x) 2 C2[a; b]; 且u(a) = 0; u(b) = 0; 则有
?Z b
a
u00(x)u(x)dx = juj2
1 ; (1.1.4)
(c) 设v(x) 2 C1[a; b]; 且v(a) = v(b) = 0; 则有
kvk1 6
pb ? a
2 jvj1; (1.1.5)
kvk 6 b ? a
p6 jvj1; (1.1.6)
(d) 设v(x) 2 C1[a; b]; 且v(a) = v(b) = 0; 则对任意" > 0 有
kvk2
1 6 "jvj2
1 +
1
4"kvk2; (1.1.7)
(e) 设v(x) 2 C1[a; b]; 则对任意" > 0 有
kvk2
1 6 "jvj2
1 + μ1
"
+
1
b ? a?kvk2: (1.1.8)
证明(a) 由分部积分直接可得(1.1.3).
(b) 由(1.1.3) 易得(1.1.4).
(c) 对于任意的x 2 (a; b); 有
v(x) = Z x
a
v0(s)ds; (1.1.9)
v(x) = ?Z b
x
v0(s)ds: (1.1.10)
将(1.1.9) 和(1.1.10) 两端平方并应用Cauchy-Schwarz 不等式, 得到
v2(x) 6 Z x
a
ds Z x
a
[v0(s)]2ds = (x ? a) Z x
a
[v0(s)]2ds; (1.1.11)
v2(x) 6 Z b
x
ds Z b
x
[v0(s)]2ds = (b ? x) Z b
x
[v0(s)]2ds: (1.1.12)
将(1.1.11) 乘以b ? x, 将(1.1.12) 乘以x ? a, 并将结果相加, 得
(b ? a)v2(x) 6 (x ? a)(b ? x) Z b
a
[v0(s)]2ds = (x ? a)(b ? x)jvj2
1 : (1.1.13)
注意到当x 2 (a; b) 时,
(x ? a)(b ? x) 6
(b ? a)2
4 ;
由(1.1.13) 得
(b ? a)v2(x) 6
(b ? a)2
4 jvj2
1 ; x 2 (a; b):
将上式两边开方, 得
jv(x)j 6
pb ? a
2 jvj1; x 2 (a; b);
易知
kvk1 6
pb ? a
2 jvj1:
对(1.1.13) 式两端关于x 积分, 得
(b ? a) Z b
a
v2(x)dx 6 jvj2
1 Z b
a
(x ? a)(b ? x)dx 6
(b ? a)3
6 jvj2
1;
两边开方得
kvk 6 b ? a
p6 jvj1:
(d) 对任意" > 0; 有
v2(x) = Z x
a
d
ds
[v2(s)]ds = 2 Z x
a
v(s)v0(s)ds;
v2(x) = ?Z b
x
d
ds
[v2(s)]ds = ?2 Z b
x
v(s)v0(s)ds:
将以上两式相加并除以2; 得到
v2(x)6Z x
a jv(s)v0(s)j ds + Z b
x jv(s)v0(s)j ds = Z b
a jv(s)v0(s)j ds
6" Z b
a
[v0(s)]2ds +
1
4" Z b
a
[v(s)]2ds = "jvj2
1 +
1
4"kvk2; a 6 x 6 b:
因而(1.1.7) 成立.
(e) 留给读者作为练习.
引理证毕.
1.1.2 解的先验估计式
我们给出齐次边值问题解的先验估计式.
定理1.1 设v(x) 2 C2[a; b] 为两点边值问题
?v00 + q(x)v = f(x); a < x < b; (1.1.14)
v(a) = 0; v(b) = 0 (1.1.15)
的解, 其中q(x) > 0, 则有
jvj1 6 b ? a
p6 kfk; (1.1.16)
kvk1 6
(b ? a)2
2p6 kfk1: (1.1.17)
证明(a) 将(1.1.14) 的两端同乘以v(x), 并关于x 在(a; b) 上积分, 得
?Z b
a
v00(x)v(x)dx + Z b
a
q(x)v2(x)dx = Z b
a
f(x)v(x)dx: (1.1.18)
注意到(1.1.15), 由引理1.1 有
?Z b
a
v00(x)v(x)dx = jvj2
1:
由q(x) > 0; 有
Z b
a
q(x)v2(x)dx > 0:
此外, 应用Cauchy-Schwarz 不等式, 有
Z b
a
f(x)v(x)dx 6 kfk ¢ kvk:
将以上三式代入(1.1.18), 得
jvj2
1 6 kfk ¢ kvk:
再次应用引理1.1, 有
jvj2
1 6 b ? a
p6 kfk ¢ jvj1;
于是
jvj1 6 b ? a
p6 kfk:
(b) 注意到
kfk 6 pb ? akfk1;
由(1.1.16) 及引理1.1, 得
kvk1 6
pb ? a
2 jvj1 6
pb ? a
2 ¢
b ? a
p6 kfk 6
(b ? a)2
2p6 kfk1:
定理证毕.
称(1.1.16) 和(1.1.17) 为两点边值问题(1.1.14), (1.1.15) 解的先验估计式.
1.2 差分格式
由1.1 节我们知道对于一般的q(x); 要想求出问题(1.1), (1.2) 的精确解的表达式
是很难做到的. 这就促使人们换个思路去寻找近似解(数值解).
首先我们列出几个常用的数值微分公式:
引理1.2 设h > 0 和c 为两个常数,
(a) 如果g(x) 2 C2[c ? h; c + h], 则有
g(c) =
1
2
[g(c ? h) + g(c + h)] ?
h2
2 g00(?0); c ? h < ?0 < c + h; (1.2.1)
(b) 如果g(x) 2 C2[c; c + h], 则有
g0(c) =
1
h
[g(c + h) ? g(c)] ?
h
2 g00(?1); c < ?1 < c + h; (1.2.2)
(c) 如果g(x) 2 C2[c ? h; c], 则有
g0(c) =
1
h
[g(c) ? g(c ? h)] + h
2 g00(?2); c ? h < ?2 < c; (1.2.3)
(d) 如果g(x) 2 C3[c ? h; c + h], 则有
g0(c) =
1
2h
[g (c + h) ? g (c ? h)] ?
h2
6 g000(?3); c ? h < ?3 < c + h; (1.2.4)
(e) 如果g(x) 2 C4[c ? h; c + h], 则有
g00(c) =
1
h2 [g(c + h) ? 2g(c) + g(c ? h)] ?
h2
12 g(4)(?4); c ? h < ?4 < c + h; (1.2.5)
(f) 如果g(x) 2 C3[c; c + h], 则有
g00(c) =
2
h ?g(c + h) ? g(c)
h ? g0(c)??
h
3 g000(?5); c < ?5 < c + h; (1.2.6)
(g) 如果g(x) 2 C6[c ? h; c + h]; 则有[13]
1
12
[g00(c?h)+10g00(c)+g00(c+h)]=
1
h2 [g(c+h)?2g(c)+g(c?h)]
+ h4
240g(6)(?6); ?6 2 (c ? h; c + h): (1.2.7)
证明应用带微分余项的Taylor 公式很容易得到式(1.2.1)?(1.2.6). 下面用带
积分余项的Taylor 公式证明(1.2.7).
由带积分余项的Taylor 公式可得
g(c + h)=g(c) + hg0(c) + h2
2 g00(c) + h3
6 g000(c) + h4
24 g(4)(c)
+ h5
120g(5)(c) + h6
120 Z 1
0
g(6)(c + sh)(1 ? s)5ds;
g(c ? h)=g(c) ? hg0(c) + h2
2 g00(c) ?
h3
6 g000(c) + h4
24 g(4)(c)
?
h5
120g(5)(c) + h6
120 Z 1
0
g(6)(c ? sh)(1 ? s)5ds:
将以上两式相加, 得
1
h2 [g(c + h) ? 2g(c) + g(c ? h)]
=g00(c) + h2
12 g(4)(c) + h4
120 Z 1
0 hg(6)(c + sh) + g(6)(c ? sh)i(1 ? s)5ds: (1.2.8)
类似地, 由带积分余项的Taylor 公式
g00(c + h)=g00(c) + hg(3)(c) + h2
2 g(4)(c) + h3
6 g(5)(c)
+h4
6 Z 1
0
g(6)(c + sh)(1 ? s)3ds;
g00(c ? h)=g00(c) ? hg(3)(c) + h2
2 g(4)(c) ?
h3
6 g(5)(c)
+h4
6 Z 1
0
g(6)(c ? sh)(1 ? s)3ds
可得
1
12
[g00(c + h) + 10g00(c) + g00(c ? h)]
=g00(c) + h2
12 g(4)(c) + h4
72 Z 1
0 hg(6)(c + sh) + g(6)(c ? sh)i(1 ? s)3ds: (1.2.9)