线性方程组的数值解法


a ( i 1) ii
0
(i 2,3, , k)
其中:
a11 a1i
A1 (a11 ),
Ai
(A的主子阵)
ai1 aii
反之,可用归纳法证明,如果 A 的顺序主子式:
det(
Ai )
a(0 11
a) (1) 22
a ( i 1) ii
0
(i 1,2, , k )
则
a ( i 1) ii
A = LU 称为对矩阵 A 的三角分解,又称LU分解。
a11 a12 a13 a1n
a21
a22
a23
a2n
A a31
a32
a33
a3n
LU
an1 an2 an3 ann
其中
1
m21 1
L m31
m32
1
,
mn1 mn2
1
a1(10)
a(0) 12
a(1) 22
m21
1 0
0
L1
m31
0 1
0 0
mn1 0 0 1
mi1
a(0) i1
a(0) 11
,
(i 2,3, , n)
则根据距阵左乘有 L1A(0) = A(1)
第2列消元将 A(1) 化为 A(2),若令:
1 0 0 0
0
1
0 0
L2
0
m32
1
0 0
0 mn2 0 1
ai1 l u i1 11 i 2,3, , n
由此可得 U 的第 1 行元素和 L 的第 1 列元素:
u1i a1i i 1,2, , n
a(1) 2n
U
a(2) 33
a(2) 3n
a(n1) nn
由此可见,在
a ( k 1) kk
0
(k 1,2, , n 1)
的
条件下,高斯消去法实质上是将方程组的系数矩阵A
分解为两个三角矩阵的乘积 A = LU。
这种把非奇异矩阵 A 分解成一个下三角矩阵 L
和一个上三角矩阵 U 的乘积称为矩阵的三角分解,
Lk (k 1,2, , n 1) 是一类初等矩阵,它们都是单位
下三角阵,且其逆矩阵也是单位下三角阵,只需将
mik 改为 mik (i k 1, k 2, , n) ,就得到 Lk1 。即:
1
1
Lk1
1
mk 1,k 1
mi1= a(1)i1/ a(1) 11
mi=n2k,3,……n 1
惟一性得证。
把A分解成一个单位下三角阵 L 和一个
上三角阵 U 的乘积称为杜利特尔 (Doolittle)分解。其中:
1
L l21 1
,
ln1 ln2 1
u11 u12 u1n
U
u22
u2n
unn
若把A分解成一个下三角阵 L 和一个单位
上三角阵 U 的乘积称为克洛特(Crout) 分解,其中:
l11
1 u12 u1n
L l21 l22
, U
1
u2n
ln1
ln2
lnn
1
6.5.2 用三角分解法解方程组 求解线性方程组 Ax=b 时,先对非奇异矩阵 A
进行LU分解,使 A=LU,那么方程组就化为:
LU x = b
从而使问题转化为求解两个简单的三角方程组:
L y = b 求解 y U x = y 求解 x
a(0) 13
a(1) 23
a(0) 1n
a(1) 2n
U
a(2) 33
a(2) 3n
a(n1) nn
方程组 Ax =b 的系数矩阵 A 经过顺序消元逐 步化为上三角型 A(n) , 相当于用一系列初等变 换左乘A的结果。事实上,第1列消元将A(0)=A 化为A(1),若令:
1 0 0 0
Ln1 Ln2 L2 L1 A A( n1) 于是有:
A ( L11 L21
L1 n1
)
A(
n1)
( L11 L21
L1 n1
)U
LU
其中:
1
m21
1
L
m31
m32
1
,
mn1 mn2
1
a1(10)
a(0) 12
a(1) 22
a(0) 13
a(1) 23
a(0) 1n
又称 LU 分解。
显然,如果
a ( k 1) kk
0
(k 1,2, , n 1) ,由行列
式的性质知,方程组系数矩阵 A 的前 n-1 个顺序
主子矩阵 Ak (k 1,2, , n 1) 非奇异,即顺序 主子式不等于零,即:
det(
A1 )
a(0) 11
0
det(
Ai )
a(0 11
a) (1) 22
0
(i 1,2, , k)
于是得到下述定理:
定理6.5 设 A Rnn ,如果 A 顺序各阶主子式
det( Ai ) 0 (i 1,2, , n 1) ,则A可惟一地 分解成一个单位下三角阵 L 和一个非奇异的
上三角阵 U 的乘积。 证: 由于A各阶主子式不为零,则消元过程能进行到底,
前面已证明将方程组的系数矩阵 A 用初等变换 的方法分解成两个三角矩阵的乘积 A=LU 的过程。 现仅证明分解的惟一性。 设A有两种 LU 分解:
A LU LU
其中 L, L 为单位下三角阵, U ,U 为上三角阵 ∵ A的行列式 A 0, L,U , L,U 均为非奇异矩阵,
且有:
LU LU
上式两边左边同乘 L1 ,右边同乘 U 1 得:
L1L UU 1
上式左边为单位下三角阵,右边为上三角阵,故应为 单位阵,即:
L L, U U
这就是求解线性方程组的三角分解法的基本思想。 下面只介绍杜利特尔(Doolittle)分解法。
设 A = LU 为:
a11 a11 a11 1
a21 a22
a2n
l21
1
an1
an2
ann
ln1 ln2 1
u11 u12 u1n
u22
u2n
unn
由矩阵乘法规则: a1i u1i i 1,2, , n
mi2
a (1) i2
a (1) 22
,
(i 3,4, , n)
1
经计算可知
L2A(1)=A(2), 依此类推,一般有 LkA(k-1)=A(k)
Lk
1

