解线性方程组的直接方法
- 直接方法:假设计算过程中不产生舍入误差,经过有限次运算可求得方程组的精确解的方法
- 迭代法:从某个近似值出发,通过构造一个无穷序列去逼近精确解的方法。(一般有限步骤内得不到精确解)
以下介绍几种常用的解线性方程组的直接方法及有关问题。均假设方程组的系数矩阵非奇异,方程组存在唯一解
- 解线性方程组的直接方法的基本思想是将方程组(2-1)变形为等价的三角形方程组,然后求解
(一)消去法
(1)Gauss消去法
- 将方程组逐列逐行消去变量,转化为等价的上三角形方程组——消元
- 按着方程组相反顺序求解上三角形方程组,得原方程组的解——回代过程
缺点: - a k k ( k ) 均 不 为 零 ( 否 则 G a u s s 消 去 法 不 能 进 行 ) a_{kk}^{(k)}均不为零(否则Gauss消去法不能进行) akk(k)均不为零(否则Gauss消去法不能进行)
-
a
k
k
(
k
)
不
为
零
但
其
绝
对
值
很
小
时
用
作
除
数
,
会
导
致
舍
入
误
差
的
严
重
扩
大
a_{kk}^{(k)}不为零但其绝对值很小时用作除数,会导致舍入误差的严重扩大
akk(k)不为零但其绝对值很小时用作除数,会导致舍入误差的严重扩大
消元过程
回代过程
按变量的逆序逐步回代得方程组(2-3)的解
Gauss消去法的计算量
因为计算机做乘除运算所需时间远大于加减运算,所以这里只考虑乘除运算
消元过程中:
回代过程中:
Gauss消去法的乘除总运算量为:
N
=
n
3
3
+
n
2
−
n
3
N=\frac{n^3}{3}+n^2-\frac{n}{3}
N=3n3+n2−3n
(2)主元素消去法
针对于Gauss消去法,为了在计算过程中一直舍入误差的增长,应尽量避免小主元的出现。基于这种想法导出了主元素消去法
1.列主元素法
在每次消元前,在要消去未知数的系数中找到绝对值最大的系数作为主元,通过方程组对换将其换到对角线上,然后进行消元
2.全主元素法
要记录每一列代表的是哪一个变量
列主元素法具有良好的数值稳定性,且计算量远低于全主元素法,所以列主元素法是求解中小型稠密线性方程组的最好方法
(二)直接三角分解法
(1)Gauss消去法的矩阵形式
如果用增广矩阵[
A
,
b
A,b
A,b]表示线性方程组(2-1),Gauss消去法的消元过程可以通过一串初等矩阵左乘增广矩阵表示
限制条件与Gauss消去法一样
因为
L
k
L_k
Lk均为非奇异阵,故它们的逆矩阵存在,容易求出
求解
A
x
=
b
Ax=b
Ax=b等价于求解两个三角形方程组
L
y
=
b
Ly=b
Ly=b和
U
x
=
y
Ux=y
Ux=y
(2)矩阵的直接三角分解
证明方法:反证法
- 如何对 A A A进行 L U LU LU分解?
没有太大价值
不太好用
经常用(尤其是手写的时候)
(3)直接三角分解法
和Gauss消去法具有相同的计算量
适用于求解多个系数矩阵相同而右端项不同的线性方程组的解
(4)列主元素的三角分解法
看书,没细讲,但是使用matlab的时候用
知道就可以了
MATLAB使用
L
U
LU
LU分解
(三)特殊矩阵的三角分解法
(1)解三对角方程组的追赶法
满足对角占优条件则唯一可分解:
在matlab中直接代数上述公式进行计算,但是这个公式不需要背,只需要理解记忆
(2)平方根法(Cholesky分解法)
对称矩阵:
A
T
=
A
A^T=A
AT=A
(1)正定矩阵的定义
(2)(3)充要条件
(3)霍尔维斯定理:判断是否是正定矩阵,用顺序主子式
LU分解是唯一的
依次求第一列,第二列……
每列自上而下计算
只有对称正定阵才能进行Cholesky分解,使用平方根法求解
(3)改进的平方根法( L D L T LDL^T LDLT法)
定理:设
A
A
A是对称正定矩阵,则存在单位下三角矩阵,对角矩阵
D
D
D,使得
A
=
L
D
L
T
A=LDL^T
A=LDLT,其中
D
D
D的元素为整数(合同性质)
事实上,上面的定理只是需要对称的条件
那么
对称矩阵
A
A
A,若各界顺序主子式不为零,又
A
=
L
D
L
T
A=LDL^T
A=LDLT,但是不能保证
D
D
D的对角元大于零
若线性方程组 A x = b Ax=b Ax=b的系数矩阵为严格对角占优或对称矩阵,则高斯消元法可以进行到底且数值是稳定的
MATLAB函数
(插入)误差分析
(1)向量和矩阵的范数
(一)向量的范数
(二)矩阵的范数
又三种常用的向量范数,自然就诱导出三种常用的矩阵范数
谱范数:与特征值相关。
(2——范数(谱范数))
A
T
A
(
A
是
非
奇
异
阵
,
那
么
A^TA(A是非奇异阵,那么
ATA(A是非奇异阵,那么A^TA
一
定
是
正
定
阵
)
一定是正定阵)
一定是正定阵)的最大特征值开根号
A为对称阵,那么
A
T
A
A^TA
ATA的最大特征值就是A的最大特征值的平方
F范数就是定义出来的,不是诱导出来的,使用很少。
诱导出来的矩阵范数与相应的向量范数一定是相容的
推导过程无需掌握
(三)方程组的状态与条件数
实际上并没有一个绝对的界限,表明的只是一种程度
可逆的矩阵特征值非零
逆矩阵的特征值为原矩阵的倒数
典型病态矩阵:
MATLAB使用
(四)误差
只有在非病态的情况下才是正确的
当A非病态时,残量的大小可刻画近似解的准确程度,当A并太严重时则不然
(4)超定线性方程组的最小二乘解
方程个数>未知数个数