矩阵世界中的概念与理解
目录
线性空间(或向量空间)和子线性空间。
我们以三维空间T为例,它的 x , y , z x,y,z x,y,z轴坐标分别从负无穷到正无穷。根据以往的经验很显然,它是一个封闭的空间,而且满足线性空间的特点,所以它肯定是一个线性空间 T T T。现在我去掉它的一个维度,比如让 z z z=常数,这时候我们得到一个二维空间 S S S,空间 S S S实际上只包含 x , y x,y x,y两个维度,根据以往的经验,很容易知道它也是一个线性空间,因此 S S S也是 T T T的子线性空间。同理我们再去掉一个维度,让空间变成一维空间。这些也是成立的。
向量
在几乎所有的几何问题中,向量(有时也称矢量)是一个基本点。向量的定义包含方向和一个数(长度)。在二维空间中,一个向量可以用一对x和y来表示。例如由点(1,6)到(5,1)的向量可以用(4,-5)来表示。同时需要特别注意,这并不代表向量定义了起点和终点。向量仅仅表示方向和长度。
向量这个东西客观存在,但是要把它表示出来,就要把它放在一个坐标系中去度量它,然后把度量的结果(向量在各个坐标轴上的投影值)按一定顺序列在一起,就成了我们平时所见的向量表示形式。你选择的坐标系(基)不同,得出来的向量的表示就不同。向量还是那个向量,选择的坐标系不同,其表示方式就不同。因此,按道理来说,每写出一个向量的表示,都应该声明一下这个表示是在哪个坐标系中度量出来的。表示的方式,就是
M
a
Ma
Ma,也就是说,有一个向量,在M矩阵表示的坐标系中度量出来的结果为a。我们平时说一个向量是[2 3 5 7]T,隐含着是说,这个向量在
I
I
I 坐标系中的度量结果是[2 3 5 7]T,因此,这个形式反而是一种简化了的特殊情况。
同时,矩阵可以是一组向量组成的,向量是特殊的矩阵.
基
基——这一部分要在矩阵前讲述。
如果一组向量是彼此线性无关的话,那么它们就可以成为度量这个线性空间的一组基,从而事实上成为一个坐标系体系,其中每一个向量都躺在一根坐标轴上,并且成为那根坐标轴上的基本度量单位。即基向量相当于每个维度的单位向量。
矩阵
矩阵是由
n
×
m
n×m
n×m个数aij(复数或实数)排列成的m行n列的阵列,称之为
m
×
n
m×n
m×n矩阵
如 a=
[
1
2
3
4
5
6
]
\begin{bmatrix} 1&2&3\\ 4&5&6\end{bmatrix}
[142536],a为2x3的矩阵
矩阵:本质是运动的描述(正确地来说”变换的描述“),描述该空间中的任何一个运动(变换),这与矩阵是构成的坐标系的说法不冲突,所谓变换可以理解成有一个对象,在以两个不同坐标系(基)间的转化。
也就是
“
对
象
的
变
换
等
价
于
坐
标
系
的
变
换
”
\color{red}“对象的变换等价于坐标系的变换”
“对象的变换等价于坐标系的变换”
比如说:
1.矩阵与向量相乘,就是实施运动(变换:包括伸缩、旋转、反转etc.)的过程。
2.再一次的,矩阵间的乘法变成了运动的施加。只不过,被施加运动的不再是向量,而是另一个坐标系:对坐标系施加变换的方法,就是让表示那个坐标系的矩阵与表示那个变化的矩阵相乘。
矩阵
M
×
N
M×N
M×N,一方面表明坐标系
N
N
N在运动
M
M
M下的变换结果,另一方面,把
M
M
M当成
N
N
N的前缀,当成
N
N
N的环境描述,那么就是说:在
M
M
M坐标系度量下,有另一个坐标系
N
N
N。这个坐标系
N
N
N如果放在
I
I
I坐标系中度量,其结果为坐标系
M
×
N
M×N
M×N
关于矩阵与向量相乘,在此举一个例子,比如把点(1, 1)变到点(2, 3)去,你可以有两种做法。第一,坐标系不动,点动,把(1, 1)点挪到(2, 3)去。
第二,点不动,变坐标系,让x轴的度量(单位向量)变成原来的1/2,让y轴的度量(单位向量)变成原先的1/3,这样点还是那个点,可是点的坐标就变成(2, 3)了,方式不同,结果一样。
以下是两种理解:
第一个方式,就是把矩阵看成是运动描述,矩阵与向量相乘就是使向量(点)运动的过程。在这个方式下, M a = b Ma = b Ma=b 的意思是:“向量a经过矩阵M所描述的变换,变成了向量b。”
第二个方式,矩阵 M M M描述了一个坐标系,姑且也称之为 M M M。那么: M a = b Ma = b Ma=b 意思是:
“有一个向量,它在坐标系M的度量下得到的度量结果向量为a,那么它在坐标系 I I I(单位矩阵)的度量下,这个向量的度量结果是b。”
上 述 两 种 理 解 方 式 , 都 是 正 确 的 \color{black}上述两种理解方式,都是正确的 上述两种理解方式,都是正确的
关于 M a = b Ma=b Ma=b的理解:
在M为坐标系的意义下,如果把M放在一个向量a的前面,形成Ma的样式,我们可以认为这是对向量a的一个环境声明。它相当于是说:“这里有一个向量,它在坐标系M中度量,得到的度量结果可以表达为a。可是它在别的坐标系里度量的话,就会得到不同的结果。为了明确,我把M放在前面,让你明白,这是该向量在坐标系M中度量的结果。”
那么我们再看孤零零的向量b,它其实不是b,它是: I b Ib Ib 也就是说:“在单位坐标系,也就是我们通常说的直角坐标系 I I I中,有一个向量,度量的结果是b。”
而 M a = I b Ma = Ib Ma=Ib的意思就是说:“在M坐标系里量出来的向量a,跟在I坐标系里量出来的向量b,其实根本就是一个向量啊!”注 意 到 \color{red}注意到 注意到, M M M矩阵表示出来的那个坐标系,由一组基组成,而那组基也是由向量组成的,同样存在这组向量是在哪个坐标系下度量而成的问题。也就是说,表述一个矩阵的一般方法,也应该要指明其所处的基准坐标系。所谓 M M M(其实是 I M IM IM),也就是说, M M M中那组基的度量是在 I I I 坐标系中得出的。
从这个视角来看,矩阵 M 、 N M、N M、N既是指一组坐标系,同时也指一组变换,又是坐标系,又是变换, M × N M×N M×N也不是什么矩阵乘法了,而是声明了一个在 M M M坐标系中量出的另一个坐标系 N N N,其中 M M M本身是在 I I I坐标系中度量出来的。
矩阵的乘法——线性变换
我们已经知道,原来矩阵A=
[
a
11
a
12
a
21
a
22
]
\begin{bmatrix} a11&a12\\ a21&a22\end{bmatrix}
[a11a21a12a22]的作用就是对向量的线性变换,而且更具体地讲,是对原空间的基底的变换。如果原空间的基底是正交单位矩阵
I
I
I,那么变换后的新的基底应该就相当于用A对旧的基底进行变换(缩放和旋转),并且新的基底(
,
)其中
代表矩阵的列向量。
矩阵乘的意义,其实就是将一个向量,经过某个函数(矩阵)之后,输出成为另外一个向量。或者说,将原来的向量运动(变换)到另一个地方。而线性变换,也就是在变换的基础上,再加一个条件,线性的,也就是原来的一条直线,在变换了之后还应该是直线。
而线性变换,可以这样解释,我们选用一组基底e1
=
[
1
1
]
=\begin{bmatrix} 1\\1\end{bmatrix}
=[11],e2
=
[
−
1
1
]
=\begin{bmatrix} -1\\1\end{bmatrix}
=[−11]。
假设我们有向量
B
=
[
0
2
]
B=\begin{bmatrix} 0\\ 2\end{bmatrix}
B=[02]=1e1+1e2, 假设我们一个变换矩阵
A
=
[
0
−
1
1
0
]
A=\begin{bmatrix} 0&-1\\ 1&0\end{bmatrix}
A=[01−10](意义逆时针旋转90度)而我们想把
B
B
B向量经过矩阵
A
A
A变换成另外一个向量
B
′
B'
B′(
B
′
=
A
B
=
B'=AB=
B′=AB=
[
0
−
1
1
0
]
\begin{bmatrix} 0&-1\\ 1&0\end{bmatrix}
[01−10]
[
0
2
]
\begin{bmatrix} 0\\ 2\end{bmatrix}
[02]=
[
−
2
0
]
\begin{bmatrix} -2\\0\end{bmatrix}
[−20])。
我们来看一种解释:矩阵A对向量的变换,其实是施加在其基底上的变换,而新的向量关于新的基底的线性组合,与原来的向量关于原来的基底的线性组合,是一样的:
B
=
[
0
2
]
B=\begin{bmatrix} 0\\ 2\end{bmatrix}
B=[02]=1e1+1e2 (
B
B
B在e1,**e2**为基时关于基底的系数为(1,1))
B
′
B'
B′=
[
−
2
0
]
\begin{bmatrix} -2\\0\end{bmatrix}
[−20]=1(
A
A
Ae1)+1(
A
A
Ae2)=
[
0
−
1
1
0
]
\begin{bmatrix} 0&-1\\ 1&0\end{bmatrix}
[01−10]
[
1
1
]
\begin{bmatrix} 1\\ 1\end{bmatrix}
[11]+
[
0
−
1
1
0
]
\begin{bmatrix} 0&-1\\ 1&0\end{bmatrix}
[01−10]
[
−
1
1
]
\begin{bmatrix} -1\\ 1\end{bmatrix}
[−11]=
[
−
1
1
]
\begin{bmatrix} -1\\ 1\end{bmatrix}
[−11]+
[
−
1
−
1
]
\begin{bmatrix} -1\\ -1\end{bmatrix}
[−1−1]=
[
−
2
0
]
\begin{bmatrix} -2\\ 0\end{bmatrix}
[−20]
经过线性变换A之后变成新的基底。而新的向量
B
′
B'
B′,其关于变换后的新基底的系数也是(1,1)。
所以我们说,一个向量,在经过一个矩阵A的变换之后,改变的是组成向量的基,而这个向量关于基的线性组合方式是没有变化的。
https://blog.csdn.net/qq_34099953/article/details/84246154
行列式
- 只有方阵才有行列式,行列式是线性变换的伸缩因子(负值为反向收缩),准确来讲缩放的倍数
- 矩阵M的行列式实际上是组成M的各个向量按照平行四边形法则搭成一个n维立方体的体积。
一个n*n的方阵A的行列式记为
d
e
t
(
A
)
det(A)
det(A)或
∣
A
∣
\begin{vmatrix}A\end{vmatrix}
∣∣A∣∣
a
=
[
a
b
c
d
]
a=\begin{bmatrix} a&b\\ c&d\end{bmatrix}
a=[acbd]
d
e
t
(
A
)
=
a
d
−
b
c
det(A)=ad-bc
det(A)=ad−bc
把一个
n
n
n阶行列式中的元素 aij 所在的第 i 行和第 j 列划去后,留下来的
n
−
1
n−1
n−1阶行列式叫做元素aij的余子式,记作Mij
记
A
A
Aij=
(
−
1
)
(−1)
(−1)i+j
M
M
Mij 称
A
A
Aij为代数余子式
同时一个
n
×
n
n×n
n×n矩阵的
行
列
式
\color{red}行列式
行列式等于其任意行(或列)的元素与对应的代数余子式乘积之和。
我们把行列式等于0的方阵称为奇异矩阵,反之称为非奇异矩阵。
例如:行列式与两组基所围成的面积之间的巧合
对于矩阵
A
=
A=
A=
[
3
0
0
2
]
\begin{bmatrix} 3&0\\ 0&2\end{bmatrix}
[3002],相当于把原来的基变成了
,那么两组基所围成的面积,从图上看面积分别是1和6,两者之比为6
注意而与此同时,矩阵的行列式
d
e
t
(
A
)
=
3
∗
2
−
0
=
6
det(A)=3*2-0=6
det(A)=3∗2−0=6
结论:矩阵的行列式就是在变换过程中的某个区域的面积的变化倍数。
https://blog.csdn.net/qq_34099953/article/details/84256022
特征向量与特征值
T
T
T是数域
K
K
K上的线性空间Vn的线性变换,且对
K
K
K中某一数a,存在非0向量
x
x
x属于Vn,使得
T
x
=
a
x
Tx=ax
Tx=ax成立,则称a为
T
T
T特征值,
x
x
x为
T
T
T的属于
a
a
a的特征向量。
如果一个矩阵对一个向量的作用只是对其进行了缩放,而没有角度的改变,即一个向量或某些向量只发生了伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量;伸缩的比例就是特征值。
此处结合矩阵与向量乘积的解释,不难理解。
特征向量、特征值的意义: 我们知道如果说一个向量v是方阵A的特征向量,将一定可以表示成这个形式:
A
v
=
λ
v
Av=λv
Av=λv;特征值分解是将一个矩阵分解成这个形式:
A
=
Q
Σ
Q
−
1
A=QΣQ^{-1}
A=QΣQ−1,其中
Q
Q
Q是这个矩阵
A
A
A的特征向量组成的矩阵,
Σ
Σ
Σ是一个对角阵,每一个对角线上的元素就是一个特征值。
我们以二维矩阵举例,更高维也适用。比如此时我们有矩阵
M
=
[
3
0
0
2
]
M=\begin{bmatrix} 3&0\\ 0&2\end{bmatrix}
M=[3002]、向量
[
x
y
]
\begin{bmatrix} x\\ y\end{bmatrix}
[xy],
M
M
M
[
x
y
]
=
\begin{bmatrix} x\\ y\end{bmatrix}=
[xy]=
[
3
x
2
y
]
\begin{bmatrix} 3x\\ 2y\end{bmatrix}
[3x2y](如下图示)
正因为上面的矩阵
M
M
M是对称的,所以这个变换是一个对
x
,
y
x,y
x,y轴的方向分别一个拉伸变换(每一个对角线上的元素将会对一个维度进行拉伸变换,当值>1时,是拉长,当值<1时时缩短),而当矩阵不是对称的时候比如当矩阵
M
=
[
1
1
0
1
]
M=\begin{bmatrix} 1&1\\ 0&1\end{bmatrix}
M=[1011],如乘法后结果如下图示
这其实是在平面上对一个轴(非
x
、
y
x、y
x、y轴)进行的拉伸变换(如蓝色的箭头所示)
意义: 如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。反过头来看看之前特征值分解的式子,分解得到的
Σ
Σ
Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列),我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向,也就是提取这个矩阵最重要的特征。我们利用这前N个变化方向,就可以近似这个矩阵(变换),这也正是我们如此看重特征值、特征向量之所在。
总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵;对于非方阵,可以参考一下奇异值分解。
相似矩阵
定义:
A
,
B
A,B
A,B均为
n
n
n阶矩阵,若有可逆矩阵
P
P
P,使得
P
−
1
A
P
=
B
P^{-1}AP=B
P−1AP=B,则称矩阵
B
B
B是
A
A
A的相似矩阵,对
A
A
A进行运算
P
−
1
A
P
P^{-1}AP
P−1AP成为对
A
A
A进行相似变换
相似的两个矩阵的特点:特征值、秩、迹、行列式相同
正定矩阵
正定矩阵是一种实对称矩阵。设
A
A
A是实对称矩阵,如果对任意的实非零列矩阵(即向量)
X
X
X有
X
T
A
X
>
0
X^TAX>0
XTAX>0,则称A为正定矩阵。
正定矩阵有以下性质:
1)正定矩阵的行列式恒为正;
2)A的一切顺序主子式均为正;
3)A的特征值均为正(>0);
4)存在实可逆矩阵C,使A=C′C;
5)正实数与正定矩阵的乘积是正定矩阵;
6)对角元素大于0(a[ i ][ i ]>0)。
判别对称矩阵A的正定性有两种方法:
1)求出A的所有特征值。若A的特征值均为正数,则A是正定的;若A的特征值均为负数,则A为负定的。
2)计算A的各阶顺序主子式。若A的各阶顺序主子式均大于零,则A是正定的;若A的各阶顺序主子式中,奇数阶主子式为负,偶数阶为正,则A为负定的。
(半正定矩阵,定义为
X
T
A
X
X^TAX
XTAX>=0,特征值特性为均>=0)
关于 X T A X > 0 X^TAX>0 XTAX>0,我们可以这么来理解, Y = A X Y=AX Y=AX,则 X T Y > 0 X^TY>0 XTY>0,可看作 X X X与 Y Y Y的向量积>0恒成立, c o s θ = X T Y / ∣ ∣ X ∣ ∣ ∣ ∣ Y ∣ ∣ > 0 cosθ=X^TY/||X||||Y||>0 cosθ=XTY/∣∣X∣∣∣∣Y∣∣>0,则θ<90⁰。
再来看正定矩阵的定义:一个向量( X X X)经过变化后的向量( Y Y Y)与其本身的夹角小于90度的矩阵称为正定矩阵。(半正定矩阵类似)
矩阵分解
1. Chelesky分解
Chelesky分解是相对于实正定矩阵而言的,正定矩阵默认是对称的。实对称矩阵
A
A
A必存在三角分解满足
A
=
L
U
A=LU
A=LU且存在唯一对角元素均为正的下三角矩阵G,使得
A
=
G
G
T
A=GG^T
A=GGT。
举一个简单的例子,
A
=
[
2
1
1
2
]
A=\begin{bmatrix}2&1\\1&2\end{bmatrix}
A=[2112],显然
A
A
A是正定的,存在初等变换
G
1
=
[
1
0
−
0.5
1
]
G_1=\begin{bmatrix}1&0\\-0.5&1\end{bmatrix}
G1=[1−0.501],使得
G
1
A
G
1
T
=
[
2
0
0
1.5
]
G_1AG_1^{T}=\begin{bmatrix}2&0\\0&1.5\end{bmatrix}
G1AG1T=[2001.5],实对称矩阵的对角化,那么令
A
=
G
1
−
1
(
D
)
(
D
)
(
G
1
T
)
−
1
=
G
G
T
=
[
2
0
2
/
2
1.5
]
[
2
2
/
2
0
1.5
]
A=G_1^{-1}\sqrt{(D)}\sqrt{(D)}(G_1^{T})^{-1}=GG^T=\begin{bmatrix}\sqrt{2}&0\\\sqrt{2}/2&\sqrt{1.5}\end{bmatrix}\begin{bmatrix}\sqrt{2}&\sqrt{2}/2\\0&\sqrt{1.5}\end{bmatrix}
A=G1−1(D)(D)(G1T)−1=GGT=[22/201.5][202/21.5]。
2.QR分解
矩阵正交(Q)三角®分解是对任何可逆矩阵都存在的理想分解,其原理为施密特正交化,
仿射空间与线性空间
仿射空间与仿射变换在计算机图形学中有着很重要的应用。在线性空间中,我们用矩阵乘向量的方法,可以表示各式各样的线性变换,完成诸多的功能,但是有一种极其常用的变换却不能用线性变换的方式表示,那就是平移,一个图形的平移是非线性的!(这一点只需要看平移前各点与原点的连线和平移后各点与原点之间的连线可知,或者记平移变换为FF,有F(v1+v2)≠F(v1)+F(v2))。为了表示平移,以及现实世界的描述,就需要使用仿射空间。
仿射空间是数学中的几何结构,这种结构是欧式空间的仿射特性的推广。在仿射空间中,点与点之间做差可以得到向量,点与向量做加法将得到另一个点,但是点与点之间不可以做加法。
仿射空间是一个点集,它的定义是:
(1)设A为一个点集,A中任意两个有序点P、Q对应于n维矢量空间中的一个矢量a;
(2)设P、Q、R为A中任意三点,P、Q对应于矢量a,Q、R对应于矢量b,则P、R对应于矢量a+b.
具有上面两个性质的点集A就叫做一个仿射空间。
仿射空间和线性空间(向量空间/矢量空间)的区别在于是否有选定的原点。仿射空间中的任何两点的地位等价,而线性空间的原点是个特殊的点。
想象你某天醒来发觉自己是在一个旅馆房间里,推门出去一看,外面是个无限长的走廊,走廊两边的房间都一模一样而且没有房间号,那么你就没法打电话让别人知道你的具体位置,因为你缺乏一个参照点。这就是一维仿射空间的例子(如果你把走廊看成线)。
可是如果你推开窗望出去发现只有一个窗子是红色窗帘而其它都是绿色窗帘,你就可以说“如果面向窗外,我在红色窗帘的右边第三个房间”,因为你有了参照点或者说原点。这时候就可以给这个走廊一个线性空间的结构。如果你把有红色窗帘的房间号定作0号,右边房间给正数房间号,左边给负数房间号,你甚至可以拿房间(号)作加法。紧挨红色窗帘左边的房间(-1)加右边的房间(+1)等于红色窗帘的房间(0)。
而在没有参照点之前,你可以数出两个房间之间差几个房间,所以某种意义上你可以作减法,但是加法就完全没有意义。这也是仿射空间跟线性空间的一个区别。
https://blog.csdn.net/caimouse/article/details/54574484
感谢 https://blog.csdn.net/xihuandiannao/article/details/60756486