23直接三角分解法(数值方法)

合集下载

数值分析课程课件 直接三角分解方法

数值分析课程课件  直接三角分解方法


u22
u11
u2n



l n1 l n2
1

unn


a11 a12 a 21 a22
a1n
a2n


u11 l21u11
u12 l21u12 u22
u1n

l21u1n

u2n


a n1 a n2
ann
ln1u 11
由(5.3.1)- (5.3.4)求得L和U后,解方程组Ax=b 化为求解LUx=b,若记Ux=y,则有Ly=b。于是可分两部解 方程组LUx=b,只要逐次向前代入的方法即可求得y。第
二步求解Ux=y,只要逐次用向后回代的方法即可求得x。 设 x=(x1 ,x2, ···xn) T, y=(y1, y2, ···yn) T,
n

i1
lniuin

unn

第四章方程组的直接解法
由A的第1行和第1列可计算出U的第1行和L的第1列,即
u1 j a1 j , j 1, 2, , n,
(5.3.1)
lk1

ak1 u11
,k

2, 3,
, n.
(5.3.2)
如果U的第1至k-1列和L的第1至k-1列已经算出,则由
解 设 A=LU,即
l11 a11 1, l21 a21 2, l31 a31 0
u12

a12 l11
2, u13

a13 l11
1,

l22 a22 l21u12 3, l32 a32 l31u12 1

线性方程组的数值算法C语言实现(附代码)

线性方程组的数值算法C语言实现(附代码)

线性方程组AX=B 的数值计算方法实验一、 实验描述:随着科学技术的发展,线性代数作为高等数学的一个重要组成部分,在科学实践中得到广泛的应用。

本实验的通过C 语言的算法设计以及编程,来实现高斯消元法、三角分解法和解线性方程组的迭代法(雅可比迭代法和高斯-赛德尔迭代法),对指定方程组进行求解。

二、 实验原理:1、高斯消去法:运用高斯消去法解方程组,通常会用到初等变换,以此来得到与原系数矩阵等价的系数矩阵,达到消元的目的。

初等变换有三种:(a)、(交换变换)对调方程组两行;(b)、用非零常数乘以方程组的某一行;(c)、将方程组的某一行乘以一个非零常数,再加到另一行。

通常利用(c),即用一个方程乘以一个常数,再减去另一个方程来置换另一个方程。

在方程组的增广矩阵中用类似的变换,可以化简系数矩阵,求出其中一个解,然后利用回代法,就可以解出所有的解。

2、选主元:若在解方程组过程中,系数矩阵上的对角元素为零的话,会导致解出的结果不正确。

所以在解方程组过程中要避免此种情况的出现,这就需要选择行的判定条件。

经过行变换,使矩阵对角元素均不为零。

这个过程称为选主元。

选主元分平凡选主元和偏序选主元两种。

平凡选主元:如果()0p pp a ≠,不交换行;如果()0p pp a =,寻找第p 行下满足()0p pp a ≠的第一行,设行数为k ,然后交换第k 行和第p 行。

这样新主元就是非零主元。

偏序选主元:为了减小误差的传播,偏序选主元策略首先检查位于主对角线或主对角线下方第p 列的所有元素,确定行k ,它的元素绝对值最大。

然后如果k p >,则交换第k 行和第p 行。

通常用偏序选主元,可以减小计算误差。

3、三角分解法:由于求解上三角或下三角线性方程组很容易所以在解线性方程组时,可将系数矩阵分解为下三角矩阵和上三角矩阵。

其中下三角矩阵的主对角线为1,上三角矩阵的对角线元素非零。

有如下定理:如果非奇异矩阵A 可表示为下三角矩阵L 和上三角矩阵U 的乘积: A LU = (1) 则A 存在一个三角分解。

(完整)数值计算方法复习

(完整)数值计算方法复习

2016计算方法复习务必通过本提纲例子和书上例子掌握如下书本内容:1. 会高斯消去法;会矩阵三角分解法;会Cholesky 分解的平方根法求解方程组2. 会用插值基函数;会求Lagrange, 会计算差商和Newton 插值多项式和余项3. 会Jacobi 迭代、Gauss —Seidel 迭代的分量形式,迭代矩阵,谱半径,收敛性4. 会写非线性方程根的Newton 迭代格式;斯蒂芬森加速5. 会用欧拉预报-校正法和经典四阶龙格—库塔法求解初值问题6. 会最小二乘法多项式拟合7. 会计算求积公式的代数精度;(复化)梯形公式和(复化)辛普生公式求积分;高斯-勒让德求积公式第1章、数值计算引论(一)考核知识点误差的来源类型;绝对误差和绝对误差限,相对误差和相对误差限,有效数字;误差的传播。

(二) 复习要求1。

了解数值分析的研究对象与特点。

2。

了解误差来源与分类,会求有效数字; 会简单误差估计. 3.了解误差的定性分析及避免误差危害。

(三)例题例1. 设x =0.231是精确值x *=0。

229的近似值,则x 有2位有效数字。

