补充:接上一篇LU分解
1.高斯消元的一些问题:在之前高斯消元得到LU分解时,必须假设没有较换行的操作,即在消元过程中没有主元
的现象。但是实际情况有如下定理
定理:
非奇异,若对A高斯消元过程中主元
,则该列下方至少有一个元素不为0,即
2.部分主元消去法推导(初等矩阵和消去矩阵的关系)
定理(初等矩阵性质):P为初等矩阵(由I经过一次初等行变换得到)
(1)
(2)
(3)PM:对M进行行变换;MP:对M进行列变换
在高斯消元进行到第k行,第k列时,要把第k列最大的元素选为主元,因此高斯消元过程表示为
- 其中P为置换阵/排列阵,且正交
,可以用一列数组储存;代表第i行1所在的列号
- 可以证明
也为消去矩阵
3.部分主元高斯消去法
输入:A,置换阵的初值
输出:排列好的置换阵
,LU储存在A中
for k = 1 to n - 1
确定|a_sk| = max{a_ik}
交换A的第k行和第s行
较换p[k], p[s]
for i = k + 1 to n
a_ik = a_ik / a_kk //计算L的元素,储存在A中
for j = k + 1 to n
a_ij = a_ij - aik * a_kj
end
end
end
注:
(1)用得到的PA = LU分解解方程:
;可以用LU分解基本相同的算法进行计算
(2)选取最大主元除了防止
的情况,还可以减少误差
4.对称正定矩阵Cholesky分解
(1)对称矩阵A的LU分解
A = LU,且
,D为对角矩阵,
为单位矩阵
,根据LU分解的唯一性,
(2)cholesky分解(A为对称正定矩阵)
可知
则
cholesky分解定理:A为是对称正定矩阵,存在非奇异下三角矩阵L,使
,其中L的对角线元素均大于0.
5.cholesky分解计算:
推导:
(1)计算
:
(2)计算
:
(3)计算
:
(4)计算
:
算法:对称正定矩阵Cholesky分解算法
for j = 1 to n
// 该循环计算l_jj
for k to j - 1
a_jj = a_jj - a_jk ^ 2
end
a_jj = sqrt(a_jj)
// 该循环计算l_ij i > j
for i = j + 1 to n
for k = 1 to j - 1
a_ij = a_ij - a_ik * a_jk
end
a_ij = a_ij / a_jj
end
end