当前位置:文档之家› 工程数值方法

工程数值方法

工程数值方法学习内容:Chapter 1 线性代数方程组的数值解法Chapter 2 插值问题与数值微分Chapter 3 数值积分方法Chapter 4 常微分方程(组)初值问题的数值方法Chapter 5 常微分方程(组)边值问题的数值方法Chapter 6 椭圆型偏微分方程的数值方法Chapter 7 加权残值方法参考书目:[1]武汉大学、山东大学合编,计算方法,高教版,1979[2]林成森编,数值计算方法(上、下),科学出版社,2000[3]中科院研究生数学丛书,工程中的数值方法,科学出版社,2000[4]曾绍林编,工程数学基础(研究生数学丛书),科学出版社,2001[5]李庆扬编,数值分析基础教程,高等教育出版社,2002[6]李庆扬编,数值分析(第4版),清华版,2003[7]关治编,数值计算方法,清华版,2004[8]李岳生、黄有谦编,数值逼近,高教版,1978[9]李荣华编,微分方程数值解法,人教版,1980[10]邱吉宝编著,加权残值法的理论与应用,宇航版,1992Chapter 1 线性代数方程组的数值解法线性代数方程组的求解是工程实践中最常遇到的问题。

据不完全统计,在工程实践中提出的计算问题中,有近一半涉及到求解线性方程组。

例如:结构有限元分析问题,大地测量问题,气象预报问题,电力传输网分析问题,各种电路分析问题,数据拟合问题,以及非线性方程组与微分方程的数值求解问题等等。

因此,学习并掌握线性代数方程组求解的基本理论与方法无疑是十分必需的。

本章将介绍目前一些利用计算机求解线性代数方程组常用的、且简单有效的数值方法。

求解线性方程组的数值方法尽管很多,但归并起来可分为两大类:(1)直接法(精确法)凡经有限次的四则运算,若运算中没有舍入误差即可求得方程组精确解LDL 的方法。

如:克莱姆(Cramer)法则方法、消元法、LD分解法、T分解法等等。

(2)迭代法(近似法)将求解方程组的问题转化为构造一个无限迭代的序列,在实现该序列过程中的每一步计算结果,均是把前一步所得的结果施行相同的计算步骤进行修正而获得的,而这一无限序列的极限就是原方程组的精确解答。

如:简单迭代法、赛德尔迭代法、牛顿法、共轭斜量法等等。

需要指出的,在一般情况下,我们使用直接法和迭代法两类方法都不可能完全获得原方程组的精确解答。

原因很显然:(1)实际中在使用直接法时不可能没有数值计算的舍入误差,故此时所谓精确方法的解并不是绝对精确的;(2)实际中在使用迭代法时,不可能将极限过程无限进行到底,而只能进行有限次的迭代,故获得是满足精度要求的近似解答。

关于这两类方法求解的误差分析,我们将在每类方法的介绍之后进行简要讨论。

§1.1 直接法—Cramer 法则与求逆方法设n 元n 个非齐次线性代数方程组为:11112211211222221122............n n n n n n nn n na x a x a xb a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩ (1.1) 利用矩阵和向量符号,这个方程组可表为:Ax b = (1.2)其中,ij n nA a ⨯⎡⎤=⎣⎦——方程组(1.1)的系数矩阵(n n ⨯阶方阵);12(,,...,)T n b b b b =——方程组(1.1)的右端已知向量(n 阶列阵); 12(,,...,)T n x x x x =——方程组(1.1)待求的解向量(n 阶列阵)。

§1.1.1 Cramer 法则由线性代数中关于线性方程组解的定理可知:若A 的行列式det 0A A =≠,则方程组(1.1)有唯一解。

此时,根据Cramer 法则,其解的表达式为:det (1,2,...,)det jj A x j n A== (1.3)其中,111,111,11212,122,121,1,1,...,,,,...,,...,,,,...,det (1,2,...,)...,...,,,,...,j j nj j n j n n j n n j nna ab a a a a b a a A j n a a b a a -+-+-+==即将det A 中的第j 列元素依次换为右端已知向量b 的元素所构成的n 阶方阵的行列式。

易见,利用Cramer 法则给出的(1.3)式求解n 阶线性方程组(1.2)式,需要计算(1)n +个n 阶行列式,而每个n 阶行列式将有!n 项,其中每一项又含有n 个因子,故展开每一个n 阶行列式仅乘法运算就需(1)!n n -次(忽略加法运算次数),而对(1)n +个n 阶行列式,其乘法运算的次数为:2(1)(1)!(1)!n n n n n +•-=-对式(1.3)其除法次数为:n故求解方程组(1.2)其乘法和除法总的运算次数为:2(1)!N n n n =-+次 例如,若20n =阶,则209.707310N =⨯次这是一个十分惊人的数字,即使利用超高速的电子计算机能够胜任此计算次数,仅由于多个数的连乘亦有可能造成溢出而无法继续运算。

因此,Cramer 法则这个在理论上完善且精确的求解方法,仅在理论上和一些特殊情况下可以发挥作用,而对高阶线性代数方程组的实际求解中几乎没有多少实用价值。

为此,人们不得不研究其它一些计算简单、且行之有效的求解方法。