mk1,k 1
mnk
1
矩阵 A A(0) 经过消元化为上三角阵 A(n1) 的过程
可表示为:
Ln1 Ln2 L2 L1 A A(n1)
6.5 矩阵三角分解法
6.5.1 矩阵三角分解原理
应用高斯消去法解 n 阶线性方程组 Ax=b, 经过 n 步消元之后, 得出一个等价的上三角型方程组 A(n-1) x = b(n-1), 对上三角形方程组用逐步回代就可 以求出解来。上述过程可通过矩阵分解来实现。
将非奇异阵 A 分解成一个下三角阵 L 和一个上 三角阵 U 的乘积:
合集下载

线性代数方程组的数值解法讨论

线性代数方程组的数值解法讨论

线性代数方程组的数值解法讨论解线性方程组的方法,主要分为直接方法和迭代方法两种。

直接法是在没有舍入误差的假设下能在预定的运算次数内求得精确解。

而实际上,原始数据的误差和运算的舍入误差是不可以避免的,实际上获得的也是近似解。

迭代法是构造一定的递推格式,产生逼近精确解的序列。

对于高阶方程组,如一些偏微分方程数值求解中出现的方程组,采用直接法计算代价比较高,迭代法则简单又实用,因此比较受工程人员青睐。

小组成员本着工程应用,讨论将学习的理论知识转变为matlab 代码。

讨论的成果也以各种代码的形式在下面展现。

1 Jacobi 迭代法使用Jacobi 迭代法,首先必须给定初始值,其计算过程可以用以下步骤描述: 步骤1 输入系数矩阵A ,常熟向量b ,初值(0)x ,误差限ε,正整数N ,令1k =.步骤2 (0)11ni i ij jj ii j i x b a x a =≠⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦∑,(0)j x 代表(0)x 的第j 个分量。

步骤3 计算11ni i ij j j ii j i y b a x a =≠⎡⎤⎢⎥=-⎢⎥⎢⎥⎣⎦∑,判断1max i i i n x y ε≤≤-<,如果是,则结束迭代,转入步骤5;否则,转入步骤4。

步骤4 判断k N =?如果是,则输出失败标志;否则,置1k k =+,i i x y ⇐,1,2,,i n =,转入步骤2。

步骤5 输出12,,n y y y 。

