||
我觉得我还可以再抢救一下
好久没有写关于计算方法的博文了,原因如下:
基本上讲完了。对于大学非数学专业的计算方法课程来说,只剩下三部分的内容了,矩阵的特征值和特征向量,有限差分法,有限元方法。
数学知识不够。理解这些内容,需要更多的数学知识,比如说,一些线性代数和泛函分析的基本知识。
真讲的话,要写好些数学式子,太烦了,再说也没有人对此感兴趣——随便找本标准的计算方法教材就可以了。
但是,为了在形式上做到有始有终,还是稍微讲一下这三部分内容的要点吧。
矩阵的特征值和特征向量
$n\times n$的矩阵$A$和一个$n\times 1$的列向量$b$相乘,结果还是一个$n\times 1$的列向量,记为$c$。可以认为,$b$和$c$是$n$维向量空间里的两个矢量,通常指向不同的方向。但是,如果运气特别好的话,$b$和$c$就有可能指向同一个方向,换句话说,它们俩是线性相关的,$c=\lambda b$,其中$\lambda$是一个实数。在这种情况下,$\lambda$和$b$就是矩阵$A$的本征值和本征向量,它们对于研究$A$的性质非常重要。
很多物理问题,都可以归结为求某个$n\times n$矩阵$A$的本征值和本征向量,也就是说,求解所有满足$A x_i=\lambda_i x_i$的解$ x_i$和$\lambda_i$。通常有$n$个本征值和本征矢量(要求矩阵的“秩”等于$n$,另外,本征值$\lambda_i$有可能相等)。因为矩阵乘法依赖于顺序,所以还有左(右)本征值和本征向量的问题。
对于实对称矩阵,可以用雅克比方法求出所有的本征值和本征矢量。这个算法的实质在于,每次在$n$维空间中选择一个二维平面做适当的转动变换,就可以消除一对非对角元(使之等于零)。重复这个变换,只需要有限次就可以把实对称矩阵变为对角矩阵,也就给出了$n$个本征值,而每次转动的变换矩阵的乘积是$n\times n$矩阵,它的列向量给出了$n$个本征矢量。
对于一般的矩阵$A$,可以用迭代法$x_{n+1}=A x_n$求得绝对值最大的本征值(这个本征值不能是简并的)。如果采用矩阵$A$的逆矩阵$A^{-1}$,迭代法可以给出绝对值最小的本征值(同样不能是简并的)。由此你就可以求出所有的本征值,因为接下来可以考虑$n$维空间去除了本征矢量$x$以后剩下的$(n-1)\times(n-1)$维空间里的本征问题。有一些技巧可以加速迭代过程,但是来不及在这里讲了。
有限差分法
我们知道,微分是差分的极限(是无穷小的差分),可是有时候,用有限差分方程来替代微分方程,更容易得到结果——虽然有误差,但是现实世界的任何问题都有误差,而且这个误差是可以精确估计的。
举个例子吧。假设我们要求解二阶微分方程
$\frac{d^2 y}{dx^2}=f(x)$
其中$f(x)$是已知的,$a<x<b$。如果知道$y(a)$和$y’(a)$的值,这就是常微分方程的初值问题,以前介绍过了。如果知道$y(a)$和$y(b)$的值,这就是边值问题,可以用有限差分法来求解。
先说一下,边值问题可以用射箭法来求解:随便给$y’(a)$假设一个值,就变成了初值问题,数值求解得到$y(x)$,如果$y(x)$在$b$处的数值等于前面给出的边界条件$y(b)$,那么这个问题就解决了。如果不等于,那就再猜一次,直到二者相等为止。
有限差分法是把区间$[a,b]$分成$n$等分,$x_i =a +i h$,其中$h=(b-a)/n$。用二阶中心差商代替二阶微分,即
$\frac{d^2 y}{dx^2} |_{i} = [y(x_{i+1})-2y(x)+y(x_{i-1})]/h^2$
这样就可以把微分方程变成$n$个线性方程组,$n-1$个方程有$n-1$个未知数(其实就是区间$[a,b]$里的$n$个等分点上的函数值$y(x_i)$),可以用标准的方法求解(比如说,追赶法)。
这种方法可以推广到二维乃至更高维的问题,直接但是有些繁琐,而且还要考虑收敛性和稳定性的问题,我就不再说了。
有限元方法
有限元方法是强有力的数值计算方法,它的基础是变分原理和剖分插值,它的应用非常广泛。差分法只考虑函数在有限个点上的数值,而有限元方法考虑的是函数的分段近似。然而,我不能用几句话把有限元方法讲明白,只好先闭嘴了。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-22 06:58
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社