例2. 为了提高数值计算精度, 当正数x 充分大时, 应将)1ln(2--x x 改写为)1ln(2++-x x .例3. 3*x 的相对误差约是*x 的相对误差的1/3 倍.第2章、非线性方程的数值解法(一)考核知识点对分法;不动点迭代法及其收敛性;收敛速度; 迭代收敛的加速方法;埃特金加速收敛方法;Steffensen 斯特芬森迭代法;牛顿法;弦截法. (二) 复习要求1.了解求根问题和二分法.2。

了解不动点迭代法和迭代收敛性;了解收敛阶的概念和有关结论。

3。

理解掌握加速迭代收敛的埃特金方法和斯蒂芬森方法。

4。

掌握牛顿法及其收敛性、下山法, 了解重根情形. 5.了解弦截法. (三)例题1。

为求方程x 3―x 2―1=0在区间[1.3,1.6]内的一个根,把方程改写成下列形式,并建立相应的迭代公式,迭代公式不收敛的是( )(A )11,1112-=-=+k k x x x x 迭代公式 (B )21211,11kk x x x x +=+=+迭代公式(C ) 3/12123)1(,1k k x x x x +=+=+迭代公式 (D )231x x =-迭代公式11221+++=+k k kk x x x x 解:在(A)中,2/32)1(21)(,11)(,11--='-=-=x x x x x x ϕϕ2/3)16.1(21->=1.076故迭代发散。

数值分析分解法

数值分析分解法

§3 LU 分解法——Gauss 消去法的变形知识预备:1矩阵的初等行变换、初等矩阵及其逆、乘积2矩阵的乘法3上三角矩阵的乘积、单位下三角矩阵的乘积 4单位下三角矩阵的逆、可逆的上三角矩阵的逆一、Gauss 消去法的矩阵解释Gauss 消去法实质上是将矩阵A 分解为两个三角矩阵相乘。

我们知道,矩阵的初等行变换实质就是左乘初等矩阵。

第一轮消元:相当于对A(1)左乘矩阵L 1,即)2()1(1A A L =其中)1(11)1(11)2()2(2)2(2)2(22)1(1)1(12)1(11)2(131211,,1001011a a l a a a a a a a Al l l L i i nn n n n n =⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡---=第二轮消元:对应于)3()2(2A A L =一般地1,,2,1)1()(-==+n k A A L k k k (1)其中nk k i a a l l l L k kkk ikik nk kk k ,,2,1,,10111)()(1 ++==⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--=+整个消元过程为U A A L L L L n n n 记)(1221=-- ⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=nn nnu u u u u u 22211211………(2) 从而U L U L L L L U L L L L A n n n n ⋅===---------1112121111221)(其中L 是单位下三角矩阵,即,1,,1,,3,2,,1111)()(21323121⎪⎪⎭⎫⎝⎛-===⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=n j n i l l l l l l L j jj j ija a ij n n …(3) 【注】消元过程等价于A 分解成LU 的过程回代过程是解上三角方程组的过程。

二、矩阵的三角分解1、若将A 分解成L?U ,即A=L?U ,其中L 为单位下三角矩阵,U 为非奇异上三角矩阵,则称之为对A 的Doolittle 分解。

(整理)线性方程组的直接法

(整理)线性方程组的直接法

第二章线性方程组的直接法在近代数学数值计算和工程应用中,求解线性方程组是重要的课题。

例如,样条插值中形成的关系式,曲线拟合形成的法方程等,都落实到解一个元线性方程组,尤其是大型方程组的求解,即求线性方程组(2.1)的未知量的数值。

(2.1)其中ai j,bi为常数。

上式可写成矩阵形式Ax = b,即(2.2)其中,为系数矩阵,为解向量,为常数向量。

当detA=D0时,由线性代数中的克莱姆法则,方程组的解存在且惟一,且有为系数矩阵的第列元素以代替的矩阵的行列式的值。

克莱姆法则在建立线性方程组解的理论基础中功不可没,但是在实际计算中,我们难以承受它的计算量。

例如,解一个100阶的线性方程组,乘除法次数约为(101·100!·99),即使以每秒的运算速度,也需要近年的时间。

在石油勘探、天气预报等问题中常常出现成百上千阶的方程组,也就产生了各种形式方程组数值解法的需求。

研究大型方程组的解是目前计算数学中的一个重要方向和课题。

解方程组的方法可归纳为直接解法和迭代解法。

从理论上来说,直接法经过有限次四则运算,假定每一步运算过程中没有舍入误差,那么,最后得到方程组的解就是精确解。

但是,这只是理想化的假定,在计算过程中,完全杜绝舍入误差是不可能的,只能控制和约束由有限位算术运算带来的舍入误差的增长和危害,这样直接法得到的解也不一定是绝对精确的。

迭代法是将方程组的解看作某种极限过程的向量极限的值,像第2章中非线性方程求解一样,计算极限过程是用迭代过程完成的,只不过将迭代式中单变量换成向量而已。

在用迭代算法时,我们不可能将极限过程算到底,只能将迭代进行有限多次,得到满足一定精度要求的方程组的近似解。

在数值计算历史上,直接解法和迭代解法交替生辉。

一种解法的兴旺与计算机的硬件环境和问题规模是密切相关的。

一般说来,对同等规模的线性方程组,直接法对计算机的要求高于迭代法。

对于中等规模的线性方程组,由于直接法的准确性和可靠性高,一般都用直接法求解。

高等工程数学第二章习题及答案

高等工程数学第二章习题及答案

第2章 线性代数方程组数值解法 研究n 阶线性方程组Ax b =的数值解法.()ij A a =是n n⨯矩阵且非奇异,12(,,,)Tn x x x x = ,12(,,,)Tn b b b b =两类数值方法:(1) 直接法:通过有限次的算术运算,若计算过程中没有舍入误差,可以求出精确解的方法.Ax b Gx d == 等价变换G 通常是对角矩阵、三角矩阵或者是一些结构简单的矩阵的乘积.(2) 迭代法:用某种极限过程去逐次逼近方程组的解的方法.(1)()i i Ax b x Bx k x Bx k +==+−−−−−→=+ 等价变换建立迭代格式,0,1,i =一、向量范数与矩阵范数 1. 向量范数【定义】 若对nK 上任一向量x ,对应一个非负实数x ,对任意,nx y R ∈及K α∈,满足如下条件(向量范数三公理) (1) 非负性:0x ≥,且0x =的充要条件是0x =;(2)齐次性:x xαα=;(3)三角不等式:x y x y+≤+.则称x为向量x的范数.常用的向量范数: (1) 1—范数11nii x x ==∑(2) 2—范数12221()ni i x x ==∑(3) ∞—范数1max ii nxx ∞≤≤=(4) 一般的p —范数11()pnpi pi xx ==∑2. 矩阵范数【定义】 若n nK ⨯上任一矩阵()ij n n A a ⨯=,对应一个非负实数A ,对任意的,n nA B K ⨯∈和K α∈,满足如下条件(矩阵范数公理):(1) 非负性:0A ≥,且0A =的充要条件是0A =;(2)齐次性:A Aαα=;(3)三角不等式:A B A B +≤+;(4)乘法不等式:AB A B≤.则称A为矩阵A的范数.矩阵范数与向量范数是相容的:Ax A x≤向量范数产生的从属范数或算子范数:10max maxx x AxA Ax x=≠==常见从属范数:(1) 1—范数111max ||nij j ni A a ≤≤==∑(2) ∞—范数11max ||nij i nj A a ∞≤≤==∑(3) 2—范数2A =谱半径1()max ||H i i n A A ρλ≤≤=,iλ为H A A 的特征值.H A 为A 的共轭转置. 注:矩阵A 的谱半径不超过A 的任一范数,即()A A ρ≤范数等价性定理:,s t x x为n R 上向量的任意两种范数,则存在常数12,0c c >,使得12,ns t s c x x c x x R ≤≤ ∀∈.注:矩阵范数有同样的结论. 【定理2.1】是任一向量范数,向量序列()k x 收敛于向量*x 的充要条件是()*0,k x x k -→ →∞二、 Gauss 消去法 1.顺序Gauss 消去法 将方程Ax b =写成如下形式11112211,121122222,11122,1n n n n n n n n nn n n n a x a x a x a a x a x a x a a x a x a x a ++++++=⎧⎪+++=⎪⎨⎪⎪+++=⎩其中记,1,1,2,,.i n i a b i n +==消元过程:第一次消元:设110a ≠,由第2,3,,n 个方程减去第一个方程乘以1111/(2,3,,)i i m a a i n == ,则将方程组中第一个未知数1x消去,得到同解方程11112211,1(1)(1)(1)22222,1(1)(1)(1)22,1n n n n n n n nn n n n a x a x a x a a x a x a a x a x a ++++++=⎧⎪ ++=⎪⎨⎪⎪ ++=⎩其中, (1)11,2,3,,;2,3,,,1ijij i j a a m a i n j n n =-==+ . 1111/i i m a a =,2,3,,i n = .第二次消元:设(1)220a ≠,.由第2,3,,n 个方程减去方程组中的第2个方程乘以(1)(1)2222/(3,4,,)i i m a a i n == ,则将方程组第2个未知数2x 消去,得到同解方程11112213311,1(1)(1)(1)(1)2222322,1(2)(2)(2)33333,1(2)(2)(2)33,1n n n n n n n n n nnn n n n a x a x a x a x a a x a a x a a x a x a a x a x a ++++++++=⎧⎪ +++=⎪⎪ ++=⎨⎪⎪⎪ ++=⎩其中(2)(1)(1)22, 3,4,,; 3,4,,,1ij ij i j a a m a i n j n n =-==+ . (1)(1)2222/i i m a a =,3,4,,i n = .经过1n -次消元后,原方程组变成等价方程组11112213311,1(1)(1)(1)(1)2222322,1(2)(2)(2)33333,1(1)(1),1n n n n n n n n n n n nn n n n a x a x a x a x a a x a a x a a x a x a a x a +++--+++++=⎧⎪ +++=⎪⎪ ++=⎨⎪⎪⎪ =⎩其中()(1)(1), 1,2,,k k k ij ij ik ij a a m a i k k n --=-=++ , 1,2,,,1j k k n n =+++ .(1)(1)/k k ik ik kkm a a --=,1,2,,i k k n =++ ;1,2,,1k n =- .回代过程:(1)(1),1(1)(1)(1),1,,1/[]/,1,2,,2,1.n n n n n m n i i i ii n i j j i j j i x a a x a a x a i n n --+---+=+⎧=⎪⎨=-=--⎪⎩∑计算量:按常规把乘除法的计算次数合在一起作为Gauss 消去法总的计算量,而略去加减法的计算次数. 在消去过程中,对固定的消去次数(1,2,,1)k k n =- ,有:除法(1)(1),,/,1,1,,k k ik i k k k m a a i k k n --= =++ 共计n k -次;乘法(1),,1,2,,;1,2,,,1k ik k j m a i k k n j k k n n - =++ =+++ 共计()(1)n k n k --+次.因此,消去过程总的计算量为1311[()(1)]3n k M n k n k n k n-==--++-≈∑ 回代过程的乘除法计算次数为21()2n n +.与消去法计算量相比可以略去不计.所以, Gauss 消去法总的计算量大约为313n .2. Gauss-Jordan 消去法Gauss-Jordan 消去法是Gauss 消去法的一种变形.此方法的第一次消元过程同Gauss 消去法一样,得到(1)(1)(1)(1)11112213311,1(1)(1)(1)(1)22223322,1(1)(1)(1)(1)32233333,1(1)(1)(1)(1)2233,1,,,,n n n n n n n n n nn nn n n n a x a x a x a x a a x a x a x a a x a x a x a a x a x a x a ++++⎧++++=⎪ +++=⎪ +++=⎨ +++= ⎪⎪⎪⎪⎩其中,(1)11,2,,,1jj a a j n n ==+ . 第二次消元:设(1)220a ≠,由第1,3,4,,n 个方程减去第2个方程乘以(1)(1)2222/(1,3,4,,)i i m a a i n == ,则得到同解方程组(2)(2)(2)11113311,1(1)(2)(2)(2)22223322,1(2)(2)(2)33333,1(2)(2)33,1,,,n n n n n n n n n nnn n n n a x a x a x a a x a x a x a a x a x a a x a x a +++++ +++= +++= ++= ++= (2),⎧⎪⎪⎪⎨⎪⎪⎪⎩继续类似的过程,在第k 次消元时,设(1)k kk a -,将第i 个方程减去第k 个方程乘以(1)(1)/k k ik ik kk m a a --=,这里1,3,4,1,1,,i k k n =-+ .经过1n -次消元,得到(2)1111,1(1)(2)2222,1(2)(2)33,1,,,n n n n n a x a a x a a x a +++⎧ =⎪ =⎪⎪ ⎨⎪⎪⎪ =⎩其中()(1)(1),1,2,,1,1,,k k k ij ij ik kj a a m a i k k n --=-=-+ ;1,2,,,1; 1,2,,1j n n k n =+=- .此时,求解回代过程为(1)(1),1/,1,2,,n i i i n iix a a i n --+= = 经统计,总的计算量约为312M n ≈次乘除法. 从表面上看Gauss-Jordan 消去法似乎比Gauss 消去法好,但从计算量上看Gauss -Jordan 消去法明显比Gauss消去法的计算量要大,这说明用Gauss-Jordan 消去法解线性方程组并不可取.但用此方法求矩阵的逆却很方便. 3.列选主元Gauss 消去法在介绍Gauss 消去法时,始终假设(1)0k kk a -≠,称(1)k kka -为主元.若(1)0k kka -=,显然消去过程无法进行.实际上,既使(1)0k kka -≠,但(1)k kka -很小时,用它作除数对实际计算结果也是很不利的.称这样的(1)k kka -为小主元.【例2.2】设计算机可保证10位有效数字,用消元法解方程1112120.3100.7,0.9,x x x x -⎧⨯+=⎪⎨ +=⎪⎩【解】经过第一次消元:第2个方程减去第1个方程乘以212111/m a a =得1112(1)(1)222230.3100.7x x a x a -⎧⨯+=⎪⎨ =⎪⎩其中(1)1222222111/0.333333333310a a a a =-=-⨯,(1)123323211113(/)0.233333333310a a a a a =-⋅=-⨯于是解得(1)(1)223221/0.7000000000,0.0000000000,x a a x ⎧==⎪⎨=⎪⎩而真解为120.2,0.7x x = =注:造成结果失真的主要因素是主元素11a太小,而且在消元过程中作了分母,为避免这个情况发生,应在消元之前,作行交换.【定义】 若 (1)(1)||max ||k k k r k ik k i na a --≤≤=,则称(1)||k k r k a - 为列主元素. k r 行为主元素行,这时可将第 k r行与第k 行进行交换,使(1)||k k r k a - 位于交换后的等价方程组的 (1)k kk a - 位置,然后再施实消去法,这种方法称为列选主元Gauss 消去法或部分主元Gauss 消去法.【例2.3】 应用列选主元Gauss 消去法解上述方程. 【解】 因为2111a a >,所以先交换第1行与第2行,得1211120.9,0.3100.7,x x x x -⎧+=⎪⎨⨯+=⎪⎩ 然后再应用Gauss 消去法,得到消元后的方程组为1220.9,0.7.x x x ⎧+=⎨=⎩回代求解,可以得到正确的结果.即120.2,0.7x x = =.三、三角分解法 设方程组Ax b =的系数矩阵A 的顺序主子式不为零.即1112121222110,1,2,,.kk k k k kka a a a a a k n a a a ∆=≠=在Gauss 消去法中,第一次消元时,相当于用单位下三角阵211131111010010n m L m m -⎡⎤⎢⎥- ⎢⎥⎢⎥=- ⎢⎥ ⎢⎥⎢⎥- ⎢⎥⎣⎦ ,左乘方程组Ax b =,得11A x b =,其中11121(1)(1)122211(1)200n n n nn a a a a a A L a a -(1)⎡⎤⎢⎥ ⎢⎥==⎢⎥ ⎢⎥⎢⎥ ⎣⎦ ,1(1)(1)111,11,1,1(,,,)Tn n n n b L b a a a -+++== .第二次消元时,相当于用单位下三角阵1232210101001n L m m - ⎡⎤⎢⎥ ⎢⎥⎢⎥= - ⎢⎥⎢⎥⎢⎥ - ⎢⎥⎣⎦0 ,左乘方程组11A x b =,得22A x b =其中11121(1)(1)22211(2)(2)221333(2)(2)300000n n n n nn a a a a a A L L A a a a a --⎡⎤ ⎢⎥ ⎢⎥⎢⎥== ⎢⎥⎢⎥ ⎢⎥ ⎢⎥⎣⎦ ,11(1)(2)(2)2211,12,13,1,1(,,,,).Tn n n n n b L L b a a a a --++++==经过1n -次消元,最后得到等价方程组11n n A x b --=其中11121(1)222111111221(1)n n n n n n nn a a a a a A L L L L A a (1)--------⎡⎤⎢⎥ ⎢⎥==⎢⎥⎢⎥⎢⎥ ⎣⎦1111(1)(1)112221,12,1,1(,,,)n Tn n n n n n n b L L L L b a a a --------+++==注意到1n A -是一个上三角阵,记111111221n n n U A L L L L A -------==则121()n A L L L U LU -==其中,121n L L L L -= . 不难验证21313212_1111n n nn m L m m m m m ⎡⎤⎢⎥ ⎢⎥⎢⎥= ⎢⎥ ⎢⎥⎢⎥ 1 ⎢⎥⎣⎦是单位下三角阵.于是解线性方程组Ax b =,就转化为解方程 LUx b =,若令Ux y =就得到一个与 Ax b =等价的方程组Ly b Ux y =⎧⎨=⎩【定理2.2】 若 A 为 n 阶方阵,且 A 的所有顺序主子式0k ∆≠,1,2,,k n = .则存在唯一的一个单位下三角矩阵 L 和一个上三角矩阵 U ,使A LU =.在上述过程中,若不假设A 的顺序主子式都不为零,只假设A 非奇异,那么Gauss 消去法将不可避免要应用两行对换的初等变换.第一次消元,将第1行与第1r 行交换,相当于将方程组Ax b =左乘矩阵11r P :1111r r P Ax P b=经第一次消元得11111111r r L P Ax L P b--=即系数矩阵为11111r A L P A-=,其中110111r P ⎡⎢ ⎢ 1= 1 0 1 ⎣0 0 ⎤⎥⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎦1 列 1r列 类似地,经1n -次消元,有121111111,22,11n n n n n r n n r r A L P L P L P A----------= .如果预先知道每一个(1,2,,1)iir P i n =- ,则在消元之前就全部作交换,得 1211,2,1,n n n r n r r A P P P A PA----== ,其中,1211,2,1,n n n r n r r P P P P ----= .即原方程变为PAx Pb =然后再消元,相当于对PA 做三角分解PA LU =由以上讨论,可得结论 【定理2.3】 若A 非奇异,则一定存在排列矩阵 P ,使得 PA 被分解为一个单位下三角阵和一个上三角1 行1行r阵的乘积,即PA LU =成立.这时,原方程组Ax b = 等价于 PAx Pb =,即等价于求解LUx Pb =令Ux y =则Ly Pb =实际求解时,先解方程组Ly Pb =,再根据 y 求解 Ux y =,即得原方程组Ax b =的解. 这种求解方法称为三角分解法.常用三角分解方法有以下几种. 1.Doolittle 分解方法 假设系数矩阵A 不需要进行行交换,且三角分解是唯一的. 记21121110n n l L l l ⎡⎤⎢⎥ ⎢⎥=⎢⎥ ⎢⎥ ⎢⎥⎣⎦ , 11121222n n nn u u u u u U u ⎡⎤⎢⎥ ⎢⎥=⎢⎥ ⎢⎥ 0 ⎣⎦ 于是有1112111121222212222112111110n n n n n n n n nn a a a u u u u u a a a l l l a a a ⎡⎤ ⎡⎤⎢⎥⎢⎥ ⎢⎥⎢⎥=⎢⎥⎢⎥ ⎢⎥⎢⎥ ⎢⎥⎢⎥ ⎣⎦⎣⎦ nn u ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥0 ⎣⎦从前面讨论A 的LU 分解过程可看出,L 、U 的元素都是用有关的(1)k ij a -来表示的,而它们的计算较麻烦.现在给出直接从系数矩阵A ,通过比较等式的两边逐步把L 和U 构造出来的方法,而不必利用Gauss 消去法的中间结果(1)k ij a -.计算步骤: (1) 由L 阵的第1行分别乘U 阵的各列,先算出U 阵的第1行元素 11,1,2,,j j u a j n = = .然后,由L 阵的各行分别去乘U 阵的第1列,算出L 阵的第1列元素1111/,2,3,,i i l a a i n = = .(2)现假设已经算出U 阵的前1r -行元素,L 阵的前1r -列元素,下面来算U 阵的第r 行元素,L 阵的第r 列元素.由L 阵的第r 行分别乘U 阵的第j 列(,1,,)j r r n =+ ,得11r ij rk kj rjk a l u u -==+∑所以,得U 阵的第r 行元素11,,1,,r rj rj rk kj k u a l u j r r n-==- =+∑ .再由L 阵的第i 行(1,2,,)i r r n =++ 分别去乘U 阵的第r 列,得11r ir ik kr ir rrk a l u l u -==+∑,所以,得L 阵的第r 列元素11[]/,1,2,,.r ir ir ik kr rr k l a l u u i r r n -==- =++∑取1,2,,r n = 逐步计算,就可完成三角分解A LU =;(3)解与Ax b = 等价的方程组Ly b Ux y =⎧⎨=⎩逐次用向前代入过程先解Ly b = 得1111,2,3,,.i i i ij j j y b y b l y i n -==⎧⎪⎨=- =⎪⎩∑然后再用逐次向后回代过程解Ux y =得1/,()/,1,2,,2,1.n n nn n i i ij j ii j i x y u x y u x u i n n =+=⎧⎪⎨=- =--⎪⎩∑2.Crout 分解方法仍假设系数矩阵A 不需要进行行交换,且三角分解是唯一的.即ˆA L=ˆU .与Doolittle 分解方法的区别在111212122211n n n n nn a a a a a a a a a ⎡⎤ ⎢⎥ ⎢⎥=⎢⎥ ⎢⎥⎢⎥ ⎣⎦ 1122ˆˆl l ⎡⎤ 0⎢⎥ ⎢⎥⎢⎥ ⎢⎥⎢⎥⎣⎦ 122ˆ1ˆ10n u u ⎡⎤⎢⎥ ⎢⎥⎢⎥ ⎢⎥ 1 ⎣⎦ 比较两边,则可推导出与Doolittle 分解方法类似的公式,不过Crout 分解方法是先算ˆL 的第r 列,然后再算ˆU的第r 行.3.Cholesky 分解方法若 A 为对称正定矩阵,则有 ˆT U L =,即11()()TT T A LDL LD LD LL ===其中L 为下三角阵. 进一步展开为1121111211112122221222221212n n n n n n nn n n nn a a a l l l l a a a l l l l l l l a a a ⎡⎤⎡⎤ ⎢⎥⎢⎥ 0 ⎢⎥⎢⎥=⎢⎥⎢⎥ ⎢⎥⎢⎥ ⎢⎥ ⎢⎥⎣⎦⎣⎦ 0nn l ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥ ⎣⎦ 比较两边对应元素,容易得到12121()r rr rr rk k l a l -==-∑ ,11()/r ir ir ik rk rrk l a l l l -==-∑ 1,2,,;1,2,,.r n i r r n ==++Cholesky 分解的优点:不用选主元. 由21rrr rk k a l ==∑ 可以看出||1,2,,.rk l k r ≤=这表明中间量rk l得以控制,因此不会产生由中间量放大使计算不稳定的现象. Cholesky 分解的缺点:需要作开方运算. 改进的Cholesky 分解: 改为使用分解T A LDL =即11121121121221222121111n n n n n n n n nn a a a d l l l d a a a l l d a a a ⎡⎤ 1 ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥ 1 1 ⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥ ⎢⎥⎢⎥⎢⎥ ⎢⎥ ⎣⎦⎣⎦⎣⎦ 2n l ⎡⎤⎢⎥ ⎢⎥⎢⎥ ⎢⎥ 1⎣⎦其中21ˆl 1ˆn l 2ˆn l ˆnn l 1ˆn u12111()/r r rr rk k k r ir ir ik k rk rk d a l d l a l d l d-=-=⎧=-⎪⎪⎨⎪=-⎪⎩∑∑,1,2,,;1,2,,.r n i r r n ==++Cholesky 分解方法或平方根法:应用Cholesky 分解可将Ax b =分解为两个三角形方程组T Ly b L x y ⎧= ⎪⎨= ⎪⎩分别可解得111111/,()/.i i i ik k ii k y b l y b l y l i n -=⎧=⎪⎨=-, =2,3,,⎪⎩∑和1/,()/1,.n n nn n i i ki k ii k i x y l x y l x l i n n =+⎧=⎪⎨=-, =--2,,2,1⎪⎩∑改进的Cholesky 分解方法或改进的平方根法:应用改进的Cholesky 分解,将方程组Ax b =分解为下面两个方程组1,,T Ly b L x D y -= ⎧⎨= ⎩同理可解得1111,,2,3,,.i i i ik k k y b y b l y i n ==⎧=⎪⎨=- =⎪⎩∑和1/,/,1,2,,2,1.n n n n i i i ki k k i x y d x y d l x i n n =+⎧=⎪⎨=- =--⎪⎩∑ 4.解三对角方程组的追赶法若()ij n n A a ⨯=满足1||||,1,2,,.nii ij j j ia a i n =≠> =∑则称A 为严格对角占优矩阵.若A 满足1||||,1,2,,.nii ij j j ia a i n =≠≥ =∑且其中至少有一个严格不等式成立,则称A 为弱对角占优矩阵.现在考虑Ax d = 的求解,即11112222211111n n n n n n n n n b c x d a b c x d a b c x d d a b x -----⎡⎤⎡⎤⎡⎤ ⎢⎥⎢⎥⎢⎥ ⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥ = ⎢⎥⎢⎥⎢⎥ ⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦ 系数矩阵A 满足条件11||||0,||||||,,0,2,3,, 1.||||0,i i i i i n n b c b a c a c i n b a ⎧>>⎪≥+ ≠=-⎨⎪>>⎩采用Crout 分解方法11112222221111n n n n n n n b c a b c a b c a b βαβγαγα---⎡⎤ ⎡⎤⎢⎥ 1 ⎢⎥⎢⎥ ⎢⎥⎢⎥ = ⎢⎥⎢⎥ ⎢⎥ ⎢⎥ ⎢⎥⎢⎥⎣⎦ ⎣⎦ 1n β-⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥1 ⎢⎥⎢⎥ 1 ⎣⎦其中,,,i i i αβγ为待定系数.比较上式两边可得到111111,;,,2,3,,;,2,3,, 1.i i i i i i i i i b c a b i n c i n ααβγγβααβ-= == =+ == =-进而可导出1111111,2,3,,.,/,,2,3,,./(),2,3,, 1.i i i i i i ii i i i a i n b c b b i n c b i n γαβααββαβ--⎧= =⎪= =⎪⎨=- =⎪⎪=- =-⎩由此可看出,真正需要计算的是(1,2,,1)i n β=- ,而i α可由,i i b a 和1i β-产生.因此,实现了A 的Crout 分解后,求解Ax d =就等价于解方程组Ly dUx y =⎧⎨=⎩从而得到解三对角方程组的追赶法公式: (1) 计算i β的递推公式:1111/,/(),2,3,, 1.i i i i i c b c b i n ββαβ-⎧=⎪⎨=- =-⎪⎩(2) 解方程组Ly d =:11111/()/(),2,3,,.i i i i i i i y d b y d a y b a i n β--⎧=⎪⎨=-- =⎪⎩(3) 解方程组Ux y =:1,1,2,,2,1.n n i i i i x y x y x i n n β+⎧=⎪⎨=- =--⎪⎩追赶法的乘除法次数是66n -次.将计算121n βββ-→→→ 及12n y y y →→→ 的过程称之为“追”的过程,将计算方程组Ax d =的解121n n x x x x -→→→→ 的过程称之为“赶”的过程.四、迭代法 将Ax b =改写为一个等价的方程组 x Bx k =+建立迭代公式 (1)(),0,1,2,.i i x Bx k i +=+ =称矩阵B 为迭代矩阵.【定义】 如果对固定的矩阵B及向量k,对任意初始猜值向量(0)x ,迭代公式(1)()i i +()i()*lim i i x x →+∞=成立,其中*x 是一确定的向量,它不依赖于(0)x 的选取.则称此迭代公式是收敛的,否则称为发散的.如果迭代收敛,则应有**,x Bx k =+1. 收敛性()()*,0,1,2,i i x x i ε=- =为第i步迭代的误差向量.则有(1)(1)*()*()(),0,1,2,.x x B x x B i εε++=-=-==所以,容易推出()(0),0,1,2,,i i B i εε= =其中,(0)(0)*xxε=-为初始猜值的误差向量.设n nB K ⨯∈,lim 0i i B →+∞=⇔ ()1B ρ<.迭代法收敛基本定理: 下面三个命题是等价的 (1) 迭代法(1)()i i x Bx k +=+收敛;(2)()1B ρ<;(3) 至少存在一种矩阵的从属范数⋅,使1B <注:当条件()1B ρ<难以检验时,用1B 或B ∞等容易求出的范数,检验11B <或1B∞<来作为收敛的充分条件较为方便.常用迭代法如下. 2.Jacob 迭代 考察线性方程组Ax b =,设A 为非奇异的n 阶方阵,且对角线元素0ii a ≠(1,2,,)i n = .此时,可将矩阵A 写成如下形式A D L U =++,1122(,,,)nn D diag a a a = ,21313212000n n a L a a a a ⎡⎤⎢⎥ ⎢⎥⎢⎥= ⎢⎥ ⎢⎥⎢⎥ 0 ⎢⎥⎣⎦ ,12131232000n n a a a a a U ⎡⎤ ⎢⎥ ⎢⎥⎢⎥= 0 ⎢⎥ ⎢⎥⎢⎥ ⎢⎥⎣⎦ ,建立Jacobi 迭代公式(1)1()1(),i i x D L U x D b +--=-++迭代矩阵11()J B D L U I D A --=-+=-J B 的具体元素为112111122122221200n n J n n nn nn a a a a a a B a a a a a a ⎡⎤ - -⎢⎥⎢⎥⎢⎥- - ⎢⎥=⎢⎥⎢⎥ ⎢⎥⎢⎥- - 0 ⎢⎥⎣⎦ Jacobi 迭代法的分量形式如下1(1)()()111(),j n i i i jj jm m jm m m m j jj xb a x a x a -+==+=--∑∑1,2,,;0,1,2,.j n i = =3.Gauss-Seidel 迭代容易看出,在Jacobi 迭代法中,每次迭代用的是前一次迭代的全部分量()(1,2,,)i jx j n = .实际上,在计算(1)i j x +时,最新的分量(1)(1)(1)121,,,i i i j x x x +++- 已经算出,但没有被利用.事实上,如果Jacobi 迭代收敛,最新算出的分量一般都比前一次旧的分量更加逼近精确解,因此,若在求(1)i j x+时,利用刚刚计算出的新分量(1)(1)(1)121,,,i i i j x x x+++- ,对Jacobi 迭代加以修改,可得迭代公式1(1)(1)()111(),j ni i i jj jm m jm m m m j jj xb a x a x a -++==+=--∑∑1,2,,;0,1,2,.j n i = =矩阵形式(1)1()1()(),0,1,2,.i i x D L Ux D L b i +--=-++-+=1()G B D L U -=--+注:(1)两种迭代法均收敛时,Gauss-Seidt 迭代收敛速度更快一些.(2)但也有这样的方程组,对Jacobi 迭代法收敛,而对Gauss-Seidel 迭代法却是发散的. 【例2.4】 分别用Jacobi 迭代法和Gauss-Seidel 迭代法求解下面的方程组121232342,46,4 2.x x x x x x x ⎧- =⎪-+-=⎨⎪-+=⎩初始猜值取0(0,0,0)x =. 【解】 Jacobi 迭代公式为(1)()12(1)()()213(1)()321(2),41(6),0,1,2,41(2),4i i i i i i i x x x x x i x x +++⎧=+⎪⎪⎪=++=⎨⎪⎪=+⎪⎩迭代计算4次的结果如下 (1)(2)(3)(4)(0.5,1.5,0.5),(0.875,1.75,0.875),(0.938,1.938,0.938),(0.984,1.969,0.984).T T T T x x x x ====Gauss-Seidel 迭代公式为(1)()12(1)(1)()213(1)(1)321(2),41(6),0,1,2,41(2),4i i i i i i i x x x x x i x x +++++⎧=+⎪⎪⎪=++=⎨⎪⎪=+⎪⎩迭代计算4次的结果如下(1)(2)(3)(4)(0.5,1.625,0.9063),(0.9063,1.9532,0.9883),(0.9883,2.0,0.9985),(0.9985,1.999,0.9998).T T T T x x x x ====从这个例子可以看到,两种迭代法作出的向量序列(){}i x 逐步逼近方程组的精确解*(1,2,1)T x =,而且Gauss-Seidel 迭代法收敛速度较快.一般情况下,当这两种迭代法均收敛时,Gauss-Seidt 迭代收敛速度更3.超松弛迭代法为了加快迭代的收敛速度,可将Gauss-Seidel 迭代公式改写成1(1)()(1)()11(),j ni i i i jjj jm m jm m m m jjj xx b a x a x a -++===+--∑∑ 1,2,,;0,1,2,.j n i = =并记1(1)(1)()11(),j ni i i jj jm m jm m m m jjj rb a x a x a -++===--∑∑称 (1)i j r + 为 1i + 步迭代的第 j 个分量的误差向量.当迭代收敛时,显然有所有的误差向量(1)0(),1,2,,.i j r i j n +→→∞=为了获得更快的迭代公式,引入因子R ω∈,对误差向量 (1)i j r + 加以修正,得超松弛迭代法(简称SOR 方法)(1)()(1),0,1,2,.i i i j j j x x r i ω++=+ =即1(1)()(1)()1(),j ni i i i jjj jm mjm m m m jjjxx b a xa x a ω-++===+--∑∑1,2,,;0,1,2,.j n i = =适当选取因子ω,可望比Gauss-Seidel 迭代法收敛得更快.称ω为松弛因子.特别当1ω=时,SOR 方法就是Gauss-Seidel 迭代法.写成矩阵向量形式(1)1()1()[(1)](),j i x D L D U x D L b ωωωωω+--=+--++0,1,2,.i =迭代矩阵为1()[(1)].B D L D U ωωωω-=+--实际计算时,大部分是由计算经验或通过试算法来确定opt ω的近似值.所谓试算法就是从同一初始向量出发,取不同的松驰因子ω迭代相同次数(注意:迭代次数不应太少),然后比较其相应的误差向量()()i i r b Ax =-(或()(1)i i x x --),并取使其范数最小的松弛因子ω作为最佳松弛因子opt ω的近似值.实践证明,此方法虽然简单,但往往是行之有效的. 4.迭代收敛其它判别方法:用迭代法收敛基本定理来判断收敛性时,当n 较大时,迭代矩阵的谱半径计算比较困难,因此,人们试图建立直接利用矩阵元素的条件来判别迭代法的收敛定理. (1) 若方程组Ax b =中的系数矩阵A 是对称正定阵,则 Gauss-Seidel 迭代法收敛. 对于SOR 方法,当02ω<< 时迭代收敛(2)若A 为严格对角占优阵,则解方程组 Ax b = 的Jacobi 迭代法,Gauss -Seidel 迭代法均收敛. 对于SOR 方法,当01ω<< 时迭代收敛.【例2.5】 设线性方程组为121221,32,x x x x ⎧+=-⎪⎨+=⎪⎩建立收敛的Jacobi 迭代公式和Gauss -Seidel 迭代公式. 【解】 对方程组直接建立迭代公式,其Jacobi 迭代矩阵为0230J B -⎡⎤=⎢⎥- ⎣⎦,显见谱半径()1J B ρ=>,故Jacobi 迭代公式发散.同理Gauss -Seidel 迭代矩阵为0206G B -⎡⎤=⎢⎥ ⎣⎦,谱半径()61G B ρ=>,故Gauss -Seidel 选代公式也发散. 若交换原方程组两个方程的次序,得一等价方程组121232,21,x x x x ⎧+=⎪⎨+=-⎪⎩其系数矩阵显然对角占优,故对这一等价方程组建立的Jacobi 迭代公式,Gauss -Seidel 迭代公式皆收敛. (3)SOR 方法收敛的必要条件是 02ω<<【定理2.5】 如果A 是对称正定阵,且02ω<<,则解Ax b =的SOR 方法收敛.注:当(0,2)ω∈ 时,并不是对任意类型的矩阵A ,解线性方程组Ax b =的SOR 方法都是收敛的.当SOR 方法收敛时,通常希望选择一个最佳的值opt ω使SOR 方法的收敛速度最快.然而遗憾的是,目前尚无确定最佳超松弛因子opt ω的一般理论结果.实际计算时,大部分是由计算经验或通过试算法来确定opt ω的近似值.所谓试算法就是从同一初始向量出发,取不同的松驰因子ω迭代相同次数(注意:迭代次数不应太少),然后比较其相应的误差向量()()i i r b Ax =-(或()(1)i i x x --),并取使其范数最小的松弛因子ω作为最佳松弛因子opt ω的近似值.实践证明,此方法虽然简单,但往往是行之有效的.【例2.6】 求解线性方程组Ax b =,其中10.3000900.308980.30009100.4669110.274710.30898A - -- -0.46691 0= - -- 00.274711(5.32088,6.07624,8.80455,2.67600).T b ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥ - ⎣⎦ =-分别利用Jacobi 迭代法,Gauss -Seidel 迭代法,SOR 迭代法求解. 【解】其结果列入下表中,方程组精确解(五位有效数字)为*(8.4877,6.4275, 4.7028,4.0066).T x =-Jacobi 迭代法计算结果i()1i x()2i x ()3i x ()4i x ()2||||i r0 012.3095 1 5.3209 6.0762 -8.8046 2.6760 5.3609 27.97113.5621 -5.2324 1.90143.631820 8.4872 6.4263 -4.7035 4.0041 0.0041 218.48606.4271 -4.7050 4.0063 0.0028Gauss-Seidel 迭代法计算结果i()1i x()2i x()3i x()4i x()2||||i r0 012.3095 1 5.3209 7.6730 -5.2220 2.8855 3.6202 28.51506.1933 -5.1201 3.90040.49098 8.4832 6.4228 -4.7064 4.0043 0.0078 98.48556.4252-4.70554.00550.0038SOR 迭代法计算结果(1.16ω=)i()1i x()2i x()3i x()4i x()2||||i r0 012.3095 1 6.1722 9.1970 -5.2320 3.6492 3.6659 29.69416.1177 -4.8999 4.43351.33136 8.4842 6.4253 -4.7005 4.4047 0.0051 78.48686.4288-4.70314.00650.0016计算结果表明,若求出精确到小数点后两位的近似解,Jacobi 迭代法需要21次,Gauss -Seidel 迭代法需要9次,而SOR 迭代法(选松弛因子 1.16ω=)仅需要7次,起到加速作用.5.误差分析 【定理2.6】设 *x 是方程 Ax b = 的惟一解,v ⋅ 是某一种向量范数,若对应的迭代矩阵其范数1v B <,则迭代法(1)(),0,1,2,.i i xBx k i +=+ = 收敛,且产生向量序列(){}i x 满足()*()(1)||||||||||||1||||i i i vv vvB x x x x B --≤--()*(1)(0)||||||||||||1||||i i vv vvB x x x x B -≤--【证明】 由迭代收敛基本定理的(3)知,迭代法(1)(),0,1,2,.i i x Bx k i +=+ =收敛到方程的解*x .于是,由迭代公式立即得到(1)*()*(1)()()(1)(),().i i i i i i x x B x x x x B x x ++--=--=-为书写方便把v 范数中v 略去,有估计式(1)*()*||||||||||||,i i x x B x x +-≤⋅-(1)()()(1)||||||||||||.i i i i x x B x x +--≤⋅-再利用向量范数不等式||||||||||||x y x y -≥-于是得第一个不等式()(1)(1)()()*(1)*()*||||||||||||||||||||(1||||)||||,i i i i i i i B x x x x x x x x B x x -++ -≥-≥--- ≥--再反复递推即第二个不等式.注:(1)若事先给出误差精度ε,利用第二个不等式可得到迭代次数的估计(1)(0)(1||||)ln ln ||||||||v v v B i B x x ε⎡⎤->⎢⎥-⎣⎦ (2)在||||v B 不太接近1的情况下,由第一个不等式,可用()(1)||||i i v x x ε--<作为控制迭代终止的条件,并取 ()i x 作为方程组 Ax b = 的近似解.但是在||||v B 很接近1时,此方法并不可靠.一般可取1,2,v =∞或F .【例2.7】 用Jacobi 迭代法解方程组123123123202324,812,231530.x x x x x x x x x ⎧++=⎪++=⎨⎪-+=⎩问Jacobi 迭代是否收敛?若收敛,取(0)(0,0,0)T x =,需要迭代多少次,才能保证各分量的误差绝对值小于610-?【解】 Jacobi 迭代的分量公式为(1)()()123(1)()()213(1)()()3121(2423)201(12),0,1,2,81(3022),15i i i i i i i i i x x x x x x i x x x +++⎧=--⎪⎪⎪=-- =⎨⎪⎪=-+⎪⎩Jacobi 迭代矩阵J B 为130102011088210155J B ⎡⎤ - -⎢⎥⎢⎥⎢⎥=- -⎢⎥⎢⎥⎢⎥- ⎢⎥⎣⎦,由5251||||max ,,1208153J B ∞⎧⎫==<⎨⎬⎩⎭知,Jacobi 迭代收敛. 因设(0)(0,0,0)Tx =,用迭代公式计算一次得(1)(1)(1)12363,, 2.52x x x = = =而(1)(0)|||| 2.x x ∞-=于是有6110(1)13ln ln 13.23i -⎡⎤⋅-⎢⎥>=⎢⎥⎢⎥⎣⎦所以,要保证各分量误差绝对值小于610-,需要迭代14次.【例2.8】 用Gauss -Seidel 迭代法解例2.11中的方程组,问迭代是否收敛?若收敛,取(0)(0,0,0)Tx =,需要迭代多少次,才能保证各分量误差的绝对值小于610-?【解】 Gauss -Seidel 迭代矩阵G B 为102403601()03025524000G B D L U - - ⎡⎤⎢⎥=-+= -⎢⎥⎢⎥ 38 -3⎣⎦显然1||||14G B =<,所以迭代收敛. Gauss -Seidel 迭代分量公式为(1)()()123(1)(1)()213(1)(1)(1)3121(2423),201(12),0,1,2,81(3022),15i i i i i i i i i x x x x x x i x x x ++++++⎧=--⎪⎪⎪=-- =⎨⎪⎪=-+⎪⎩因取(0)(0,0,0)T x =,故迭代一次得(1)(1)(1)1231.2, 1.35, 2.11x x x = = =于是有(1)(0)|||| 2.11x x ∞-=,计算得6110(1)14ln ln 10.2.114i -⎡⎤⋅-⎢⎥>=⎢⎥⎢⎥⎣⎦所在,要保证各分量误差绝对值小于610-,需要迭代11次.。

数值分析-线性方程组的直接解法

数值分析-线性方程组的直接解法

算法 Gauss(A,a,b,n,x)
1. 消元 For k=1,2, … , n-1 1.1 if akk=0 , stop; 1.2 For i=k+1,k+2, …, n 1.2.1 l ik=aik /akk => aik 1.2.2 For j=k+1,k+2, … ,n ai j -aik ak j =>aij 1.2.3 bi -aik bk=> bi 2. 回代 2.1 bn / an=>xn; 2.2 For i=n-1,n-2, …, 2,1 2.2.1 bk => S 2.2.2 For j=k+1,k+2, … ,n S –akj xj =>S 2.2.3 S/ akk => xk a1 1 a1 2 a13 a2 1 a2 2 a23
线性方程组的直接解法
刘 斌
线性方程组的直接解法
§1 Gauss消去法 1.1 顺序Gauss消去法
1.2
§2 2.1 2.2 2.3
列主元Gauss消去法
Gauss消去法的矩阵运算 Doolittle分解法 平方根法
直接三角分解方法
2.4
追赶法
引入
在科学计算中,经常需要求解含有n个未知量 的n个方程构成的线性方程组 a11 x1 a12 x2 a1n xn b1 a21 x1 a22 x2 a2 n xn b2 (1) an1 x1 an 2 x2 ann xn bn
(1) a12 ( 2) a22 0
(1) (1) a13 a1 n ( 2) ( 2) a23 a2 n ( 3) ( 3) a33 a3 n
0

数值分析第二章解线性方程组的直接方法

数值分析第二章解线性方程组的直接方法

a2(22) x2 ... a2(2n) xn b2(2) ,
..............
an(nn) xn bn(n) .
对此方程组进行回代,就可求出方程组的解.
xn
xiΒιβλιοθήκη bn(n) (bi(i )
an(nn) ,
n
ai(ji ) x
j i 1
j
)
ai(ii ) ,
i n 1,n 2,,1.
x3 x3
1 1
4x1 2x2 2x3 3
消去后两个方程中的x1得
x1
2 x2 5 x2
x3 1 2x3 2
6x2 6x3 1
再消去最后一个方程的x2得
x1
2 x2 5 x2
x3 1 2x3 2
42 5
x3
7 5
消元结束.
x1
1 2
经过回代得解:
x2
1 3
互换, 因而程序比较复杂, 计算时间较长.
• 列主元素法的精度虽然稍低于全主元素法, 但其
计算简单, 工作量大为减少, 且计算经验与理论实
践均表明, 它与全主元素法同样具有良好的数值稳
定性.
• 列主元素法是求解中小型稠密线性方程组的最好
方法之一.
27
§2 直接三角分解法
Gauss消元法的矩阵表示
a12
a13
a 1 0 a21 a22 a23 a21 aa11 a22 aa12 a23 aa13
b 0 1 a31 a32 a33 a31 ba11 a32 ba12 a33 ba13
28
n=3时Gauss消元法的矩阵表示
a11 a12 a13 A a21 a22 a23
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档