雅可比迭代代码function [x,k]=Fjacobi(A,b,x0,tol)% jacobi 迭代法 计算线性方程组% tol 为输入误差容限,x0为迭代初值max1= 300; %默认最多迭代300,超过要300次给出警告 D=diag(diag(A)); L=-tril(A,-1);U=-triu(A,1); B=D\(L+U); f=D\b; x=B*x0+f;k=1; %迭代次数while norm(x-x0)>=tol x0=x;x=B*x0+f; k=k+1;if(k>=max1)disp('迭代超过300次,方程组可能不收敛'); return; end%[k x'] %显示每一步迭代的结果 End2 高斯赛德尔迭代由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量(1)k i x +时,用最新分量11()k x +,12()k x +…(1)1k i x +-代替旧分量)1(k x ', )2(k x …)3(k x 就得到高斯赛德尔迭代格式,其数学表达式为:1(1)(1)()111(1,2,,)i n k k k ii ij j ij j j j i ii xb a x a x i n a -++==+⎛⎫=--= ⎪⎝⎭∑∑具体形式如下:()()()(1)()()()11221331111(1)(1)()()22112332222(1)(1)(1)(1)(1)112233,11111k k k k n n k k k k n n k k k k k n n n n n n n n nnx a x a x a x b a x a x a x a x b a x a x a x a x a x b a ++++++++--=----+=----+⋯⋯⋯⋯⋯⋯=-----+矩阵形式表示为:()(1)1(1)()(0,1,2,,),k k k k n +-+=++=x D Lx Ux b将(1)(1)()(0,1,2,,)k k k k n ++=++=Dx Lx Ux b 移项整理得: (1)1()1()()(0,1,2,,))k k x D L Ux D L b k n +--=-+-=记11(),()--=-=-M D L U g D L b ,则(1)()k k x x +=+M g高斯塞德尔迭代function [x,k]=Fgseid(A,b,x0,tol)%高斯-塞德尔迭代法 计算线性方程组 % tol 为误差容限max1= 300; %默认最高迭代300次D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); G=(D-L)\U; f=(D-L)\b; x=G*x0+f;k=1; while norm(x-x0)>=tol x0=x;x=G*x0+f; k=k+1;if(k>=max1)disp('迭代次数太多,可能不收敛'); return; end% [k,x'] %显示每一步迭代结果 End3 超松弛迭代法在工程中最常遇到的问题便是线性代数方程组的求解,而线性代数方程组的求解一般可以分为两类,一类是直接法(精确法),包括克莱姆法则方法、LD 分解法等,另一类是迭代法(近似法),包括雅克比迭代法、高斯迭代法、超松弛迭代法等。

数值计算08-线性方程组数值解法(优选.)

数值计算08-线性方程组数值解法(优选.)

0
(k=1,2,…,n) ,则可通过高斯消元法求出Ax=b 的解。
引理
A的主元素
a(k) kk
0
(k=1,2,…,n) 的充要条件
是矩阵A的各阶顺序主子式不为零,即
a11
a1k
D1 a11 0 Dk
0, k 2, 3, , n
ak1
akk
定理2 Ax=b 可用高 斯消元法求解的充分必要条件是: 系数矩阵 A 的各阶顺序主子式均不为零。
Page 5
线性代数方程组的计算机解法常用方法:
直接法 迭代法
消去法 矩阵三角分解法
Page 6
直接法:经过有限步算术运算,可求得方程组
的精确解的方法(若在计算过程中没有舍入误差)
迭代法:用某种极限过程去逐步逼近线性方程
组精确解的方法 迭代法具有占存储单元少,程序设计简单,原
始系数矩阵在迭代过程中不变等优点,但存在收 敛性及收敛速度等问题
a(k) ik
a(k) kk
aijk
mik
a
k
kj
bik1 bik mikbkk
xn
bnn annn
bii
n
a
i
ij
x
j
,
xi
ji1
aiii
i, j k 1, k 2,, n
i n 1,,2,1
高斯消元法的条件
Page 20
定理1
如果在消元过程中A的主元素
a(k) kk
即:
a111
a112 a222
a11n a22n
x1 x2
bb1212
an22
an2n
xn
bn2
其中:

实验五(线性方程组的数值解法和非线性方程求解)

实验五(线性方程组的数值解法和非线性方程求解)

1大学数学实验 实验报告 | 2014/4/5一、 实验目的1、学习用Matlab 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2、通过实例学习用线性代数方程组解决简化问题。

二、 实验内容项目一:种群的繁殖与稳定收获:种群的数量因繁殖而增加,因自然死亡而减少,对于人工饲养的种群(比如家畜)而言,为了保证稳定的收获,各个年龄的种群数量应维持不变。

种群因雌性个体的繁殖而改变,为方便起见以下种群数量均指其中的雌性。

种群年龄记作k=1,2,…,n ,当年年龄k 的种群数量记作x k ,繁殖率记作b k (每个雌性个体1年的繁殖的数量),自然存活率记作s k (s k =1−d k ,d k 为1年的死亡率),收获量记作ℎk ,则来年年龄k 的种群数量x ̌k 应该为x ̌k =∑b k n k=1x k , x ̌k+1=s k x k −ℎk , (k=1,2,…,n -1)。

要求各个年龄的种群数量每年维持不变就是要求使得x ̌k =x k , (k=1,2,…,n -1).(1) 如果b k , s k 已知,给定收获量ℎk ,建立求各个年龄的稳定种群数量x k 的模型(用矩阵、向量表示).(2) 设n =5,b 1=b 2=b 5=0,b 3=5,b 4=3,s 1=s 4=0.4,s 2=s 3=0.6,如要求ℎ1~ℎ5为500,400,200,100,100,求x 1~x 5.(3) 要使ℎ1~ℎ5均为500,如何达到?问题分析:该问题属于简单的种群数量增长模型,在一定的条件(存活率,繁殖率等)下为使各年龄阶段的种群数量保持不变,各个年龄段的种群数量将会满足一定的要求,只要找到种群数量与各个参量之间的关系,建立起种群数量恒定的方程就可以求解出各年龄阶段的种群数量。

模型建立:根据题目中的信息,令x ̌k =x k ,得到方程组如下:{x ̌1=∑b k nk=1x k =x 1x ̌k+1=s k x k −ℎk =x k+1整理得到:{−x 1∑b k nk=1x k =0−x k+1+s k x k =ℎk2 大学数学实验 实验报告 | 2014/4/52写成系数矩阵的形式如下:A =[b 1−1b 2b 3s 1−100s 2−1…b n−1b n0000⋮⋱⋮000000000⋯00−10s n−1−1]令h =[0, ℎ1,ℎ2,ℎ3,…,ℎn−2,ℎn−1]Tx =[x n , x n−1,…,x 1]T则方程组化为矩阵形式:Ax =h ,即为所求模型。

第2章 线性方程组的数值解法

第2章  线性方程组的数值解法

第2章 线性方程组的数值解法2.1 引言在自然科学研究和工程技术的应用中,许多问题的解决,诸如非线性问题线性化、求微分方程的数值解最终都归结为线性方程组的求解问题. 我们在后面章节中的样条插值、曲线拟合、数值代数等,也需要求解线性方程组。

一般地,设n 阶线性方程组(linear system of equations of order n )为11112211211222221122,,,n n n n n n nn n n a x a x a x b a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪+++=⎩ (2.1.1) 表示成矩阵形式=Ax b , (2.1.2)其中()111212122212n n ij n nn n nn a a a a a a a a a a ⨯⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦ A ,12n x x x ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦ x ,12n b b b ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦b , (2.1.3) A 为系数矩阵(coefficient matrix).目前在计算机上经常使用的、简单有效的线性方程组的数值解法大致分为两类:直接法(direct method)和迭代法(iterative method). 其中直接法适用于以稠密矩阵为系数矩阵的中低阶线性方程组,而迭代法主要用于求解以稀疏矩阵为系数矩阵的高阶线性方程组。

本章首先介绍解线性方程组的两种常用的直接法:Gauss 消去法与矩阵三角分解法;然后介绍解线性方程组的三种常用的迭代法:Jacobi 迭代法、Gauss-Seidel 迭代法、超松弛法(SOR 法),并讨论它们的收敛性。

最后,讨论了线性方程组的性态。

2.2 Gauss 消去法Gauss 消去法(Gaussian elimination method )的基本思想是使用初等行变换将方程组转化为一个同解的上三角形方程组,再通过回代,求出该三角形方程组的解.2.2.1 Gauss 消去法Gauss 消去法包括消元和回代两个过程. 下面先举例说明Gauss 消去法求解线性方程组的主要过程.例2.2.1 求解线性方程组123123123471,2581,3611 1.x x x x x x x x x ++=⎧⎪++=⎨⎪++=⎩ 解 将该线性方程组写成增广矩阵(augmented matrix)的形式1471258136111⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦用Gauss 消去法求解过程如下:1.消元过程12213323323214711471147125810361036136111061020020r r r r r r r r r -+→-+→-+→⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥−−−−→---−−−−→---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥---⎣⎦⎣⎦⎣⎦,从而原方程组等价地变为上三角形方程组123233471,361,20.x x x x x x ++=⎧⎪--=-⎨⎪=⎩2.回代过程从第3 个方程解出30x =,将其代入第2 个方程得()2216/31/3x x =--+=,再将30x =及21/3x =回代到第1个方程,解出1231471/3x x x =--=-. 从而得到原方程组的解123113,0.x x x =-==对于一般线性方程组(2.1.1),使用Gauss 消去法求解分为以下两步:1.消元过程为方便起见,记()(0)(0),ijn na ⨯==A A ()T(0)(0)(0)(0)1,12,1,1,,,n n n n a a a +++== b b ,则方程组(2.1.1)为()()()()()()()()()()()()000011112211,1000021122222,100001122,1,,.n 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 +++⎧+++=⎪+++=⎪⎨⎪⎪+++=⎩ (2.2.1) 第1次消元:若()0110a ≠,对方程组(2.2.1) 执行初等行变换11i i i r l r r -→, 2,3,,i n = ,得第1个导出方程组——————————————————————————高斯 (Carl Friedrich Gauss 1777年4月30 日 – 1855年2月23 ) 是德国数学家、天文学家,在许多科学领域都做出了杰出的贡献,他为现代数论、微分几何(曲面论)、误差理论等许多数学分支奠定了基础. 他的数学研究以简明、严谨、完美而著称于世. 他在数学上与阿基米德、牛顿和欧拉齐名,被称为“数学王子”,被公认为有史以来最伟大的数学家之一.()()()()()()()()()()000011112211,111122222,111122,1,,,n nn 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 +++⎧+++=⎪⎪++=⎨⎪⎪++=⎩(2.2.2)其中()()1111/i i l a a =,()()()10011,2,3,,;2,3,, 1.ij ij i j a a l a i n j n =-==+第2次消元:若()1220a ≠,对方程组(2.2.2)执行初等行变换22,i i i r l r r -→ 3,4,,i n = ,得第2个导出方程组()()()()()()()()()()()()()()()0000011112213311,1111122223322,122233333,122233,1,,,,n nn n n n n nn n nn nn n a x 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.2.3)其中()()112222/i i l a a =,()()()21122,3,4,,;3,4,, 1.ij ij i j a a l a i n j n =-==+第k 次消元:若()10k kka -≠,对第1k -个导出方程组执行初等行变换i ik k i r l r r -→,1,2,,i k k n =++ , 得第k 个导出方程组()()()()()()()()()()()()()()()000001111221,1111,110112221,1122,11,111,1,1,11,1,,,,k k n nn k k n n n k k k k k k k n nk n k k k n k k 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 a x a x a +++++++++++++++⎧+++++=⎪⎪++++=⎪⎪⎨++=⎪⎪⎪⎪++=⎩(2.2.4)其中()()11k k ik ikkkl a a --=,()()()11,k k k ij ij ik kj a a l a --=- 1,,;1,, 1.i k n j k n =+=++ 重复上述过程1n -次,得到第1n -个导出方程组()()()()()()()()()()()()()()0000011112213311,1111122223322,122233333,111,1,,,.n n n n n n n nn n n nn nn n a x a x a x a x a a x a x a x a a x a x a a x a +++--+⎧++++=⎪⎪+++=⎪⎪++=⎨⎪⎪⎪=⎪⎩(2.2.5)其中()()()()()1111,,1,2,,1;1,,;1,, 1.k k kk k ik ikkkij ijik kjl a a a a l a k n i k n j k n ----==-=-=+=++ (2.2.6)这样,通过消元过程就将方程组(2.1.1)化成了等价的上三角形方程组(2.2.5).2.回代过程回代过程就是求上三角形方程组(2.2.5)的解. 若()10n nna -≠,则从最后一个方程开始,先求出()()11,1,/n n n n n n n x a a --+=,再由第1n -个方程解出1n x -,依此类推可解出221,,,n x x x - . 一般(2.2.7)定义 2.2.1 由式(2.2.2)-(2.2.7)确定的求解线性方程组的算法称为Gauss 消去法(Gaussian elimination method),包括消元(elimination)和回代(backward substitution)两个过程。

数值分析第三章线性方程组解法

数值分析第三章线性方程组解法

数值分析第三章线性方程组解法在数值分析中,线性方程组解法是一个重要的主题。

线性方程组是由一组线性方程组成的方程组,其中未知数的次数只为一次。

线性方程组的解法包括直接解法和迭代解法两种方法。

一、直接解法1.1矩阵消元法矩阵消元法是求解线性方程组的一种常用方法。

这种方法将方程组转化为上三角矩阵,然后通过回代求解得到方程组的解。

1.2LU分解法LU分解法是将系数矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积,然后通过解两个三角方程组求解线性方程组。

这种方法可以减少计算量,提高计算效率。

1.3 Cholesky分解法Cholesky分解法是对称正定矩阵进行分解的一种方法。

它将系数矩阵A分解为一个下三角矩阵L和它的转置的乘积,然后通过解两个三角方程组求解线性方程组。

Cholesky分解法适用于对称正定矩阵的求解,具有较高的精度和稳定性。

二、迭代解法2.1 Jacobi迭代法Jacobi迭代法是一种迭代求解线性方程组的方法。

它通过分解系数矩阵A为一个对角矩阵D和一个余项矩阵R,然后通过迭代更新未知数的值,直至达到一定精度要求为止。

Jacobi迭代法简单易懂,容易实现,但收敛速度较慢。

2.2 Gauss-Seidel迭代法Gauss-Seidel迭代法是一种改进的Jacobi迭代法。

它通过使用新计算出的未知数值代替旧的未知数值,达到加快收敛速度的目的。

Gauss-Seidel迭代法是一种逐步逼近法,每次更新的未知数值都会被用于下一次的计算,因此收敛速度较快。

2.3SOR迭代法SOR迭代法是一种相对于Jacobi和Gauss-Seidel迭代法更加快速的方法。

它引入了一个松弛因子,可以根据迭代的结果动态地调整未知数的值。

SOR迭代法在理论上可以收敛到线性方程组的解,而且收敛速度相对较快。

三、总结线性方程组解法是数值分析中的一个重要内容。

直接解法包括矩阵消元法、LU分解法和Cholesky分解法,可以得到线性方程组的精确解。

数值计算方法第3章解线性方程组的数值解法1

数值计算方法第3章解线性方程组的数值解法1

,i

2 ,3 ,...,
n

a
(1 11
)
A( 1) A ( 2 )
a (1) 11
a (2) 22
...... ......

......

a (2) n2
......
a a
(1) 1n
(2) 2n


a
(2 nn
)

b (1)

b (2)

[
b
( 1
1
)
b (2) 2
a(k) kk
...
a(k) kn
... ... ...
...
...
a(n) nn
b1(1) b2(2)

...
bk(k)
...

bn(n)
21
高斯顺序消去法
也就是对于方程组AX=b系数矩阵做:
ai(jkl1i)k

a(k) ik

a(k) ij
/
a(k) kk
3)顺序消元
31
高斯列主元消去法
第k步
从A ( k ) 的第
k
列
a (k) kk
,a (k) k 1k
,...a
(k) nk
中选取绝对值
最大项,记录所在行,即
|a(k) ikk
|m kina|axi(kk)
|
记 lik
若 l k 交换第k行与l行的所有对应元素,再 进行顺序消元。
32
其中, lii 0, i 1,2,..., n
(1)
10
高斯顺序消元法

线性方程组数值解法LU分解法

此时, L 是下三角阵, U 是单位上三角阵,称之为
Crout 分解.
矩阵分解理论
推论 3 如果 A AT ,则A LDLT
其中,L 是单位下三角阵,D 是对角阵.
推论 4 如果 A 对称,正定,则 A L LT ,
L 是对角元全为正数的下三角矩阵, 称为平方根分解或 Cholesky 分解.
0
0
a (3) n3
...
a
(3 nn
)
高斯消元过程的矩阵表示
以此类推可得
a
(1 11
0
)
a (1) 12
a (2) 22
a (1) 13
a (2) 23
... ...
a a
(1 ) 1n
(2) 2n
L n 1 L n 2 ... L 2 L 1 A
0
...
0
a (3) 33
...
由 a21 u11l21
得
l21
a21 ; u11
由 a31 u11l31
得
l31
a31 u11
k 2时:a22 l21u12 u22
得u22
a22
l2
1u1
;
2
由a23 l21u13 u23 得u23 a23 l21u13;
由a32 l31u12 l32u23
得l3
2
a32
l31u12 u22
k 3时:由a33 l31u13 l32u23 u33
得u33 a33 (l31u13 l32u23)
A的各阶顺序主子式均不为零,即
a11 ... a1k Ak ... ... ...0
ak1 ... akk
(k1,2,..n.)

线性方程组的四种数值解法

线性方程组的四种数值解法(电子科技大学物理电子学院,四川 成都 610054)摘要:本文介绍了四种求解线性方程组的数值解法: 雅克比迭代法、高斯赛德尔迭代法、高斯消去法和改进的平方根法的基本原理和算法流程,通过求解具体方程,对四种求解方法进行了对比。

对于雅克比迭代法和高斯赛德尔迭代法,研究了两种算法对求解同一方程组的迭代效率差异,结果表明高斯赛德尔迭代法达到同样精度所需迭代次数较少。

对于高斯消去法,通过选择列主元的方法提高算法的准确度,计算结果表明高斯消去法计算精确,且运算复杂度也不是很高。

对于改进的平方根法,其运算复杂度低,但对于给定的方程组有着严苛的要求。

关键词:雅克比迭代法;高斯赛德尔迭代法;高斯消去法;改进的平方根法;线性方程组引言线性方程组的求解在日常生活和科研中有着极其重要的应用,但在实际运算中,当矩阵的维数较高时,用初等方法求解的计算复杂度随维数的增长非常快,因此,用数值方法求解线性方程组的重要性便显现出来。

经典的求解线性方程组的方法一般分为两类:直接法和迭代法。

前者例如高斯消去法,改进的平方根法等,后者的例子包括雅克比迭代法,高斯赛德尔迭代法等。

这些方法的计算复杂度在可以接受的范围内,因此被广泛采用。

一般来说,直接法对于阶数比较低的方程组比较有效;而后者对于比较大的方程组更有效。

在实际计算中,几十万甚至几百万个未知数的方程组并不少见。

在这些情况下,迭代法有无可比拟的优势。

另外,使用迭代法可以根据不同的精度要求选择终止时间,因此比较灵活。

在问题特别大的时候,计算机内存可能无法容纳被操作的矩阵,这给直接法带来很大的挑战。

而对于迭代法,则可以将矩阵的某一部分读入内存进行操作,然后再操作另外部分。

本文使用上述四种算法求解对应的方程组,验证各种算法的精确度和计算速度。

1 算法介绍1.1 雅克比迭代法 1.1.1 算法理论设线性方程组(1)b Ax的系数矩阵A 可逆且主对角元素 均不为零,令并将A 分解成(2)从而(1)可写成令其中. (3)以B 1为迭代矩阵的迭代法(公式)(4)称为雅克比(Jacobi)迭代法(公式),用向量的分量来表示,(4)为(5)其中为初始向量.1.1.2 算法描述 1给定迭代初始向量X 0以及误差要求delta 2根据雅克比迭代公式计算出下一组向量3判断X 是否满足误差要求,即||X k+1 – X k || < delta4若误差满足要求,则停止迭代返回结果;若否,则返回第二步进行下一轮迭代1.2 高斯赛德尔迭代法nna ,...,a ,a 2211()nna ,...,a ,a diag D 2211=()D D A A +-=()b x A D Dx +-=11f x B x +=b D f ,A D I B 1111--=-=()()111f x B x k k +=+⎩⎨⎧[],...,,k ,n ,...,i x a ba xnij j )k (j j i iii)k (i21021111==∑-=≠=+()()()()()Tn x ,...x ,x x 002010=1.2.1 算法理论由雅克比迭代公式可知,在迭代的每一步计算过程中是用的全部分量来计算的所有分量,显然在计算第i 个分量时,已经计算出的最新分量没有被利用,从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第次近似的分量加以利用,就得到所谓解方程组的高斯—塞德尔(Gauss-Seidel )迭代法.把矩阵A 分解成(6)其中,分别为的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成即其中(7)以为迭代矩阵构成的迭代法(公式)(8)称为高斯—塞德尔迭代法(公式),用变量表示的形式为(9)1.2.2 算法描述 1给定迭代初始向量X 0以及误差要求delta2根据高斯赛德尔迭代公式计算出下一组向量()k x ()1+k x ()1+k ix ()()1111+-+k i k x ,...,x 1+k()1+k x()1+k jx U L D A --=()nna ,...,a ,a diag D 2211=U ,L --A ()b Ux x L D +=-22f x B x +=()()b L D f ,U L D B 1212---=-=2B ()()221f x B x k k +=+⎩⎨⎧[],...,,k ,n ,,i x a x a b a xi j n i j )k (j ij )k (j ij i ii)k (i21021111111==∑∑--=-=+=++3判断X是否满足误差要求,即||X k+1– X k|| < delta4若误差满足要求,则停止迭代返回结果;若否,则返回第二步进行下一轮迭代1.3 高斯消去法1.3.1 算法理论下面三种变换称为初等行变换:1.对调两行;2.以数k≠0乘某一行中的所有元素;3.把某一行所有元素的k倍加到另一行对应的元素上去。

线性代数方程组的数值解法_百度文库

线性代数方程组的数值解法【实验目的】1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2. 通过实例学习用线性代数方程组解决简化的实际问题。

【实验内容】【题目1】通过求解线性方程组A1x=b1和A2x=b2,理解条件数的意义和方程组的性态对解的影响。

其中A1是n阶范德蒙矩阵,即⎡1x0⎢1x1⎢A1=⎢⎢⎢⎣1xn-12x0x12 2xn-1n-1⎤ x0⎥ x1n-1⎥1,...,n-1 ,xk=1+0.1k,k=0,⎥ n-1⎥ xn-1⎥⎦A2是n阶希尔伯特矩阵,b1,b2分别是A1,A2的行和。

(1)编程构造A1(A2可直接用命令产生)和b1,b2;你能预先知道方程组A1x=和A2x=。

b2的解吗?令n=5,用左除命令求解(用预先知道的解可检验程序)b1(2)令n=5,7,9,…,计算A1,A2的条件数。

为观察它们是否病态,做以下试验:b1,b2不变,A1和A2的元素A1(n,n),A2(n,n)分别加扰动ε后求解;A1和A2不变,b1,b2的分量b1(n),分析A和b的微小扰动对解的影响。

b2(n)分别加扰动ε求解。

ε取10-1010,-8,10-6。

(3)经扰动得到的解记做x~,计算误差-x~x,与用条件数估计的误差相比较。

1.1构造A1,A2和b1,b2首先令n=5,构造出A1,A2和b1,b2。

首先运行以下程序,输出A1。

运行以下程序对A1,A2求行和:由于b1,b2分别是A1,A2的行和,所以可以预知x1=运行下列程序,用左除命令对b1,b2进行求解:得到以下结果: T。

x2=(1,1, ,1)1.2 计算条件数并观察是否为病态1.不加扰动,计算条件数。

运行以下程序:由此可知,A1,A2的条件数分别是3.574∗10, 4,766∗10。

2.b1,b2不变,A1(n,n),A2(n,n)分别加扰动(1)n=5时设x11,x12,x13分别为A1添加扰动10−10,10−8,10−6后的解。

_第六章_线性方程组的数值解法迭代法


b 1
a 11
b2
f
a 22 bn
a nn
x(k1) B0x(k)f
--------(5)
第四节 解线性方程组的迭代法
令:
0 0 0
L
a 21
0
0 A的下三角部分矩阵
a n1 a n 2 0
0
U
0
a12 0
a1n a2n
A的上三角部分矩阵
第三节 向量范数和矩阵范数
(2)范数的另一个简单例子是二维欧氏空间的长度
0M x2 y2
欧氏范数也满足三个条件:
(勾股定理)
设x = (x1, x2) ① x 0 x >0 ② ax = a x a为常数 ③ x+ y ≤ x + y 前两个条件显然,第三个条件在几何上解释为三角形一边的长度不大于其它 两边长度之和。因此,称之三角不等式。
满足:
① A0,且A0,当且A 仅 0当
,若 A
正定
② A A,为任意实数
奇次
③ ABAB,A和 B为任意 n阶两 方个 三阵 角不等
则称 A 为矩阵A的范数。
第三节 向量范数和矩阵范数
2、矩阵范数与向量范数的相容性 对于任意的n维向量x,都有:
Ax A x
这一性质称为矩阵范数与向量范数的相容性。
n
A
max
1in
j1
aij
A的每行绝对值之和的最大值, 又称A的行范数
第三节 向量范数和矩阵范数
(3)矩阵的2范数
2范数 ||A|2 | : (AT A )
(AAT) ?
矩阵的谱半径:
矩阵B的诸特征值为: i(i1,2, ,n)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档