# N8 ^" w6 O2 ^7 i) m1 J4 W数学家们把这个关系称为偏微分方程的差分形式,这也就是“有限差分方法”这个名字的来源。 - z! n: ^+ s5 U3 R. o! m2 N. O% E- }* X+ i
最后剩下的要翻译过来的内容就是边界条件了。在网格的边界处,“肥皂分子”都是附着在铁丝网上的。根据铁丝网的形状,我们容易知道,除了网格第一行的“肥皂分子”的离地高度都是1以外,其余的都是0。 6 w8 J7 S5 K) q' _$ g& g0 e8 A+ C4 Q+ k" I) G5 C! c
当所有条件都翻译完毕后,我们手头上就有了一个由这些条件构成的线性方程组。剩下的工作就是解方程组。对于计算机来说,此乃小菜一碟。将方程组的解画出来,就是这样: % i; ?6 V w* ?6 {# k( Z; p, {4 y( R8 o
效果似乎不错,但正确性如何呢?3 ]6 X- z# o+ C6 {" V
我们同时画出原来偏微分方程的解:/ m( J7 Z; U8 y# Y7 j' I% Y & s' C) @9 z# O/ E肉眼看不出它们之间的差异,不是吗? 2 F3 r* L; U- P/ k6 K& A0 K1 l从上面的例子中,我们可以窥见有限差分方法的一般框架:对于一个求偏微分方程解的问题,先将要求解的区域剖分成网格,然后将偏微分方程和边界条件翻译成网格中每一个格点之间的关系,从而得到一个多变量的方程组,每一个格点对应一个变量,最后通过求解这个方程组,我们得到一组解,结合原来的网格,我们就得到了原来问题的一个数值解。 自然的总结; w7 S: s4 f- s4 K
事实上,有限差分方法得出的解是一个比较好的近似,所需的计算资源也不多。对于经常处理边界复杂的偏微分方程的工程师而言,这些问题如果用传统的数学分析方法解决的话,计算量相当浩大,只能人手计算,更别提需要做的各种近似了;但如果利用有限差分方法的话,误差不算太大,计算量却不太大,而且可以交给计算机去处理。当然,它计算出来的解永远都是近似解,但在实际应用中,过高的精度是不必要的。有限差分方法正是舍弃了一点点精确性,换来了计算的速度。 # _1 A! r" U- }) \: ^ # T% I9 g/ k8 m2 ]0 D0 S8 R& B) s流体力学研究的自然流体实际上是离散的分子组成的,我们不知道有限差分方法的灵感是否来源于此,但它的确曾在计算流体力学中起过很大的作用。它也被应用在热力学的数值计算中,比如说计算电脑芯片的散热情况。它的吸引力很大一部分来源于它的简单和易用。 ; m! O$ L5 \1 j- n( |3 L6 I1 Y* H' Y/ J2 y. L/ M. i( S/ m+ Y) B# F- K
但有限差分方法也并非尽善尽美。它的求解过程只能在一个形状规则、分布均匀的网格上进行,但显然会有某些地方的变化更值得关注。比如说,如果我们想要模拟一条溪流,我们肯定更关注礁石丛生之处被扰乱的水流,而不是毫无阻碍缓缓流淌的部分。而有限差分方法对模拟区域是一视同仁的,每个地方的模拟精度都是一样的,这样的话为了提高精度,很多计算资源就被白白浪费在无关紧要的地方上。此外,还有精度和数值稳定性的问题。 # y& R( Z& _2 Y8 S5 M & M7 b+ f9 }# Y9 R: ?) h但通过对有限差分方法的改进,人们可以部分地绕过这些问题。也有别的数值计算方法可以弥补这些缺陷,如有限元方法、有限体积方法等。它们的基本思路与有限差分方法是一样的:将问题用不同的方式离散化,然后用离散的手段去解决它。0 Z1 l' j1 B, g
$ a% I; A% x L$ V' s% o而这,正是由分子和原子组成的每一股水流、每一阵风每时每刻都在做的事情,而且它们比我们、比计算机做得更好。这就是自然在计算,它是一个巨大的并行计算机。它以不计其数的分子和原子,用离散的方法,编织了一个连续的世界;我们活在其中,却不知觉。 5 y c* y! D2 {5 t$ G M; Q* m& @+ |* Z. c
注1:纳维-斯托克斯方程看起来是这样的:4 {" l% [: F6 H( `# k% Q9 [" M