1.标量相乘
每个元素与标量相乘
设
A,B,C
A
,
B
,
C
是相同维数的矩阵,
r
r
与为数,则由
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
行第列的元素是
A
A
的第行与
B
B
的第列对饮钙元素乘积之和.
只要注意矩阵左乘和右乘不相等即可.
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
是可逆矩阵
- 分块矩阵(partitioned matrices)
矩阵的因式分解(matrix factorizations)
Rn R n 的子空间
- 维数与秩(dimension and rank)
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.youkuaiyun.com/Jiajing_Guo/article/details/62217564