TA百人计划 图形 1.2.2 矩阵计算

数学基础 —— 矩阵计算

线性方程

什么是线性方程?

线性方程,顾名思义,呈线性的方程,一条线下来,比如我们中学时期学过的一次方程就是一个线性方程,线性方程具有可加性,比例性,即常数倍 k,用数学函数表达方式就是

可加性:

f(x_1+x_2)=f(x_1)+f(x_2)\newline 2x+3y=1
比例性:

f(kx)=kf(x)\newline x+y=2\newline 2x+2y=4

但是并不是所有方程都是线性方程,比如我们学过的三角函数,xx 次方程就不是线性方程,此类被称为非线性方程:

x+y^2=5\newline \sin x+\cos x = 1\newline x+xy=3

什么是线性空间

直线变换后依然是直线,并且等比坐标原点保持不变

06685dbd9ba9b80b5e05ba2a4e8ce5fb.png

什么是非线性空间

空间扭曲,不是等距,坐标原点有位移

86685d725a3621a33f1ec6375c8a35b7.png

矩阵的历史

矩阵最开始是用做解线性方程组的
\left\{\begin{matrix}2x+3y=1 \\ x+y=2\end{matrix}\right.
将未知数 xy 提出来,可以写成矩阵和向量的形式
\begin{bmatrix}2 &3\\1 &1\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}1\\2\end{bmatrix}
其中 A=\begin{bmatrix}2 &3\\1 &1\end{bmatrix}是矩阵,\vec{x}=\begin{bmatrix}x\\y\end{bmatrix},\vec{b}=\begin{bmatrix}1\\2\end{bmatrix}是向量形式。

这样可以将线性方程组转化成一个向量方程,在已知矩阵 A 和向量 \vec{b} 的情况下,求未知向量 \vec{x}

矩阵的方式解线性方程组

