细说矩阵与变换

基础概述

为了让大家能更好理解这些内容,我会结合矩阵分析与泛函分析两个重量级选手说一说,大家一定要睁大眼睛哦!

需要知识:

  • 范数相关
  • 矩阵相关
  • 向量空间相关

向量与向量空间

向量(Vector)是一种有向线段,它是沟通代数和几何(注意是几何不是解析几何这种具体的)的桥梁,对于任意任意两个或两个以上的向量都可以按照线性关系组合成一定范围的其他向量,比如平面直角坐标系内常用的ij向量,对于向量a(1,2)可以写作 i+2j的形式,表示线性组合。假设任意两个不共线的向量,它们可以组成平面内任意一个向量,所以我们就说两向量张成平面,同理,如果是两个共线向量,就说这两个向量可以张成直线。也可以推出三维空间内的任意三个不共线向量都可以张成三维空间。张成的向量就叫基向量或者简称为基(Base)。

向量的表示可以用有序数对表示,如a=(1,2)这种,也可以用矩阵的列向量表示,写作:
$$
\vec a=\left[\begin{matrix}
1\
2\
\end{matrix} \right]
$$
所以对于有限个向量从$n_1$直到$n_m$,对它们的张成向量空间(Vector Space)可以用下面的符号表示:
$$
Span { n_1,n_2,n_3,…,n_m }
$$
相似的这些向量可以按一定权重组成一个矩阵(Matrix)A,反之矩阵A也可以拆分为多个向量的线性组合:
$$
A=\left[\begin{matrix}
\vec n_1,\vec n_2,\vec n_3,…,\vec n_m
\end{matrix} \right]
$$
我们所常用的平面系和空间系都是向量空间,可以通过轴线上的基向量张成,同时要是满足赋范向量空间则要满足三个性质:

  • 非负性
    • $||\vec a ||≥0$
  • 齐次性
    • $||a · \vec v|| = |a|·||\vec v||$
  • 三角不等式
    • $||\vec v_1||+||\vec v_2|| ≥ ||\vec v_1 + \vec v_2||$

相似的对于向量空间的形状,我们可以将有限个基向量组合变成矩阵M,通过计算det(M)与0的大小关系判断向量张成是否为直线或者原点,这里要注意,n个向量最大可以张成的向量空间维度是n,我们就可以说把n组合成的矩阵的最大秩为n,且组合的矩阵秩不能大于n,应该小于或等于n,而这n个向量组合的矩阵也可以叫做线性向量组。注意!线性向量组中存在一个非零行或者叫行内存在主元,就给秩加一,如果存在一行的主元不存在,则不对秩加一操作。

矩阵与向量结合

上一小部分我们浅谈了一句,就是说矩阵可以拆分为多组向量,对于这种运算,我们可以运用符号vec()表示,对于A来说,如果在x的变量向量内存在矩阵方程Ax=b,则我们就说这是一种矩阵变换(Matrix Translate),这种变换与映射十分类似,不过映射描述的是原像与像之间的对应关系(像序偶一样),而矩阵变换重在变换,它是一个过程,可以看作是原基向量空间内的任意向量通过矩阵A变换到vec(A)为基的新向量。

那么我们可以实现基本的矩阵变换了,我们随便取照片,利用python的numpy计算并演示一下!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import matplotlib.pylab as plt
import numpy as np
from matplotlib.patches import Ellipse
# 这是仿射规则,可以随便改改
rule = np.array([
[1,0],
[0,1]
])
# 规定椭圆的半长轴和半短轴
a,b=2,1.141
res = np.array([[a,0],[0,b]]).dot(rule)

fig = plt.figure(0)
ax = fig.add_subplot(111, aspect='equal')
# 规定圆心为(0,0),绘制未经过仿射的椭圆
e = Ellipse(xy = (0,0), width = a, height = b)
# 规定圆心为(0,0)并使用仿射结果
e2 = Ellipse(xy = (0,0), width = res[0][0], height = res[1][1])
# 显示e(未经过仿射变换)或者e2(经过仿射变换)
ax.add_artist(e)
[[ax]].add_artist(e2)

e.set_facecolor("black")
plt.xlim(-3, 3)
plt.ylim(-3, 3)
ax.grid(True)
plt.title("We had been translated")

plt.show()

为经过仿射变换的椭圆如图:

img1

修改python代码中的rule矩阵,变为下面形式,表示y轴放大二倍,得到的就是下图:

1
2
3
4
rule = np.array([
[1,0],
[0,2]
])

img2

当然变换也有旋转变换和剪切变换,这里大家可以通过修改代码或者效果,我这里只说明理论:

比如对于坐标系Oxyz而言,存在一个正方体,他的边长为1,那么他的体积就是1,接下来简称它为单位体,对坐标系沿着某一个坐标轴进行旋转变换(比如z轴),我们可以使用下面的矩阵:
$$
T_z=\left[\begin{matrix}
cosα&&sinα&&0\
-sinα&&cosα&&0\
0&&0&&1\
\end{matrix} \right]
$$
相似的,我们也可以按照不同的方向对矩阵进行旋转变换。变换规则可以参考下面的链接

https://wenku.baidu.com/view/f5f2f106ac45b307e87101f69e3143323968f593.html

我们都知道或者不知道,研究生需要学习各种数学模型的分析,比如泛函分析矩阵分析或者数学分析数学优化(如有列举错误可以在评论区指正,我会尽快修改)那么本次的博文就是出于增长基础见识为前提写的,所以研究生们加油!

小小总结一下

线性代数绝对不是我短短一篇文字能说的完的,这些需要不断学习理解与想象,而泛函分析这部分的知识,我还不是十分透彻,因为我只学过图论看过离散,却没有学过拓扑学,特别是使用拓扑代数,我完全不懂。所以小小博文到此结束,记得分享出去哦~


细说矩阵与变换
https://blog.minloha.cn/posts/2217326a6f5b7c2022041703.html
作者
Minloha
发布于
2022年4月17日
更新于
2024年4月8日
许可协议