在线时间 13 小时 最后登录 2013-7-5 注册时间 2010-4-28 听众数 10 收听数 0 能力 0 分 体力 7769 点 威望 0 点 阅读权限 100 积分 2645 相册 1 日志 21 记录 0 帖子 586 主题 143 精华 0 分享 7 好友 96
升级 21.5%
TA的每日心情 擦汗 2013-7-5 15:20
签到天数: 8 天
[LV.3]偶尔看看II
自我介绍 200 字节以内
不支持自定义 Discuz! 代码
群组 : 南工程联盟
群组 : Matlab讨论组
群组 : 数学建摸协会
群组 : 江苏建模
群组 : 数学与机器人
【前言】自然是解题的好手。2 N& z7 M% H0 b, D+ d7 }
) ^$ i/ h( X0 `0 n
你的手每次划过空中,自然就给出了一组微分方程的数值解,而同样的一组微分方程解的性质,却已困扰数学界数百年。
# @ j% ?& ^, _% b1 ?. u
& c# ], O7 r+ Y/ ] 一道光传入你的眼睛,它走的路径便需要数学家用一种繁复的数学技巧——变分法——才能计算出来,而光,天生就知道怎么走。
4 X4 B3 i; Y0 t( T" G) t* ~ 1 ~/ c+ ~: J6 {, d5 a
蚂蚁并没有人那样的智慧,它们只有简单的脑,能看到的也就是它面前的一点点距离,但一群蚂蚁可以找到从它们的巢穴到食物的最短距离。
1 }9 C+ ? t _( M' g6 s 1 L1 z$ q0 T8 _! t
螽斯尽然愚笨,但它在漫长的演化路上学会了模仿蟋蟀求偶的鸣叫来诱捕这些可怜的受害者。而蟋蟀同时也演化出了一些判别的方法,与螽斯展开了一场演化军备竞赛。5 e& ^" j; {( a0 S
5 i9 p' d& F1 [& _, R
分子没有意识,但在退火之下,它们能形成近乎完美的晶体。没有人命令它们,它们自然而然就知道自己应该在什么位置。! L* ~: J7 j2 S$ y& }
: l" P9 K0 O4 O. |. q 这一切一切,一切你说能看到或者不能看到的,都是自然在计算。而人,只能亦步亦趋跟在自然之后,学习自然是如何计算的。$ E+ Q! ^6 W# b+ S% F6 X' y) H( y& l
- i Q. K& @3 D& f# F
自然是可敬畏的,不为它的力量,而为它的精巧,在极简单极简单的规则之下,演出着极宏大极宏大的歌剧。1 a- B" G' B% ?3 j* V
" e8 |% i% h/ m; |7 b/ Y0 q
我将尽我所能,描述这场歌剧中的计算,以及人是如何学习这样的计算的。
- m& L9 C& a8 g% ^ 4 Q$ y* `$ a: D6 |# X0 ?/ }
最后,我以一段歌词结尾:
" V1 ?8 l5 G& f W& j; V! Q4 G2 e+ Y1 L1 D' T7 W
围着雾的冰水任瓶边结露+ @3 s# ? M) N& C: o
凝聚渐厚过后交汇成川渗于台布
# H9 f! t$ q4 c( Z- v. r 神奇而极普通的景象: c7 F* l% u% G# p; L
谁人曾又会静来一睹?: q6 S& d$ ?: P1 s3 N0 g& h; O
——谢安琪《活着》
3 c9 U5 x, K4 Y1 r, ^ —————————–我 是 目 录 的 分 隔 线—————————–) m6 D! j3 D, V H
这个系列的文章,讲的东西可能比较杂,但是围绕的是同一个主题:自然的计算,以及人们受自然启发而提出的各种算法。虽然如此,每篇文章是各自独立的。以下是一个目录,每一篇新文章发表在群博上后,我会及时在这里更新链接。另外,读者您也可以通过标签“人算不如天算”来访问这个系列的文章。# _9 B7 h$ `! s1 T' X. ]4 b
遗传算法:内存中的进化 1 c6 m3 w8 {" t- I$ Q( t
9 y* y0 j+ u- @3 ]$ P2 u) C ; {3 K% W3 }; R% y' K* @3 S
这就是自然在计算,它以不计其数的分子和原子,用离散的方法,编织了一个连续的世界;我们活在其中,却不知觉。% V3 E2 c) N. j4 ?3 o, R! E
1 v* @. d8 p! {/ N7 Q
+ n9 W$ M( k- f+ D
田野中有一朵蒲公英,你向它吹了一口气,它的种子便随着你的气流在空中飞舞。于你而言,这只是一阵风,但对于自然而言,它又给出了一个偏微分方程的数值解。流体引发的问题
2 v3 ~7 w+ u6 l! Y: g. Z! R+ C 像水和空气这样会流动的东西,我们将它们称为流体。对流体的研究,肇源于古希腊阿基米德的浮力原理,经过十八世纪微积分的推动,最终在十九世纪达到顶峰。十九世纪的两位物理学家——纳维和斯托克斯——将流体流动的奥秘都汇聚到了一个偏微分方程中(注1)。这个方程也因他们而得名“纳维-斯托克斯方程”。/ g! l" F& w+ ~# p0 ~
7 o# _9 R F0 ~ 但随着实验水平的提高,人们发现,对于一些在极端条件之下的流体,纳维-斯托克斯方程失去了预言的力量。) P& x( y9 K: a3 q
究其原因,物理学家在研究流体的时候,往往假定流体是连续的,这与我们在生活中的体验也是一致的。但事实上,空气和水都是由大量分子组成的,只不过因为分子体积极小而数量惊人,所以在我们看来,空气就变成连续的了,于是风——空气的流动——对我们来说也就是连续的。这就好比大型广告牌一样:在远处看,广告上是一位天真无邪的小孩子,但靠近看的话,不过是数量巨大的油墨点组成的点阵而已。
3 |/ Z, M! S }& k0 L, D* x
* K5 e6 f: j! f/ g$ g 但在极端条件之下,分子的这种离散的特性变得突出,变得不再那么连续了。既然“流体是连续的”这个假设失效了,那么在这个假设的基础上推导出来的流体力学方程,它在极端条件下失去准确性也就并非不可理解了。
4 J F ?& |9 e/ K! L" Z' q V- q
: p+ F7 S! q9 W; e* ~& X d 对于物理学家来说,这就意味着在极端条件下,他们需要从另外的假设出发来推导流体所服从的方程。 离散对连续的模拟$ A i& N) {7 L: m6 b4 k
/ T7 P( a) E4 Q 但对于研究数学分析的数学家来说,连续的流体要比离散的原子分子更自然,方程比现实更自然。与其说方程描述了现实,不如说现实是方程的近似。在每一阵风中,自然给我们展示的,正是如何通过离散去得到连续。
. N' k9 t$ b1 ?6 Y 4 l: v t- G2 K8 A# f, i( h
自然告诉我们的,正是这样一个道理:通过离散的手段,也能模拟出连续的现象。
2 k+ y) E8 x% c - W' Y+ b3 k! u2 X$ Z4 `
不知道是巧合还是必然,为了模拟自然中流体的流动,研究人员发展了一种数值计算方法,叫有限差分方法,能给出一些偏微分方程的数值解。4 P. @+ t- T& D: {6 V5 \
有限差分方法的精髓,正是自然告诉我们的道理:通过离散的手段,模拟连续的现象。它将一个原本连续的区域离散化,划分成一个一个的点,就像空气中的分子。然后它将连续的问题转化为离散的问题,也就是说将要求解的问题翻译成线性方程组。最后通过求解这个方程组,我们就得到了原来问题的一个数值解。由于计算机善于处理离散的问题,而离散的问题也会比连续的容易处理,这就使有限差分方法成为了得到偏微分方程的近似数值解的好工具。
7 U% n4 ?* ]" o! x, Q$ i8 V 7 r6 |$ k( }5 ]( q" R- @ X
下面,我们来看一个用有限差分方法解决问题的例子。肥皂膜的数学模型
0 b; ]7 X; u8 S9 Z) m 【公式出没,注意!不适者欢迎绕行。相信我,不会过于影响后面的阅读。】 7 b% f: I8 U2 H" g9 D! v
如果我们将下面这个铁丝架浸到肥皂水中再拿出来,架上会有一层肥皂膜,它是什么形状的呢?
5 t! z1 P5 Y( U1 n
$ m S* Y+ b9 z3 A$ A3 t 我们先将架子放在一个平面上,它的底面就是一个正方形。为了描绘肥皂膜的形状,我们在正方形上定义一个函数f,在某个点(x,y)上,找到肥皂膜上在它正上方的那一点,然后量度两点的距离,然后我们定义f(x,y)为这两点的距离,如下图所示(细黑线是等高线)。这样的话,定义在这个正方形上的函数f就完全地反映了整个肥皂膜的形状了。+ [7 ]# h. O6 Z
) t; m! M* t+ ?7 u: o1 x' q; l# |
而在这个正方形的边界上,由于肥皂泡附着在架子上,所以在一条边上,函数f的取值为1,而在其它边上它的取值为0。这种定义在边界上的条件被数学家称为边界条件。
1 }. j, ^6 B: \ 由于表面张力的原因,从局部看来,肥皂膜肯定是非常平滑的。任何可能的突起都会迅速被表面张力拉平。如果将这种平滑的特性翻译成数学的语言的话,就是函数f满足以下偏微分方程:
6 I1 [, n: p) K2 V& ~$ o / E5 u* x" y* |' z8 P! ?
于是,我们需要解决的问题就变成:在这个正方形内,根据给定的边界条件,数值求解以上的偏微分方程,也就是说求出满足上面方程的函数f。# C, _" ^! ~2 p6 D) Y6 @
这正是有限差分方法派上用场的时候。有限差分方法的回答, \$ H3 Y M( ~( r
不知道有限差分方法的灵感是否来自自然,但以自然作类比,我们能更好地理解它。# M# O3 v+ ]0 f Z$ j- X
: n2 `) k. T4 B& Y5 Z' c+ `: M# Z 回到肥皂膜的例子上,我们知道,实际上肥皂膜并不是连续的,而是由数量有限的水分子和肥皂分子构成的,它的整体形状也是由这些分子的相互作用所决定的。如果我们能够在计算机上模拟肥皂膜上每个分子和它们的相互作用的话,我们就能得到整个肥皂膜的形状。 R$ O1 q& N/ y
4 [ j) _5 Q/ K* n 但尽管这些分子的数量有限,对于现代计算机而言仍是天文数字,完全的模拟并不可行。是否可能减少进行模拟的分子数量,牺牲模拟的精度去换取更高的速度呢?不妨想象一下,如果肥皂的分子很大很大,大到那块肥皂膜变成一个16×16的分子网格,上面只有256个“肥皂分子”。那么,由于需要模拟的分子数目不大,对肥皂膜的模拟变得非常容易。
0 w5 A8 i# Y, a0 A! y6 c* Z) ~' Y 不妨试试在这种基础上做个模拟,看看结果如何。; J; N; v- r8 m2 ^. U" n; P& }% W
; S; |8 V& l+ x2 D, }
我们不妨假定这些巨大的“肥皂分子”在平面上的投影将正方形分成了一个16×16的网格。& J8 I0 w1 o& X- J9 `
8 G S' z! d9 S
每个格点都代表了一个“肥皂分子”。那么,只要知道每个格点对应的“肥皂分子”离地面的高度,我们就能知道整个肥皂膜的形状了。我们用h[i,j]表示第i行第j列的“肥皂分子”离地面的高度。7 Z# d" [7 B% Q0 y" Y5 _
1 K/ C" K( t; r: {$ l1 j 然后,我们需要将刚才的偏微分方程表达成这些h[i,j]之间的关系。经过不算复杂的推导,对于不在边界上的格点h[i,j],我们可以得到如下的关系:
/ ^! Y7 ^; a0 q6 M# Y r
6 c6 A) A9 V2 z' S 用自然语言来说,就是一个“肥皂分子”的高度正好是它前后左右四位邻居高度的平均值。这也非常符合我们的直觉,因为只有这样,在每个局部看来这个肥皂膜都是比较平坦的。如果我们想象每个“肥皂分子”的邻居都用同样大小的力(可以看作表面张力)拉着它的话,它的稳定位置正好就符合上面的方程。
9 M7 ]3 ]; r0 M( c- Z
. e! f" ~3 _0 V. K: V& q% g4 G 数学家们把这个关系称为偏微分方程的差分形式,这也就是“有限差分方法”这个名字的来源。 X3 v8 l R- ]9 G! `& ]
/ D# J3 A4 v. @ 最后剩下的要翻译过来的内容就是边界条件了。在网格的边界处,“肥皂分子”都是附着在铁丝网上的。根据铁丝网的形状,我们容易知道,除了网格第一行的“肥皂分子”的离地高度都是1以外,其余的都是0。' ^* x/ Z j$ A" ?/ P
! @- T& {$ O4 w
当所有条件都翻译完毕后,我们手头上就有了一个由这些条件构成的线性方程组。剩下的工作就是解方程组。对于计算机来说,此乃小菜一碟。将方程组的解画出来,就是这样:
# v, s( K7 b$ d) h/ Q) N
) l h" R/ D* q8 B' v 效果似乎不错,但正确性如何呢?
5 H$ p& c1 @% J: l 我们同时画出原来偏微分方程的解: e0 r+ Z7 F* |/ [' b; O5 ?9 w+ l
% U: G* ^4 e& c" O; G; | 肉眼看不出它们之间的差异,不是吗?) t- p9 ?: H/ P r h
从上面的例子中,我们可以窥见有限差分方法的一般框架:对于一个求偏微分方程解的问题,先将要求解的区域剖分成网格,然后将偏微分方程和边界条件翻译成网格中每一个格点之间的关系,从而得到一个多变量的方程组,每一个格点对应一个变量,最后通过求解这个方程组,我们得到一组解,结合原来的网格,我们就得到了原来问题的一个数值解。 自然的总结5 x$ o S2 {* ]! q7 o) i7 M( I; R
事实上,有限差分方法得出的解是一个比较好的近似,所需的计算资源也不多。对于经常处理边界复杂的偏微分方程的工程师而言,这些问题如果用传统的数学分析方法解决的话,计算量相当浩大,只能人手计算,更别提需要做的各种近似了;但如果利用有限差分方法的话,误差不算太大,计算量却不太大,而且可以交给计算机去处理。当然,它计算出来的解永远都是近似解,但在实际应用中,过高的精度是不必要的。有限差分方法正是舍弃了一点点精确性,换来了计算的速度。: }: z0 s9 U0 ?( y5 F% Q! p* b" X
$ D1 g7 B' T0 S( Y' ?4 R
流体力学研究的自然流体实际上是离散的分子组成的,我们不知道有限差分方法的灵感是否来源于此,但它的确曾在计算流体力学中起过很大的作用。它也被应用在热力学的数值计算中,比如说计算电脑芯片的散热情况。它的吸引力很大一部分来源于它的简单和易用。
( ^, i/ a/ p+ A4 d, E3 K6 d 1 ^6 y, I# s% d2 g6 ]+ F2 n/ `/ f
但有限差分方法也并非尽善尽美。它的求解过程只能在一个形状规则、分布均匀的网格上进行,但显然会有某些地方的变化更值得关注。比如说,如果我们想要模拟一条溪流,我们肯定更关注礁石丛生之处被扰乱的水流,而不是毫无阻碍缓缓流淌的部分。而有限差分方法对模拟区域是一视同仁的,每个地方的模拟精度都是一样的,这样的话为了提高精度,很多计算资源就被白白浪费在无关紧要的地方上。此外,还有精度和数值稳定性的问题。
6 }# r* ~3 `1 g $ L: W8 g& D4 p1 D
但通过对有限差分方法的改进,人们可以部分地绕过这些问题。也有别的数值计算方法可以弥补这些缺陷,如有限元方法、有限体积方法等。它们的基本思路与有限差分方法是一样的:将问题用不同的方式离散化,然后用离散的手段去解决它。
& H, a: J& M1 k 2 {/ t7 T& X, W, x
而这,正是由分子和原子组成的每一股水流、每一阵风每时每刻都在做的事情,而且它们比我们、比计算机做得更好。这就是自然在计算,它是一个巨大的并行计算机。它以不计其数的分子和原子,用离散的方法,编织了一个连续的世界;我们活在其中,却不知觉。
: c; Q3 s0 I% H% r. w: @& H. S( E 5 t" H' ]3 n1 ~4 \+ V* {7 V/ B+ J9 p% Y
注1:纳维-斯托克斯方程看起来是这样的:' J8 }% ]! }- _
/ y- h7 T9 o! d3 q5 e5 j8 ]/ c3 } 自然用原子和分子就能模拟出如此复杂的偏微分方程,着实令人惊叹。
zan