1.标量相乘
每个元素与标量相乘
设 A,B,C A , B , C 是相同维数的矩阵, r r 与 s s 为数,则由
a. A+B A + B = B+A B + A
b. (A+B)+C=A+(B+C) ( A + B ) + C = A + ( B + C )
c. (A+0)=A ( A + 0 ) = A
d. r(A+B)=rA+rB r ( A + B ) = r A + r B
e. (r+s)A=rA+rB ( r + s ) A = r A + r B
f. r(sA)=(rs)A r ( s A ) = ( r s ) A
2.矩阵相乘
若乘积 AB A B 有定义, AB A B 的第 i i 行第 j j 列的元素是 A A 的第 i i 行与 B B 的第 j j 列对饮钙元素乘积之和.
只要注意矩阵左乘和右乘不相等即可.
a. A(BC)=(AB)C A ( B C ) = ( A B ) C
b. A(B+C)=AB+AC A ( B + C ) = A B + A C
c. (B+C)A=BA+CA ( B + C ) A = B A + C A
d. r(AB)=(rA)B=A(rB) r ( A B ) = ( r A ) B = A ( r B )
e. ImA=A=AIN I m A = A = A I N
3.矩阵的转置(transpose)
AT A T 行与列交换
a. (AT)T=A ( A T ) T = A
b. (A+B)T=AT+BT ( A + B ) T = A T + B T
c. (rA)=rAT ( r A ) = r A T
d. (AB)T=BTAT ( A B ) T = B T A T
4.矩阵的逆(inverse)
一个$n*n矩阵A是可逆的则
AA−1=I A A − 1 = I
A−1A=I A − 1 A = I
不可可逆矩阵也称为奇异矩阵(singular matrix),而可逆矩阵称为非奇异矩阵(nonsingular matrix)
a. 设A= [acbd] [ a b c d ] ,若 ad!=bc a d ! = b c ,则A可逆,且 A−1 A − 1 = 1ad−bc[a−c−bd] 1 a d − b c [ a − b − c d ]
detA=ad−bc d e t A = a d − b c 称为A的行列式
b. 若A是可逆 n∗n n ∗ n 矩阵,则对每一 Rn R n 中的b,方程 Ax=b A x = b 有唯一解 x=A−1b x = A − 1 b
a. (A−1)−1=A ( A − 1 ) − 1 = A
b. 若A和B都是n*n可逆矩阵,AB也可逆,且其逆是A和B的逆矩阵按相反顺序的乘积 (AB)−1=B−1A−1 ( A B ) − 1 = B − 1 A − 1
c. 若A可逆,则 AT A T 也可逆,且其逆是 A−1 A − 1 的转置,即 (AT)−1=(A−1)T ( A T ) − 1 = ( A − 1 ) T
a.n*n矩阵A是可逆的,当且仅当A行等价于 In I n ,这时,把A变为 In I n 的一系列初等变换同时把 In I n 变成 A−1 A − 1
可逆矩阵定理
a. A是可逆矩阵
b. A是n*n单位矩阵
c. A有n个主元位置
d. Ax=0 A x = 0 仅有平凡解
e.A的个列线性无关
f.线性变换 x−>Ax x − > A x 是一对一的
g. 对 Rn R n 中任意b, Ax=b A x = b 至少有一个解
h. A的各列生成 Rn R n
i. 线性变换 x−>Ax x − > A x 把 Rn R n 映射到 Rn R n 上
j. 存在n*n矩阵C是的CA = I
k. 存在n*n矩阵D使得AD=I
l. AT A T 是可逆矩阵
矩阵的因式分解(matrix factorizations)
Rn R n 的子空间
python应用
在机器学习中KNN算法,要计算训练集A和测试集B中所有向量的欧式距离.使用二重嵌套循环效率会非常低,而用矩阵计算则会很快.
欧式距离OD = (x1−x2)2+(y1−y2)2−−−−−−−−−−−−−−−−−−√ ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 = x21+x22−2x1x2+y21+y22−2y1y2−−−−−−−−−−−−−−−−−−−−−−−−−−−√ x 1 2 + x 2 2 − 2 x 1 x 2 + y 1 2 + y 2 2 − 2 y 1 y 2
假设训练集A中有两个点分别是 (a11,a12)和(a21,a22) ( a 11 , a 12 ) 和 ( a 21 , a 22 ) ,测试集B中有两个点分别是 (b11,b12),(b21,b22),(b31,b32) ( b 11 , b 12 ) , ( b 21 , b 22 ) , ( b 31 , b 32 )
第一种方法:二重嵌套循环
第二种方法:矩阵
首先,将A和B转换为矩阵
A= [a11a21a12a22] [ a 11 a 12 a 21 a 22 ] B= ⎡⎣⎢b11b21b31b12b22b32⎤⎦⎥ [ b 11 b 12 b 21 b 22 b 31 b 32 ]
最后得到的结果应该是一个2*3的矩阵,第i行第j列元素对应的A矩阵中第i个点和b矩阵中第j个点
欧式距离可以写成
欧式距离OD = (x1−x2)2+(y1−y2)2−−−−−−−−−−−−−−−−−−√ ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 = x21+x22+y21+y22−2x1x2−2y1y2−−−−−−−−−−−−−−−−−−−−−−−−−−−√ x 1 2 + x 2 2 + y 1 2 + y 2 2 − 2 x 1 x 2 − 2 y 1 y 2
1.首先计算 x21+x22 x 1 2 + x 2 2
As A s = [a211+a212a221+a222] [ a 11 2 + a 12 2 a 21 2 + a 22 2 ]
同理计算 y21+y22 y 1 2 + y 2 2
⎡⎣⎢⎢b211+b212b221+b222b231+b232⎤⎦⎥⎥ [ b 11 2 + b 12 2 b 21 2 + b 22 2 b 31 2 + b 32 2 ]
2.再求 x21+x22+y21+y22 x 1 2 + x 2 2 + y 1 2 + y 2 2
这里牵涉到矩阵的广播(broadcast)
Asb A s b = [a211+a212a221+a222a211+a212a221+a222a211+a212a221+a222] [ a 11 2 + a 12 2 a 11 2 + a 12 2 a 11 2 + a 12 2 a 21 2 + a 22 2 a 21 2 + a 22 2 a 21 2 + a 22 2 ]
这里使用b的转置来求
先求B的转置
[b211+b212b221+b222b231+b232] [ b 11 2 + b 12 2 b 21 2 + b 22 2 b 31 2 + b 32 2 ]
在求 Bs B s 转置之后的广播
Bsb B s b = [b211+b212b211+b212b221+b222b221+b222b231+b232b231+b232] [ b 11 2 + b 12 2 b 21 2 + b 22 2 b 31 2 + b 32 2 b 11 2 + b 12 2 b 21 2 + b 22 2 b 31 2 + b 32 2 ]
然后将 AsbBsb A s b B s b 相加
Asb+Bsb A s b + B s b = [a211+a212+b211+b212a221+a222+b211+b212a211+a212+b221+b222a221+a222+b221+b222a211+a212+b231+b232a221+a222+b231+b232] [ a 11 2 + a 12 2 + b 11 2 + b 12 2 a 11 2 + a 12 2 + b 21 2 + b 22 2 a 11 2 + a 12 2 + b 31 2 + b 32 2 a 21 2 + a 22 2 + b 11 2 + b 12 2 a 21 2 + a 22 2 + b 21 2 + b 22 2 a 21 2 + a 22 2 + b 31 2 + b 32 2 ]
3.求 2x1x2+2y1y2 2 x 1 x 2 + 2 y 1 y 2
ABT A B T = [b211+b212b221+b222b231+b232] [ b 11 2 + b 12 2 b 21 2 + b 22 2 b 31 2 + b 32 2 ]
参考文献:
http://blog.csdn.net/Jiajing_Guo/article/details/62217564