python与线性代数 矩阵

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是可逆的则

AA1=I A A − 1 = I

A1A=I A − 1 A = I
不可可逆矩阵也称为奇异矩阵(singular matrix),而可逆矩阵称为非奇异矩阵(nonsingular matrix)

a. 设A= [acbd] [ a b c d ] ,若 ad!=bc a d ! = b c ,则A可逆,且 A1 A − 1 = 1adbc[acbd] 1 a d − b c [ a − b − c d ]

detA=adbc d e t A = a d − b c 称为A的行列式

b. 若A是可逆 nn n ∗ n 矩阵,则对每一 Rn R n 中的b,方程 Ax=b A x = b 有唯一解 x=A1b x = A − 1 b

a. (A1)1=A ( A − 1 ) − 1 = A
b. 若A和B都是n*n可逆矩阵,AB也可逆,且其逆是A和B的逆矩阵按相反顺序的乘积 (AB)1=B1A1 ( A B ) − 1 = B − 1 A − 1
c. 若A可逆,则 AT A T 也可逆,且其逆是 A1 A − 1 的转置,即 (AT)1=(A1)T ( A T ) − 1 = ( A − 1 ) T

a.n*n矩阵A是可逆的,当且仅当A行等价于 In I n ,这时,把A变为 In I n 的一系列初等变换同时把 In I n 变成 A1 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 是可逆矩阵

  1. 分块矩阵(partitioned matrices)
  2. 矩阵的因式分解(matrix factorizations)

  3. Rn R n 的子空间

  4. 维数与秩(dimension and rank)

python应用
在机器学习中KNN算法,要计算训练集A和测试集B中所有向量的欧式距离.使用二重嵌套循环效率会非常低,而用矩阵计算则会很快.

欧式距离OD = (x1x2)2+(y1y2)2 ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 = x21+x222x1x2+y21+y222y1y2 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 = (x1x2)2+(y1y2)2 ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 = x21+x22+y21+y222x1x22y1y2 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

你可能感兴趣的:(数学理论知识)