矩阵运算

  • 矩阵的基本性质
    1. n×n 矩阵 A 的逆A1(如果存在)定义为满足 AA1=In=A1A n×n 的矩阵。

若矩阵 A 有逆,则称A为可逆矩阵或者非奇异矩阵;否则称 A 为不可逆矩阵或者奇异矩阵。
2.线性相关:若存在不全为0的相关系数c1,c2,...,cn使得 c1x1+c2x2+...+cnxn=0 ,则称向量 x1,x2,...xn 是线性相关的,否则为线性无关的。
列秩:非零 m×n 矩阵 A 的列秩是A的最大线性无关列集合的大小。
行秩:矩阵 A 的行秩是A的最大线性无关行集合的大小。
:任意矩阵的行秩等于列秩,简称为秩。
3.逆和秩的关系
一个方阵是满秩的,当且仅当该方阵是非奇异的。

  • 求解线性方程组
    1.LUP分解综述
    找出三个 n×n 矩阵 LUP ,满足
    PA=LU

    其中, L 是一个单位下三角矩阵,U是一个上三角矩阵, P 是一个置换矩阵(排列矩阵)。

对线性方程组Ax=b两边同时乘以 P ,得到等价的方程PAx=Pb,代入得 LUx=Pb

定义 y=Ux ,则线性方程组最终化为 Ly=Pb
通过使用“正向替换”可以求解 y ;在对y=Ux使用“反向替代”可以求解 x
2.计算一个LU分解
我们采用高斯消元法创建LU分解:
首先从其他方程中减去第一个方程的倍数,以把那些方程中的第一个变量消去。然后,用第三个及以后的方程中减去第二个方程的倍数,以把这些方程的第一个和第二个变量都消去。以此类推,直到系统变成一个上三角矩阵形式。那么最终得到的矩阵就是U,由消去变量所用的行的乘数组成矩阵L。
在计算机中可以采用递归算法实现该策略:
①若n=1,则L=I1,U=A
②若n>1,把A拆成4部分

A=a11a21an1a12a22an2a1na2na=[a11vωTA]

利用矩阵代数,可以把A分解为:
A=[a11vωTA]=[1v/a110In1][a110ωTAvωT/a11]

我们把 AvωT/a11 称为矩阵A对于 a11 的舒尔补。
③假设我们可以找到舒尔补的一个LU分解,那么
AvωT/a11=LU

A=[1v/a110In1][a110ωTAvωT/a11]=[1v/a110In1][a110ωTLU]=[1v/a110L][a110ωTU]=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=aijlikukj
13 return L and U

3.计算一个LUP分解
在LU分解的过程中,如果 a11=0 或者舒尔补的左上角元素为0则会在本次或者下一次计算中出现除0的情况。为了避免在计算LU分解的过程中该情况的出现,我们在计算L和U时先把当前计算的方阵的第一列的元素中绝对值最大的元素放在方阵的左上角,也就是先对方阵进行一次行变换。
假设第1列中绝对值最大的元素为 ak1 ,那么我们需要把第1行与第k行互换,这等价用一个置换矩阵Q乘以A的左边。

QA=[ak1vωTA]

现在可以执行与LU分解相同的线性代数运算,且现在能保证不会除0:

QA=[ak1vωTA]=[1v/ak10In1][ak10ωTAvωT/ak1]

假设我们找到了舒尔补的一个LUP分解,即包含单位下三角矩阵 L ,上三角矩阵 U 和置换矩阵 P ,满足:
P(AvωT/ak1)=LU

定义矩阵A的置换矩阵为
P=[100P]Q

计算矩阵A的LUP分解:
PA=[100P]QA=[100P][1v/ak10In1][ak10ωTAvωT/ak1]=[1Pv/ak10P][ak10ωTAvωT/ak1]=[1Pv/ak10In1][ak10ωTP(AvωT/ak1)]=[1Pv/ak10In1][ak10ωTLU]=[1Pv/ak10L][ak10ωTU]=LU

于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 aki
16   for i=k+1 to n
17      aik=aik/akk
18     for j=k+1 to n
19        aij=aijaikakj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值