- 矩阵的基本性质
1.逆: n×n 矩阵 A 的逆A−1 (如果存在)定义为满足 AA−1=In=A−1A 的 n×n 的矩阵。
若矩阵
A
有逆,则称
2.线性相关:若存在不全为0的相关系数
列秩:非零
m×n
矩阵
A
的列秩是
行秩:矩阵
A
的行秩是
秩:任意矩阵的行秩等于列秩,简称为秩。
3.逆和秩的关系
一个方阵是满秩的,当且仅当该方阵是非奇异的。
- 求解线性方程组
1.LUP分解综述
找出三个 n×n 矩阵 L、U和P ,满足
PA=LU
其中, L 是一个单位下三角矩阵,U 是一个上三角矩阵, P 是一个置换矩阵(排列矩阵)。
对线性方程组
定义
y=Ux
,则线性方程组最终化为
Ly=Pb
。
通过使用“正向替换”可以求解
y
;在对
2.计算一个LU分解
我们采用高斯消元法创建LU分解:
首先从其他方程中减去第一个方程的倍数,以把那些方程中的第一个变量消去。然后,用第三个及以后的方程中减去第二个方程的倍数,以把这些方程的第一个和第二个变量都消去。以此类推,直到系统变成一个上三角矩阵形式。那么最终得到的矩阵就是U,由消去变量所用的行的乘数组成矩阵L。
在计算机中可以采用递归算法实现该策略:
①若n=1,则
②若n>1,把A拆成4部分
利用矩阵代数,可以把A分解为:
我们把 A′−vωT/a11 称为矩阵A对于 a11 的舒尔补。
③假设我们可以找到舒尔补的一个LU分解,那么
因此,可以通过舒尔补的LU分解构造A的LU分解。
通过把”尾递归“过程优化为循环迭代可以得到一个计算LU分解的算法:
LU-DECOMPOSITION(A)
1 n=A.rows
2 let L and U be new n×n matrix
3 initialize U with 0s below the diagonal
4 initialize L with 1s on the diagonal and 0s above the diagonal
5 for k=1 to n
6 ukk=akk
7 for i=k+1 to n
8 lik=aik/ukk
9 uki=aki
10 for i=k+1 to n
11 for j=k+1 to n
12 aij=aij−likukj
13 return L and U
3.计算一个LUP分解
在LU分解的过程中,如果
a11=0
或者舒尔补的左上角元素为0则会在本次或者下一次计算中出现除0的情况。为了避免在计算LU分解的过程中该情况的出现,我们在计算L和U时先把当前计算的方阵的第一列的元素中绝对值最大的元素放在方阵的左上角,也就是先对方阵进行一次行变换。
假设第1列中绝对值最大的元素为
ak1
,那么我们需要把第1行与第k行互换,这等价用一个置换矩阵Q乘以A的左边。
现在可以执行与LU分解相同的线性代数运算,且现在能保证不会除0:
假设我们找到了舒尔补的一个LUP分解,即包含单位下三角矩阵 L′ ,上三角矩阵 U′ 和置换矩阵 P′ ,满足:
定义矩阵A的置换矩阵为
计算矩阵A的LUP分解:
于LU分解类似,我们也用循环迭代代替递归,算法如下:
LUP-DECOMPOSITON(A)
1 n=A.rows
2 let π[1..n] be a new array
3 for i=1 to n
4 π[i]=i
5 for k=1 to n
6 p=0
7 for i=k to n
8 if |aik|>p
9 p= |aik|
10 k′=i
11 if p==0
12 error “singular matrix”
13 exchange π[k] with π[k′]
14 for i=1 to n
15 exchange aki with ak′i
16 for i=k+1 to n
17 aik=aik/akk
18 for j=k+1 to n
19 aij=aij−aikakj