\left\{\begin{matrix}2x+3y=1 \\ x+y=2\end{matrix}\right.

x,y 隐藏,并将等号右边的数字一起提出来,成为增广矩阵

\begin{bmatrix}2 &3&1\\1 &1&2\end{bmatrix}
和代数解方程一样,每一行可以单独乘以系数或者每行相加减

r^{‘}_2=r_1-2r_2,得\begin{bmatrix}2 &3&1\\0 &1&-3\end{bmatrix}

r^{‘}_1=\dfrac{1}{2}r_1-3r_2,得\begin{bmatrix}1&0&5\\0 &1&-3\end{bmatrix}

等同于 \left\{\begin{matrix}x+0y=5 \\ 0x+y=-3\end{matrix}\right.,得出 x=5\ ,y=3

线性方程组和矩阵的关系

\left\{\begin{matrix}2x+3y=1 \\ x+y=2\end{matrix}\right.\Rightarrow\left\{\begin{matrix}x+0y=5 \\ 0x+y=-3\end{matrix}\right.

新坐标系下的顶点:(1,2)\vec{i^{‘}}=(2,1)\vec{j^{‘}}=(3,1)

标准坐标系下的顶点:(5,-3)\vec{i}=(1,0)\vec{j}=(0,1)

什么是矩阵

一个 m \times n 的矩阵是由 mn 列元素排列成的矩形阵列

矩阵的定义:由 m \times n 个数 a_{ij}(i=1,2,3…m;j=1,2,3…n)排成的 mn 列的数表称为 mn 列矩阵,简称 m \times n 矩阵。为表示这些数字是一个整体,总是加一个方括号
A=\begin{bmatrix}a_{1,1}&a_{1,2}&…&a_{1,n}\\a_{2,1} &a_{2,2}&…&a_{2,n}\\…&…&…&…\\a_{m,1}&a_{m,2}&…&a_{m,n}\end{bmatrix}

特殊的矩阵

方阵

行数列数都相等,且都等于 n 的矩阵成为 n 阶矩阵或 n 阶方阵

2 阶方阵 \begin{bmatrix}2 &3\\1 &1\end{bmatrix}

3 阶方阵 \begin{bmatrix}2 &1&8\\3 &5&2\\1&5&7\end{bmatrix}

单位矩阵 I

n \times n 矩阵,从左到右的对角线上的元素是 1,其余元素都是 0

2 阶单位矩阵 \begin{bmatrix}1&0\\0&1\end{bmatrix}

3 阶单位矩阵 \begin{bmatrix}1&0&0\\0&1&0\\0&0&1 \end{bmatrix}

零矩阵 O

元素都是零的矩阵

2 阶零矩阵 \begin{bmatrix}0&0\\0&0\end{bmatrix}

3 阶零矩阵 \begin{bmatrix}0&0&0\\0&0&0\\0&0&0 \end{bmatrix}

矩阵的加减法

两个矩阵的行数,列数都相等时,就称他们是同型矩阵
\begin{bmatrix}3&5\\1&2\end{bmatrix}\begin{bmatrix}1&3\\0&4\end{bmatrix}
矩阵的加法即对应位置相加,只有同型矩阵再能相加
\begin{bmatrix}3&5\\1&2\end{bmatrix}+\begin{bmatrix}1&3\\0&4\end{bmatrix}=\begin{bmatrix}3+1&5+3\\1+0&2+4\end{bmatrix}=\begin{bmatrix}4&8\\1&6\end{bmatrix}
矩阵的加法满足交换律和结合律

  • 交换律 A+B = B+A

  • 结合律 (A+B)+C=A+(B+C)

矩阵的减法:A-B = A+(-B)

矩阵加减法的几何意义是对单位向量的一个变换

矩阵的数乘

将一个常数 k 与 矩阵 A 的乘积记做 kA
kA=Ak=\begin{bmatrix}ka_{1,1}&ka_{1,2}&…&ka_{1,n}\\ka_{2,1} &ka_{2,2}&…&ka_{2,n}\\…&…&…&…\\ka_{m,1}&ka_{m,2}&…&ka_{m,n}\end{bmatrix}
k 与矩阵 A 的每个数进行相乘
3*\begin{bmatrix}1&3\\0&4\end{bmatrix}=\begin{bmatrix}3*1&3*3\\3*0&3*4\end{bmatrix}=\begin{bmatrix}3&9\\0&12\end{bmatrix}

矩阵与矩阵之间的乘法

首先并不是所有矩阵都能相乘,矩阵相乘需要满足一定的合法性

m \times n 的矩阵只能与 n \times p 的矩阵相乘

相乘后的矩阵大小为 m \times p

举例:
\begin{bmatrix}2&1\\0&3\\5&4\end{bmatrix}\times\begin{bmatrix}7&6\\8&9\end{bmatrix}=\begin{bmatrix}2*7+1*8&2*6+1+9\\0*7+3*8&0*6+3*9\\5*7+4*8&5*6+4*9\end{bmatrix}
A=(a_{ij}) 是一个 m\times n 的矩阵,B=(b_{ij}) 是一个 n\times p 的矩阵,矩阵 A 与矩阵 B 的乘积是一个 m \times p 的矩阵 C=(c_{ij})
c_{ij}=a_{i*}\cdot b_{*j}\ (i=1,2,3…,m;j=1,2,3…n)\\
记作 C=AB

点积的观点方便记忆:
\begin{bmatrix}2&1\\0&3\\5&4\end{bmatrix}\times\begin{bmatrix}7&6\\8&9\end{bmatrix}=\begin{bmatrix}(2,1)\cdot(7,8)&(2,6)\cdot(1,9)\\(0,7)\cdot(3,8)&(0,6)\cdot(3,9)\\(5,7)\cdot(4,8)&(5,6)\cdot(4,9)\end{bmatrix}

※矩阵的乘法并不是满足所有乘法运算规律的

矩阵的数乘满足交换律 k(AB)=k(A)B=A(kB)

矩阵之间的乘法不一定满足(当与特殊矩阵进行计算的时候可能满足,比如与单位矩阵相乘)

由此我们明白,矩阵的相乘是由顺序的,一般是先进行移动,再进行旋转,最后缩放

满足结合律 (AB)C=A(BC)

满足分配律 A(B+C)=AB+AC

矩阵的乘法的几何意义

\begin{bmatrix}2&1\\0&3\\5&4\end{bmatrix}\times\begin{bmatrix}7&6\\8&9\end{bmatrix}=\begin{bmatrix}22&21\\24&27\\67&66\end{bmatrix}

一个矩阵叉乘另一个矩阵,得到的还是一个矩阵,但是这个矩阵在图形学上被称作变换矩阵

即一个图形 进行 移动 + 旋转 + 缩放得到的是这个图形的变换矩阵,到最后这个样子需要将图形的原矩阵乘以变换矩阵
\begin{bmatrix}1&-1\\0&2\end{bmatrix}\times\begin{bmatrix}1\\2\end{bmatrix}=\begin{bmatrix}-1\\4\end{bmatrix}

一个矩阵与一个列向量相乘,得到的是我们想要的最后结果,即这个顶点变换之后的坐标

在我们平时的实际开发中,我们不可能只单单对一个物体进行单个变换(移动,旋转,缩放),我们开始着手一个项目的时候往往是图形的复合变换,即包括图形的移动,旋转,缩放

在复合变换中我们采用的是列向量左乘
\begin{bmatrix}2&1\\0&1\end{bmatrix}\times\begin{bmatrix}1&-1\\0&2\end{bmatrix}\times\begin{bmatrix}1\\2\end{bmatrix}=\begin{bmatrix}2\\4\end{bmatrix}
矩阵相乘的一个好处,我们可以除了最右边的向量不进行计算,先把左边的旋转,移动,缩放等先计算得到一个最终的变换矩阵,这时我们再拿最右边的向量与这个最终变换矩阵相乘得到最终结果

日常开发中常见的矩阵

  • 纵向拉伸矩阵 \begin{bmatrix}1&0\\0&c\end{bmatrix}
  • 缩放矩阵 \begin{bmatrix}x&0\\0&y\end{bmatrix}
  • 斜切矩阵 \begin{bmatrix}1&k\\0&1\end{bmatrix}
  • 旋转矩阵 \begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}
  • 基于 y=x 镜面对称 \begin{bmatrix}0&1\\1&0\end{bmatrix}
  • 位移矩阵 \begin{bmatrix}1&0&x\\0&1&y\\0&0&1\end{bmatrix}

三维空间中的坐标变换

text{缩放矩阵:}\begin{bmatrix}x&0&0&0\\0&y&0&0\\0&0&z&1\\0&0&0&1\end{bmatrix}\\\text{绕}\ x\ \text{轴旋转矩阵:}\begin{bmatrix}1&0&0&0\\0&\cos\theta&-\sin\theta&0\\0&\sin\theta&\cos\theta&0\\0&0&0&1\end{bmatrix} \\\text{绕}\ y\ \text{轴旋转矩阵:}\begin{bmatrix}\cos\theta&0&\sin\theta&0\\0&1&0&0\\-\sin\theta&0&\cos\theta&0\\0&0&0&1\end{bmatrix}\\\text{绕}\ z\ \text{轴旋转矩阵:}\begin{bmatrix}\cos\theta&-\sin\theta&0&0\\\sin\theta&\cos\theta&0&0\\0&0&0&0\\0&0&0&1\end{bmatrix} \\\text{位移矩阵:}\begin{bmatrix}1&0&0&t_x\\0&1&0&t_y\\0&0&1&t_z\\0&0&0&1\end{bmatrix}

矩阵的转置

把矩阵 A 的行换成同序数的列,该操作称为矩阵的转置运算。

转置运算后可以得到一个新矩阵,该矩阵称为 A 的转置矩阵,记作 A^T
A=(a_{ij}),A^T=(a_{ji})
矩阵的转置运算有以下性质
(A^T)^T=A\\(AB)^T=B^TA^T\\(A+B)^T=A^T+B^T

逆矩阵

矩阵与它的逆矩阵相乘,得到单位矩阵,常用作矩阵变换后再次矩阵变换回原来的的初始位置

b76f604edaf35abf23ed47d57a27b052.png

I=AA^{-1}=A^{-1}A
例题:求A=\begin{bmatrix}2&3\\1&2\end{bmatrix}的逆矩阵

{\color{Blue}\begin{bmatrix}1&-1\\0&1\end{bmatrix}}\begin{bmatrix}2&3\\1&2\end{bmatrix} = \begin{bmatrix}1&1\\1&2\end{bmatrix}\\{\color{Orange}\begin{bmatrix}1&0\\-1&1\end{bmatrix}}\begin{bmatrix}1&1\\1&2\end{bmatrix}=\begin{bmatrix}1&1\\0&1\end{bmatrix}\\{\color{Red}\begin{bmatrix}1&-1\\0&1\end{bmatrix}}\begin{bmatrix}1&1\\0&1\end{bmatrix} = \begin{bmatrix}1&0\\0&1\end{bmatrix}\\{\color{Red}\begin{bmatrix}1&-1\\0&1\end{bmatrix}}{\color{Orange}\begin{bmatrix}1&0\\-1&1\end{bmatrix}}{\color{Blue}\begin{bmatrix}1&-1\\0&1\end{bmatrix}}\begin{bmatrix}1&1\\0&1\end{bmatrix} = \begin{bmatrix}1&0\\0&1\end{bmatrix}\\
所以 A 的逆矩阵为:
A^{-1}={\color{Red}\begin{bmatrix}1&-1\\0&1\end{bmatrix}}{\color{Orange}\begin{bmatrix}1&0\\-1&1\end{bmatrix}}{\color{Blue}\begin{bmatrix}1&-1\\0&1\end{bmatrix}}=\begin{bmatrix}2&-3\\-1&2\end{bmatrix}\\

逆矩阵的运算规律

  1. 逆矩阵的逆矩阵就是原矩阵本身,假设矩阵 A 是可逆的,有 (A^{-1})^{-1}=A

  2. A 可逆,数 λ≠0,则 λA 可逆。(\lambda A)^{-1}=\dfrac{1}{\lambda}A^{-1}

  3. 矩阵串接相乘后的逆矩阵等于反向串接各个矩阵的逆矩阵。(AB)^{-1}=B^{-1}A^{-1}

    这个性质可以扩散到更多矩阵的连乘 (ABCD)^{-1}=D^{-1}C^{-1}B^{-1}A^{-1}

  4. 转置矩阵的逆矩阵是逆矩阵的转置。(A^{T})^{-1}=(A^{-1})^T

  5. 单位矩阵的逆矩阵是他本身 I^{-1}=I

如果我们使用变换矩阵 M 对矢量 v 进行了一次变换,然后再使用它的逆矩阵进行另一次变换,则

M^{-1}(Mv)=(M^{-1}M)v=Iv=v

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