§1.1.2 求逆方法若det 0A ≠,则A 非奇异,即1A -存在,则方程组(1.2)的解向量可表为:1x A b -= (1.4)常用的矩阵求逆方法有:(1)伴随矩阵法;(2)初等变换法;但当方阵A 的阶数n 较大时,求逆非常麻烦且计算量很大。

故对高阶线性代数方程组来说,求逆方法也是一种中看不中用的方法。

§1.2 直接法—Gauss (高斯)消去法尽管这是一种较为古老的方法,但至今仍不失为最常用和最有效的方法之一。

基本思想:通过逐次消元处理,将原方程组化为等价的三角形方程组进行求解。

§1.2.1 三角形方程组所谓三角形方程组无非是以下两种形式的方程组: (1)下三角形式(2.1)矩阵记为 Lx b = (2.1') 其中系数矩阵L 的元素满足关系:0()ij l i j =<——主对角线以上的元素均为零。

(2)上三角形式11112211222221,111,1.........n nn nn n n n n nn n n nu x u x u x d u x u x d ux u x d u x d -----+++=⎧⎪++=⎪⎪⎨⎪+=⎪⎪=⎩(2.2)矩阵记为 U x d = (2.2') 其中系数矩阵U 中主对角线以下的元素均为零,即:0()ij u i j =>对三角形方程组的求解是十分简单的。

显然对于下三角方程组(2.1),其求解步骤如下:1。

从第一个方程中解得:1111b x l =;2。

将1x 代入第二个方程中,从中解得:1211222()b l x x l -=;3。

将12,x x 代入第三个方程中,从中解得:3311322333()b l x l x x l --=;······111121122221122 ... ...n n nn n nl x b l x l x b l x l x l x b =⎧⎪+=⎪⎨⎪⎪+++=⎩如此逐个方程求解的过程向前递推下去,直到第n 步。

n 。

将121,,...,n x x x -代入第n 个方程中,从中解得:1122,11(...)n n n n n n n nnb l x l x l x x l ------=。

对上述过程其完整的求解计算格式可归结为:111111()(2,3,...,)i i ij j j i ii b x l b l x x i n l -=⎧=⎪⎪⎨-⎪==⎪⎩∑ (2.3)这一求解过程称为前推过程。

同理,对于上三角方程组(2.2),其求解步骤亦可如法泡制,即:1。

从第n 个方程中解得:nn nnd x u =;2。

将n x 代入第n-1个方程中,从中解得:11,11,1()n n n n n n n d u x x u ------=;3。

将n x 、1n x -代入第n-2个方程中,从中解得:22,2,1122,2()n n n n n n n n n n d u x u x x u ----------=;······n 。

将12,,...,n n x x x -代入第1个方程中,从中解得1x 。

对上述过程其完整的求解计算格式可归纳为:,11,22,(...)(1,2,...,2,1)nnnn i i i i i i i i n n i ii d x u d u x u x u x x i n n u ++++⎧=⎪⎪⎨----⎪==--⎪⎩(2.4)这一求解过程称为回代过程。

通常是将(2.4)式合并为一式表为:1()(,1,2,...2,1)ni ijjj i i iid u x x i n n n u =+-==--∑ (2.4a )式中约定:当足标j 的取值大于其上界n 时,和式0njj ma==∑。

§1.2.2 Gauss 消去法高斯消去法的求解过程就是首先利用矩阵的初等行变换方法将原方程组逐次消元,使之化为等价的具有上三角形式的方程组,然后再按上三角方程求解的计算格式(2.4a )式求出原方程组的解。

整个求解过程可分为消元和回代两个过程。

1. 简例为了便于说明高斯消去法的求解过程,以如下4阶方程组的求解为例:Ax b = (2.5)其展开式为:1111121314222122232431323334334142434444x b a a a a x b aa a a a a a a xb a a a a x b ⎧⎫⎧⎫⎡⎤⎪⎪⎪⎪⎢⎥⎪⎪⎪⎪⎢⎥=⎨⎬⎨⎬⎢⎥⎪⎪⎪⎪⎢⎥⎪⎪⎪⎪⎣⎦⎩⎭⎩⎭(2.5) 其增广矩阵为: ,A b ⎡⎤⎢⎥⎣⎦ (2.5.0) (1) 消元过程利用若干轮的初等行变换处理,设法将,A b ⎡⎤⎢⎥⎣⎦中的A 部分化为上三角形式。

若主元素...110a ≠,则可保留方程组中的第一个方程,并利用11a 将其余三个方程中的第一个未知量1x 消去,具体做法是取数:312141213141111111,,a a a l l l a a a ===再对增广矩阵(2.5.0)中的第i 行进行如下初等变换:11()(1) i i r i l r -⨯第行第行(i=2,3,4) (其中r 表示行或排row )这样原方程的增广矩阵(2.5.0)被变换为如下形式:111213141(1)(1)(1)12223242(1)(1)(1)13233343(1)(1)114243444:0 :0 :0 :a a a a b a a a b a a a b a a a b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦()()()()(2.5.1) 其中被改变的元素为:(1)11(1)11(2,3,4)(2,3,4)ij ij i j i i i a a l a j i b b l b ⎫=-=⎪=⎬⎪=-⎭至此,完成了第1轮初等行变换处理。

相关主题