当前位置: 首页 > news >正文

8.2 线性变换的矩阵

一、线性变换的矩阵

本节将对每个线性变换 T T T 都指定一个矩阵 A A A. 对于一般的列向量,输入 v \boldsymbol v v 在空间 V = R n \pmb{\textrm V}=\pmb{\textrm R}^n V=Rn 中,输出 T ( v ) T(\boldsymbol v) T(v) 在空间 W = R m \textrm{\pmb W}=\pmb{\textrm R}^m W=Rm 中,则这个变换的矩阵 A A A 即是 m × n m\times n m×n 的,我们在 V \textrm{\pmb V} V W \textrm{\pmb W} W 中基向量的选取将决定 A A A.
R n \textrm{\pmb R}^n Rn R m \textrm{\pmb R}^m Rm 中的标准基向量是 I I I 的列向量,这种选择可以得到一个标准矩阵,就是通常情况下的 T ( v ) = A v T(\boldsymbol v)=A\boldsymbol v T(v)=Av. 但是这些空间也有其它的基,所以同样的变换 T T T 还可以用其它的矩阵表示。线性代数的主要研究目的之一就是选择出线性变换 T T T 的最佳矩阵(对角矩阵)。
所有的向量空间 V \textrm{\pmb V} V W \pmb{\textrm W} W 都有基,选择每一种基都会得到 T T T 的一个矩阵,当输入基和输出基不相等时, T ( v ) = v T(\boldsymbol v)=\boldsymbol v T(v)=v 的矩阵就不再是单位矩阵 I I I,而是 “基变换矩阵(change of basis matrix)”. 以下是核心思想:

假设我们已知输入基向量 v 1 , v 2 , ⋯ , v n \boldsymbol v_1,\boldsymbol v_2,\cdots,\boldsymbol v_n v1,v2,,vn 的变换 T ( v 1 ) , T ( v 2 ) , ⋯ , T ( v n ) T(\boldsymbol v_1),T(\boldsymbol v_2),\cdots,T(\boldsymbol v_n) T(v1),T(v2),,T(vn).
则这个矩阵 A A A 的第 1 1 1 列到第 n n n 列是这些输出 T ( v 1 ) , T ( v 2 ) , ⋯ , T ( v n ) T(\boldsymbol v_1),T(\boldsymbol v_2),\cdots,T(\boldsymbol v_n) T(v1),T(v2),,T(vn). 此处输出基向量是标准正交基向量。
A 左乘 c = 矩阵左乘向量 = A 的 n 个列向量的线性组合 \pmb{A\,左乘\,\boldsymbol c=矩阵左乘向量=A\,的\,n\,个列向量的线性组合} A左乘c=矩阵左乘向量=An个列向量的线性组合.
A c A\boldsymbol c Ac 就是线性组合 c 1 T ( v 1 ) + c 2 T ( v 2 ) + ⋯ + c n T ( v n ) = T ( v ) c_1T(\boldsymbol v_1)+c_2T(\boldsymbol v_2)+\cdots+c_nT(\boldsymbol v_n)=T(\boldsymbol v) c1T(v1)+c2T(v2)++cnT(vn)=T(v).

原因: 每个 v \boldsymbol v v 都是基向量 v j \boldsymbol v_j vj 唯一的线性组合 c 1 v 1 + c 2 v 2 + ⋯ + c n v n c_1\boldsymbol v_1+c_2\boldsymbol v_2+\cdots+c_n\boldsymbol v_n c1v1+c2v2++cnvn,由于 T T T 是线性变换, T ( v ) T(\boldsymbol v) T(v) 一定是输出向量 T ( v j ) T(\boldsymbol v_j) T(vj) 相同的线性组合 c 1 T ( v 1 ) + c 2 T ( v 2 ) + ⋯ + c n T ( v n ) c_1T(\boldsymbol v_1)+c_2T(\boldsymbol v_2)+\cdots+c_nT(\boldsymbol v_n) c1T(v1)+c2T(v2)++cnT(vn).
例1 中给出的矩阵 A A A 选择的是 R 2 \textrm {\pmb R}^2 R2 R 3 \textrm{\pmb R}^3 R3 空间中的标准基向量。

例1】假设变换 T T T 将基向量 v 1 = ( 1 , 0 ) \boldsymbol v_1=(1,0) v1=(1,0) 变换为 T ( v 1 ) = ( 2 , 3 , 4 ) T(\boldsymbol v_1)=(2,3,4) T(v1)=(2,3,4),将第二个基向量 v 2 = ( 0 , 1 ) \boldsymbol v_2=(0,1) v2=(0,1) 变换为 T ( v 2 ) = ( 5 , 5 , 5 ) T(\boldsymbol v_2)=(5,5,5) T(v2)=(5,5,5). 如果 T T T R 2 \textrm{\pmb R}^2 R2 R 3 \pmb{\textrm R}^3 R3 的线性变换,则这个 “标准矩阵” 是 3 × 2 3\times2 3×2 的。输出向量 T ( v 1 ) T(\boldsymbol v_1) T(v1) T ( v 2 ) T(\boldsymbol v_2) T(v2) A A A 的列向量: A = [ 2 5 3 5 4 5 ] c 1 = 1 且 c 2 = 1 得到 T ( v 1 + v 2 ) = [ 2 5 3 5 4 5 ] [ 1 1 ] = [ 7 8 9 ] A=\begin{bmatrix}2&5\\3&5\\4&5\end{bmatrix}\kern 20ptc_1=1\,且\,c_2=1\,得到\,T(\boldsymbol v_1+\boldsymbol v_2)=\begin{bmatrix}2&5\\3&5\\4&5\end{bmatrix}\begin{bmatrix}1\\1\end{bmatrix}=\begin{bmatrix}7\\8\\9\end{bmatrix} A= 234555 c1=1c2=1得到T(v1+v2)= 234555 [11]= 789

二、基的变换

例2】假设输入空间 V = R 2 \textrm{\pmb V}=\textrm{\pmb R}^2 V=R2 也是输出空间 W = R 2 \textrm{\pmb W}=\textrm{\pmb R}^2 W=R2 T ( v ) = v T(\boldsymbol v)=\boldsymbol v T(v)=v 是恒等变换(identity transformation),此时我们可能会认为变换矩阵就是单位矩阵 I I I,但是这只有在输入基和输出基相同的情况下才会出现。下面会选择不同的基以演示矩阵是如何构造的。
对于这种特殊情况 T ( v ) = v T(\boldsymbol v)=\boldsymbol v T(v)=v,这里用矩阵 B B B 来替代 A A A,我们要将基 v i \boldsymbol v_i vi 变换为基 w i \boldsymbol w_i wi,每个 v i \boldsymbol v_i vi 均为 w 1 \boldsymbol w_1 w1 w 2 \boldsymbol w_2 w2 的线性组合。 输入基 [ v 1 v 2 ] = [ 3 6 3 8 ] 输出基 [ w 1 w 2 ] = [ 3 0 1 2 ] 基的变换 v 1 = 1 w 1 + 1 w 2 v 2 = 2 w 1 + 3 w 2 \begin{array}{l}\pmb{输入基}\kern 5pt\begin{bmatrix}\boldsymbol v_1&\boldsymbol v_2\end{bmatrix}=\begin{bmatrix}3&6\\3&8\end{bmatrix}&\pmb{输出基}\kern 5pt\begin{bmatrix}\boldsymbol w_1&\boldsymbol w_2\end{bmatrix}=\begin{bmatrix}3&0\\1&2\end{bmatrix}&{\color{blue}基的变换}&\begin{matrix}\color{blue}\boldsymbol v_1=\pmb1\boldsymbol w_1+\pmb1\boldsymbol w_2\\\color{blue}\boldsymbol v_2=\pmb2\boldsymbol w_1+\pmb3\boldsymbol w_2\end{matrix}\end{array} 输入基[v1v2]=[3368]输出基[w1w2]=[3102]基的变换v1=1w1+1w2v2=2w1+3w2请注意!这里将输入基 v 1 , v 2 \boldsymbol v_1,\boldsymbol v_2 v1,v2 用输出基 w 1 , w 2 \boldsymbol w_1,\boldsymbol w_2 w1,w2 来表示,这是因为按照定义,恒等变换 T T T 作用于每个输出基向量: T ( v 1 ) = v 1 , T ( v 2 ) = v 2 T(\boldsymbol v_1)=\boldsymbol v_1,\,T(\boldsymbol v_2)=\boldsymbol v_2 T(v1)=v1,T(v2)=v2,则这里我们将输出向量 v 1 \boldsymbol v_1 v1 v 2 \boldsymbol v_2 v2 用输出基 w 1 \boldsymbol w_1 w1 w 2 \boldsymbol w_2 w2 来表示。这些加粗的数字 1 , 1 \pmb1,\pmb1 1,1 2 , 3 \pmb2,\pmb3 2,3 给出了矩阵 B B B(基的变换矩阵 the change of basis matrix)的第一列和第二列: W B = V WB=V WB=V,所以 B = W − 1 V \pmb{B=W^{-1}V} B=W1V. 基变换矩阵 B [ w 1 w 2 ] [ B ] = [ v 1 v 2 ] 就是 [ 3 0 1 2 ] [ 1 2 1 3 ] = [ 3 6 3 8 ] ( 8.2.1 ) \begin{array}{l}\pmb{基变换矩阵\,B}&\begin{bmatrix}\boldsymbol w_1&\boldsymbol w_2\end{bmatrix}{\color{blue}\begin{bmatrix}B\end{bmatrix}}=\begin{bmatrix}\boldsymbol v_1&\boldsymbol v_2\end{bmatrix}&就是&\begin{bmatrix}3&0\\1&2\end{bmatrix}\begin{bmatrix}\color{blue}1&\color{blue}2\\\color{blue}1&\color{blue}3\end{bmatrix}=\begin{bmatrix}3&6\\3&8\end{bmatrix}\end{array}\kern 10pt(8.2.1) 基变换矩阵B[w1w2][B]=[v1v2]就是[3102][1123]=[3368](8.2.1)

当输入基是矩阵 V 的列向量,输出基是矩阵 W 的列向量时, T ( v ) = v 的基变换矩阵是 B = W − 1 V \begin{array}{l}当输入基是矩阵\,\textrm{\pmb V}\,的列向量,输出基是矩阵\,\textrm{\pmb W}\,的列向量时,T(\boldsymbol v)=\boldsymbol v\,的基变换矩阵是\,\pmb{B=W^{-1}V}\end{array} 当输入基是矩阵V的列向量,输出基是矩阵W的列向量时,T(v)=v的基变换矩阵是B=W1V

关键点: 理解 B = W − 1 V B=W^{-1}V B=W1V 的简单方法:假设同一个向量 u \boldsymbol u u 分别由输入基 v i \boldsymbol v_i vi 和 输出基 w j \boldsymbol w_j wj 来表示,有下面三种方法: u = c 1 v 1 + c 2 v 2 + ⋯ + c n v n u = d 1 w 1 + d 2 w 2 + ⋯ + d n w n 即 [ v 1 v 2 ⋯ v n ] [ c 1 c 2 ⋮ c n ] = [ w 1 w 2 ⋯ w n ] [ d 1 d 2 ⋮ d n ] 和 V c = W d \begin{array}{l}\boldsymbol u=c_1\boldsymbol v_1+c_2\boldsymbol v_2+\cdots+c_n\boldsymbol v_n\\\boldsymbol u=d_1\boldsymbol w_1+d_2\boldsymbol w_2+\cdots+d_n\boldsymbol w_n&\end{array}即\begin{bmatrix}\boldsymbol v_1&\boldsymbol v_2&\cdots&\boldsymbol v_n\end{bmatrix}\begin{bmatrix}c_1\\c_2\\\vdots\\c_n\end{bmatrix}=\begin{bmatrix}\boldsymbol w_1&\boldsymbol w_2&\cdots&\boldsymbol w_n\end{bmatrix}\begin{bmatrix}d_1\\d_2\\\vdots\\d_n\end{bmatrix}和\kern 5pt\pmb{Vc=Wd} u=c1v1+c2v2++cnvnu=d1w1+d2w2++dnwn[v1v2vn] c1c2cn =[w1w2wn] d1d2dn Vc=Wd新基 w j \boldsymbol w_j wj 的系数 d \pmb d d d = W − 1 V c \pmb {d= W^{-1}Vc} d=W1Vc,则 B = W − 1 V . ( 8.2.2 ) \pmb{B=W^{-1}V}.\kern 15pt(8.2.2) B=W1V.(8.2.2)
公式 B = W − 1 V \pmb{B=W^{-1}V} B=W1V 给出一个有趣的现象:当标准基 V = I \pmb{V=I} V=I 变成一个不同的基 W \pmb W W 时,基变换矩阵是不是 W \pmb W W 而是 B = W − 1 V \pmb{B=W^{-1}V} B=W1V. 大的基向量有小的系数!标准基向量 [ x y ] \begin{bmatrix}x\\y\end{bmatrix} [xy] w 1 , w 2 \boldsymbol w_1,\boldsymbol w_2 w1,w2 的这组基向量情况下的系数是 [ w 1 w 2 ] − 1 [ x y ] \begin{bmatrix}\boldsymbol w_1&\boldsymbol w_2\end{bmatrix}^{-1}\begin{bmatrix}x\\y\end{bmatrix} [w1w2]1[xy].

三、变换矩阵的构造

下面我们构造任意一个线性变换的矩阵。假设 T T T n n n 维的空间 V \pmb{\textrm V} V 变换成 m m m 维的空间 W \pmb{\textrm W} W,我们在空间 V \pmb{\textrm V} V 中选择一组基 v 1 , v 2 , ⋯ , v n \boldsymbol v_1,\boldsymbol v_2,\cdots,\boldsymbol v_n v1,v2,,vn,在空间 W \pmb{\textrm W} W 中选择一组基 w 1 , w 2 , ⋯ , w n \boldsymbol w_1,\boldsymbol w_2,\cdots,\boldsymbol w_n w1,w2,,wn,则变换矩阵 A A A m × n m\times n m×n 的。为了求得 A A A 的第一列,将 T T T 作用于第一个基向量 v 1 \boldsymbol v_1 v1,则输出 T ( v 1 ) T(\boldsymbol v_1) T(v1) 在空间 W \pmb{\textrm W} W 中。

T ( v 1 ) 是空间 W 输出基的一种线性组合 a 11 w 1 + a 21 w 2 + ⋯ + a m 1 w m {\color{blue}T(\boldsymbol v_1)}\,是空间\,\pmb{\textrm W}\,输出基的一种线性组合\,\color{blue}a_{11}\boldsymbol w_1+a_{21}\boldsymbol w_2+\cdots+a_{m1}\boldsymbol w_m T(v1)是空间W输出基的一种线性组合a11w1+a21w2++am1wm

a 11 , a 21 , ⋯ , a m 1 a_{11},a_{21},\cdots,a_{m1} a11,a21,,am1 这些数是 A A A 的第一列,将 v 1 \boldsymbol v_1 v1 变换为 T ( v 1 ) T(\boldsymbol v_1) T(v1) 对应 A A A 左乘 ( 1 , 0 , ⋯ , 0 ) (1,0,\cdots,0) (1,0,,0),这给出了变换矩阵 A A A 的第一列。当 T T T 是求导且第一个基向量是 1 1 1 时,它的导数是 T ( v 1 ) = 0 T(\boldsymbol v_1)=\boldsymbol 0 T(v1)=0,所以下面的导数矩阵中,第一列全为零。

例3 T \pmb T T 是求导运算: T ( v ) = d v d x \pmb{T(\boldsymbol v)=\displaystyle\frac{\textrm dv}{\textrm dx}} T(v)=dxdv,此时矩阵 A A A 是 “求导矩阵(derivate matrix)”,输入基 v i \boldsymbol v_i vi 1 , x , x 2 , x 3 1,x,x^2,x^3 1,x,x2,x3,输出基 w j \boldsymbol w_j wj 1 , x , x 2 1,x,x^2 1,x,x2 如果 v = c 1 + c 2 x + c 3 x 2 + c 4 x 3 则 d v d x = 1 c 2 + 2 c 3 x + 3 c 4 x 2 A c = [ 0 1 0 0 0 0 2 0 0 0 0 3 ] [ c 1 c 2 c 3 c 4 ] = [ c 2 2 c 3 3 c 4 ] \begin{array}{l}如果\,\boldsymbol v=c_1+c_2x+c_3x^2+c_4x^3\\则\,\displaystyle\frac{d\boldsymbol v}{\textrm dx}=\pmb1c_2+\pmb2c_3x+\pmb3c_4x^2\end{array}\kern 10ptA\boldsymbol c=\begin{bmatrix}0&\pmb1&0&0\\0&0&\pmb2&0\\0&0&0&\pmb3\end{bmatrix}\begin{bmatrix}c_1\\c_2\\c_3\\c_4\end{bmatrix}=\begin{bmatrix}c_2\\2c_3\\3c_4\end{bmatrix} 如果v=c1+c2x+c3x2+c4x3dxdv=1c2+2c3x+3c4x2Ac= 000100020003 c1c2c3c4 = c22c33c4

关键准则 : A 的第 j 列是变换 T 作用在第 j 个基向量 v j 所得 \pmb{关键准则:}\,A\,的第\,j\,列是变换\,T\,作用在第\,j\,个基向量\,\boldsymbol v_j\,所得 关键准则:A的第j列是变换T作用在第j个基向量vj所得
T ( v j ) = a 1 j w 1 + a 2 j w 2 + ⋯ + a m j w m 是输出基向量的线性组合 ( 8.2.3 ) {\color{blue}T(\boldsymbol v_j)=a_{1j}\boldsymbol w_1+a_{2j}\boldsymbol w_2+\cdots+a_{mj}\boldsymbol w_m\,是输出基向量的线性组合}\kern 15pt(8.2.3) T(vj)=a1jw1+a2jw2++amjwm是输出基向量的线性组合(8.2.3)

这些数字 a i j a_{ij} aij 构成了变换矩阵 A A A. 变换矩阵可以直接得到基向量的像(basis vectors right),然后线性性质得到所有向量的像。任意向量 v \boldsymbol v v 都可以写成线性组合 c 1 v 1 + c 2 v 2 + ⋯ + c n v n c_1\boldsymbol v_1+c_2\boldsymbol v_2+\cdots+c_n\boldsymbol v_n c1v1+c2v2++cnvn T ( v ) T(\boldsymbol v) T(v) 是基向量 w j \boldsymbol w_j wj 的一种线性组合。当 A A A 左乘 v \boldsymbol v v 的组合系数向量 c = ( c 1 , c 2 , ⋯ , c n ) \boldsymbol c=(c_1,c_2,\cdots,c_n) c=(c1,c2,,cn) A c A\boldsymbol c Ac 得到 T ( v ) T(\boldsymbol v) T(v) 关于输出基向量的组合系数。这是因为矩阵乘法(列向量的线性组合)和 T T T 一样是线性的。
矩阵 A A A 告诉了我们线性变换 T T T 做了什么,每一个从 V \pmb{\textrm V} V W \textrm{\pmb W} W 的线性变换都可以用一个矩阵来表示,这个矩阵取决于基的选择。

例4】对于积分 T + ( v ) T^+(\boldsymbol v) T+(v),第一个基函数也是 1 1 1,它的积分是第二个基函数 x x x,所以 “积分矩阵(integral matrix)” A + A^+ A+ 的第一列是 ( 0 , 1 , 0 , 0 ) (0,1,0,0) (0,1,0,0) d 1 + d 2 x + d 3 x 2 的积分是 d 1 x + 1 2 d 2 x 2 + 1 3 d 3 x 3 A + d = [ 0 0 0 1 0 0 0 1 2 0 0 0 1 3 ] [ d 1 d 2 d 3 ] = [ 0 d 1 1 2 d 2 1 3 d 3 ] \begin{array}{l}\pmb{d_1+d_2x+d_3x^2\,的积分是}\\\pmb{d_1x+\displaystyle\frac{1}{2}d_2x^2+\frac{1}{3}d_3x^3}\end{array}\kern 15ptA^+\boldsymbol d=\begin{bmatrix}0&0&0\\\pmb1&0&0\\0&\pmb{\dfrac{1}{2}}&0\\0&0&\pmb{\dfrac{1}{3}}\end{bmatrix}\begin{bmatrix}d_1\\d_2\\d_3\end{bmatrix}=\begin{bmatrix}0\\d_1\\\dfrac{1}{2}d_2\\[1.5ex]\dfrac{1}{3}d_3\end{bmatrix} d1+d2x+d3x2的积分是d1x+21d2x2+31d3x3A+d= 01000021000031 d1d2d3 = 0d121d231d3 如果对一个函数先积分再求导,将得到原函数,因此, A A + = I AA^+=I AA+=I. 但是如果是先求导再积分,则常数项会消失,因此 A + A A^+A A+A 不是 I I I. 1 \pmb 1 1 先求导再积分的结果是零 T + T ( 1 ) = 零函数的积分 = 0 T^+T(1)=零函数的积分=0 T+T(1)=零函数的积分=0这和 A + A A^+A A+A 是相符的,其第一列都是零。求导变换 T T T 有一个核(常数函数),它的矩阵 A A A 有一个零空间。再次出现的主要思想: A v A\boldsymbol v Av 表示 T ( v ) T(\boldsymbol v) T(v) 的结果。
求导和积分的例子有三个重要的点:第一,线性变换 T T T 无处不在,例如在微积分、微分方程和线性代数中;第二,与 R n \pmb {\textrm R}^n Rn 不同的空间很重要,输入空间 V \pmb {\textrm V} V 和输出空间 W \pmb{\textrm W} W 都可以是函数空间;第三,如果我们先求导再积分,我们可以将它们的矩阵乘起来 A + A \pmb{A^+A} A+A 后计算

四、矩阵乘积 AB 对应于变换 TS

下面是一些重要内容 —— 矩阵乘法规则的真正原因。两个线性变换 T T T S S S 的矩阵分别是 A A A B B B,现在比较 T S TS TS 和乘积 A B AB AB
当将变换 T T T 作用于 S S S 的输出时,由以下规则得到 T S TS TS ( T S ) ( u ) 定义为 T ( S ( u ) ) , 输出 S ( u ) 成了 T 的输入 . (TS)(\boldsymbol u)\,定义为\,\pmb{T(S(\boldsymbol u))},\,输出\,S(\boldsymbol u)\,成了\,T\,的输入. (TS)(u)定义为T(S(u)),输出S(u)成了T的输入. 将矩阵 A A A 作用于 B B B 的输出时,由以下规则得到乘积 A B AB AB ( A B ) ( x ) 定义为 A ( B ( x ) ) , 输出 B x 成了 A 的输入 . (AB)(\boldsymbol x)\,定义为\,\pmb{A(B(\boldsymbol x))},\,输出\,B\boldsymbol x\,成了\,A\,的输入. (AB)(x)定义为A(B(x)),输出Bx成了A的输入. 矩阵乘法规则得到的矩阵 A B 是变换 T S 的矩阵 . \pmb{矩阵乘法规则得到的矩阵\,AB\,是变换\,TS\,的矩阵.} 矩阵乘法规则得到的矩阵AB是变换TS的矩阵.变换 S S S 是从空间 U \pmb{\textrm U} U 到空间 V \pmb{\textrm V} V,它的矩阵使用了空间 U \pmb{\textrm U} U 的基 u 1 , u 2 , ⋯ , u p \boldsymbol u_1,\boldsymbol u_2,\cdots,\boldsymbol u_p u1,u2,,up 和空间 V \pmb{\textrm V} V 的基 v 1 , v 2 , ⋯ , v n \boldsymbol v_1,\boldsymbol v_2,\cdots,\boldsymbol v_n v1,v2,,vn,这个矩阵是 n × p n\times p n×p 的。变换 T T T 是从空间 V \pmb{\textrm V} V 到空间 W \pmb{\textrm W} W,它的变换矩阵一定要使用空间 V \pmb{\textrm V} V 的同一组基 v 1 , v 2 , ⋯ , v n \boldsymbol v_1,\boldsymbol v_2,\cdots,\boldsymbol v_n v1,v2,,vn V \textrm{\pmb V} V S S S 的输出空间也是 T T T 的输入空间。此时矩阵 A B \pmb{AB} AB 对应于变换 T S \pmb{TS} TS.

乘法: 线性变换 T S TS TS U \textrm {\pmb U} U 中的任一向量变换到 V \textrm{\pmb V} V 中的 S ( u ) S(\boldsymbol u) S(u),再变换到 W \textrm{\pmb W} W 中的 T ( S ( u ) ) T(S(\boldsymbol u)) T(S(u)). 矩阵 A B AB AB 作用于 R p \textrm{\pmb R}^p Rp 空间中的任一向量 x \boldsymbol x x,先得到 R n \textrm{\pmb R}^n Rn 中的 B x B\boldsymbol x Bx,然后得到 R m \textrm{\pmb R}^m Rm 中的 A B x AB\boldsymbol x ABx. 矩阵 A B AB AB 就是变换 T S TS TS 的矩阵: T S : U → V → W A B : ( m × n ) ( n × p ) = ( m × p ) \color{blue}TS:\pmb{\textrm U}\rightarrow\pmb{\textrm V}\rightarrow\pmb{\textrm W}\kern 18ptAB:(m\times n)(n\times p)=(m\times p) TSUVWAB(m×n)(n×p)=(m×p)

输入是 u = x 1 u 1 + x 2 u 2 + ⋯ + x p u p \boldsymbol u=x_1\boldsymbol u_1+x_2\boldsymbol u_2+\cdots+x_p\boldsymbol u_p u=x1u1+x2u2++xpup,输出 T ( S ( u ) ) T(S(\boldsymbol u)) T(S(u)) 对应于输出 A B x AB\boldsymbol x ABx. 变换 T S TS TS 的复合对应于矩阵的乘积 A B AB AB.
最重要的情况是空间 U, V, W \pmb{\textrm {U,\,V,\,W}} U,V,W 均相同且均选择相同的基,当 m = n = p m=n=p m=n=p 时,则变换矩阵均为方阵,所以可以相乘。

例5 S S S 将平面逆时针旋转 θ \theta θ T T T 也是逆时针旋转 θ \theta θ,则 T S TS TS 逆时针旋转 2 θ 2\theta 2θ,变换 T 2 T^2 T2 的对应旋转矩阵 A 2 A^2 A2 也是逆时针旋转 2 θ 2\theta 2θ T = S A = B T 2 是逆时针旋转 2 θ A 2 = [ cos ⁡ 2 θ − sin ⁡ 2 θ sin ⁡ 2 θ cos ⁡ 2 θ ] ( 8.2.4 ) T=S\kern 15ptA=B\kern 15ptT^2\,是逆时针旋转2\,\theta\kern 15ptA^2=\begin{bmatrix}\cos2\theta&-\sin2\theta\\\sin2\theta&\kern 7pt\cos2\theta\end{bmatrix}\kern 15pt(8.2.4) T=SA=BT2是逆时针旋转2θA2=[cos2θsin2θsin2θcos2θ](8.2.4)通过对比变换的平方 T 2 T^2 T2 和它们矩阵的平方 A 2 A^2 A2,我们可以得到 cos ⁡ 2 θ \cos2\theta cos2θ sin ⁡ 2 θ \sin2\theta sin2θ 的公式。 A A A A A A [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] = [ cos ⁡ 2 θ − sin ⁡ 2 θ − 2 sin ⁡ θ cos ⁡ θ 2 sin ⁡ θ cos ⁡ θ cos ⁡ 2 θ − sin ⁡ 2 θ ] ( 8.4.5 ) \begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\kern 7pt\cos\theta\end{bmatrix}\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\kern 7pt\cos\theta\end{bmatrix}=\begin{bmatrix}\cos^2\theta-\sin^2\theta&-2\sin\theta\cos\theta\\2\sin\theta\cos\theta&\cos^2\theta-\sin^2\theta\end{bmatrix}\kern 15pt(8.4.5) [cosθsinθsinθcosθ][cosθsinθsinθcosθ]=[cos2θsin2θ2sinθcosθ2sinθcosθcos2θsin2θ](8.4.5)比较(8.2.4)和(8.2.5)可以得到 cos ⁡ 2 θ = cos ⁡ 2 θ − sin ⁡ 2 θ \cos2\theta=\cos^2\theta-\sin^2\theta cos2θ=cos2θsin2θ sin ⁡ 2 θ = 2 sin ⁡ θ cos ⁡ θ \sin2\theta=2\sin\theta\cos\theta sin2θ=2sinθcosθ. 三角公式(至少是倍角公式)可由线性代数得到。

例6 S S S 逆时针选择角度 θ \theta θ T T T 逆时针选择角度 − θ -\theta θ,则由 T S = I TS=I TS=I 可以得到 A B = I AB=I AB=I. 该情形下 T ( S ( u ) ) T(S(\boldsymbol u)) T(S(u)) 就是 u \boldsymbol u u,旋转后又旋转回来了。相应的矩阵表示, A B x AB\boldsymbol x ABx 一定就是 x \boldsymbol x x,这两个矩阵互为逆矩阵。将 cos ⁡ ( − θ ) = cos ⁡ θ \cos(-\theta)=\cos\theta cos(θ)=cosθ sin ⁡ ( − θ ) = − sin ⁡ θ \sin(-\theta)=-\sin\theta sin(θ)=sinθ 代入旋转矩阵 A A A 中即可验证: A B = [ cos ⁡ θ sin ⁡ θ − sin ⁡ θ cos ⁡ θ ] [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] = [ cos ⁡ 2 θ + sin ⁡ 2 θ 0 0 cos ⁡ θ + sin ⁡ 2 θ ] = I AB=\begin{bmatrix}\kern 7pt\cos\theta&\sin\theta\\-\sin\theta&\cos\theta\end{bmatrix}\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\kern 7pt\cos\theta\end{bmatrix}=\begin{bmatrix}\cos^2\theta+\sin^2\theta&0\\0&\cos^\theta+\sin^2\theta\end{bmatrix}=I AB=[cosθsinθsinθcosθ][cosθsinθsinθcosθ]=[cos2θ+sin2θ00cosθ+sin2θ]=I

五、选择最佳基

下面是本节的最后一部分:选择最佳基使得变换矩阵为对角矩阵。使用标准基( I I I 的列向量)时,变换 T T T 的矩阵 A A A 可能不是对角矩阵;当使用不同的基时,同样的变换 T T T 会由不同的矩阵表示。选择基向量时,两个很好的选择是特征向量和奇异向量: 特征向量 如果变换 T 将 R n 映射到 R n ,则它的矩阵 A 是个方阵。但是使用标准基时,矩阵 A 可能不是对角的。 如果 A 有 n 个线性无关的特征向量,选择它们作为输入和输出基,使用这组 “好基” 时, T 的变换矩阵为 Λ ,其对 角元素是 A 的特征值 。 \begin{array}{l}\pmb{特征向量}\kern 15pt如果变换 \,T\,将\,\pmb{\textrm R}^n\,映射到\,\textrm{\pmb R}^n,则它的矩阵\,A\,是个方阵。但是使用标准基时,矩阵\,A\,可能不是对角的。\\如果\,A\,有\,n\,个线性无关的特征向量,选择它们作为输入和输出基,使用这组\,“好基”\,时,\pmb{T\,的变换矩阵为\,\Lambda,其对}\\\pmb{角元素是\,A\,的特征值}。\end{array} 特征向量如果变换TRn映射到Rn,则它的矩阵A是个方阵。但是使用标准基时,矩阵A可能不是对角的。如果An个线性无关的特征向量,选择它们作为输入和输出基,使用这组好基时,T的变换矩阵为Λ,其对角元素是A的特征值例7投影矩阵 T T T R 2 \pmb{\textrm R}^2 R2 中的每个向量 v = ( x , y ) \boldsymbol v=(x,y) v=(x,y) 投影到直线 y = − x y=-x y=x 上。若使用标准基, v 1 = ( 1 , 0 ) \boldsymbol v_1=(1,0) v1=(1,0) 的投影为 T ( v 1 ) = ( 1 2 , − 1 2 ) T(\boldsymbol v_1)=(\dfrac{1}{2},-\dfrac{1}{2}) T(v1)=(21,21) v 2 = ( 0 , 1 ) \boldsymbol v_2=(0,1) v2=(0,1) 的投影为 T ( v 2 ) = ( − 1 2 , 1 2 ) T(\boldsymbol v_2)=(-\dfrac{1}{2},\dfrac{1}{2}) T(v2)=(21,21),这些投影构成了 A A A 的列: 标准基下的 投影矩阵是 非对角矩阵 A = [ 1 2 − 1 2 − 1 2 1 2 ] 有 A T = A 且 A 2 = A \begin{array}{l}\pmb{标准基下的}\\\pmb{投影矩阵是}\\\pmb{非对角矩阵}\end{array}\kern 15ptA=\begin{bmatrix}\kern 7pt\dfrac{1}{2}&-\dfrac{1}{2}\\[1.5ex]-\dfrac{1}{2}&\kern 7pt\dfrac{1}{2}\end{bmatrix}\,有\,A^T=A\,且\,A^2=A 标准基下的投影矩阵是非对角矩阵A= 21212121 AT=AA2=A下面是关于选取特征向量作为基向量的情况,可以对角化变换矩阵!
当基向量是原变换矩阵 A A A 的特征向量时,变换矩阵将变为对角矩阵 v 1 = w 1 = ( 1 , − 1 ) 投影到自身: T ( v 1 ) = v 1 ,对应 λ 1 = 1 v 2 = w 2 = ( 1 , 1 ) 投影到零向量: T ( v 2 ) = 0 ,对应 λ 2 = 0 \begin{array}{l}\boldsymbol v_1=\boldsymbol w_1=(1,-1)\,投影到自身:T(\boldsymbol v_1)=\boldsymbol v_1,对应\,\lambda_1=1\\\boldsymbol v_2=\boldsymbol w_2=(1,1)\,投影到零向量:T(\boldsymbol v_2)=\boldsymbol 0,对应\,\lambda_2=0\end{array} v1=w1=(1,1)投影到自身:T(v1)=v1,对应λ1=1v2=w2=(1,1)投影到零向量:T(v2)=0,对应λ2=0 特征向量基 对应对角矩阵 新的变换矩阵是 [ 1 0 0 0 ] = [ λ 1 0 0 λ 2 ] = Λ ( 8.2.6 ) \begin{array}{l}\pmb{特征向量基}\\\pmb{对应对角矩阵}\end{array}\kern 15pt新的变换矩阵是\,\begin{bmatrix}1&0\\0&0\end{bmatrix}=\begin{bmatrix}\lambda_1&0\\0&\lambda_2\end{bmatrix}=\Lambda\kern 20pt(8.2.6) 特征向量基对应对角矩阵新的变换矩阵是[1000]=[λ100λ2]=Λ(8.2.6)特征向量是完美的基向量,它们给出特征值矩阵 Λ \Lambda Λ.
当输入基和输出基相同但并不一定是特征向量时会怎样的?将这些基向量 b i \boldsymbol b_i bi 作为 B B B 的列,则基变换矩阵(从标准基到新基)是 B in = B \pmb{B_{\textrm{in}}}=\pmb B Bin=B B out = B − 1 \pmb{B_{\textrm{out}}}=\pmb{ B^{-1}} Bout=B1 T T T 新的变换矩阵和 A A A 相似

新基 b i \boldsymbol b_i bi 的变换矩阵 A new = B − 1 A B \pmb{A_{\textrm{new}}}=\pmb{B^{-1}AB} Anew=B1AB 与标准基的变换矩阵 A \pmb A A 相似: A b i 到 b i = B 标准基到 b i − 1 A 标准基 B b i 到标准基 ( 8.2.7 ) {\color{blue}A_{\boldsymbol b_i到\,\boldsymbol b_i}=B^{-1}_{标准基到\,\boldsymbol b_i}A_{标准基}B_{\boldsymbol b_i到标准基}}\kern 20pt(8.2.7) Abibi=B标准基到bi1A标准基Bbi到标准基(8.2.7)

原因: 设标准基下的坐标向量为 v \boldsymbol v v,变换矩阵是 A A A。新基矩阵为 B B B,新的变换矩阵是 A new A_{\textrm{new}} Anew. v \,\boldsymbol v v 在新基的坐标可以由 v = B x \boldsymbol v=B\boldsymbol x v=Bx 求得,即新基下的坐标向量 x = B − 1 v \boldsymbol x=B^{-1}\boldsymbol v x=B1v,其中 B − 1 B^{-1} B1 即为基变换矩阵。经变换 T T T 作用后的坐标为 A new x = A new B − 1 v A_{\textrm{new}}\boldsymbol x=A_{\textrm{new}}B^{-1}\boldsymbol v Anewx=AnewB1v。而 v \boldsymbol v v 在标准基下经过 T T T 变换后为 A v A\boldsymbol v Av,将其转换为新基的坐标即为 B − 1 A v B^{-1}A\boldsymbol v B1Av,这两者应相等,即 A new B − 1 v = B − 1 A A_{\textrm{new}}B^{-1}\boldsymbol v=B^{-1}A AnewB1v=B1A,即可求得 A new = B − 1 A B A_{\textrm{new}}=B^{-1}AB Anew=B1AB
这里也可以通过变换的乘积法则理解:对于变换 I T I ITI ITI I I I 是恒等变换,它们的矩阵分别是 B − 1 , A , B B^{-1},A,B B1,A,B. 矩阵 B B B 是由标准基下的输入向量 b i \boldsymbol b_i bi 组成。将其理解成左乘,即先是基变换矩阵由新基到标准基 B B B,然后在标准基下进行变换得 A B AB AB,最后再变换为新基即得到 B − 1 A B B^{-1}AB B1AB.
最后考虑 V \pmb V V W \pmb W W 是不同的空间情形,此时有不同的基 v i \boldsymbol v_i vi w j \boldsymbol w_j wj. 当我们选定基后且给出变换 T T T,我们可以得到一个矩阵 A A A,此时 A A A 可能不是对称的,甚至可能不是方阵,但是我们总可以选择出基 v i \boldsymbol v_i vi w j \boldsymbol w_j wj 使得这个矩阵是对角矩阵。这个矩阵就是奇异值分解 A = U Σ V T A=U\Sigma V^T A=UΣVT 中的奇异值矩阵 Σ = diag ( σ 1 , σ 2 , ⋯ , σ r ) \pmb{\Sigma=\textrm{diag}(\sigma_1,\sigma_2,\cdots,\sigma_r)} Σ=diag(σ1,σ2,,σr),其中 diag ( σ 1 , σ 2 , ⋯ , σ r ) \textrm{diag}(\sigma_1,\sigma_2,\cdots,\sigma_r) diag(σ1,σ2,,σr) 是 MATLAB 中的函数,表示对角元素是 σ 1 , σ 2 , ⋯ , σ r \sigma_1,\sigma_2,\cdots,\sigma_r σ1,σ2,,σr 的对角矩阵。 奇异向量 SVD 给出了 U − 1 A V = Σ ,右奇异值向量 v 1 , v 2 , ⋯ , v n 是输入基,左奇异值向量 u 1 , u 2 , ⋯ , u m 是输出基。由矩阵的乘法法则,在这些新基下的同样的变换矩阵为 B out − 1 A B in = U − 1 A V = Σ . \begin{array}{l}\pmb{奇异向量}\kern 15pt\textrm{SVD}\,给出了\,U^{-1}AV=\Sigma,右奇异值向量\,\boldsymbol v_1,\boldsymbol v_2,\cdots,\boldsymbol v_n\,是输入基,左奇异值向量\,\boldsymbol u_1,\boldsymbol u_2,\cdots,\boldsymbol u_m\\是输出基。由矩阵的乘法法则,在这些新基下的同样的变换矩阵为\,B^{-1}_{\textrm{out}}AB_{\textrm{in}}=U^{-1}AV=\Sigma.\end{array} 奇异向量SVD给出了U1AV=Σ,右奇异值向量v1,v2,,vn是输入基,左奇异值向量u1,u2,,um是输出基。由矩阵的乘法法则,在这些新基下的同样的变换矩阵为Bout1ABin=U1AV=Σ.这里就不能称 Σ \Sigma Σ A A A “相似” 了。现在是有两个基,输入基和输出基,它们都是标准正交基所以保持了向量的长度。这里我们可以称 Σ \Sigma Σ A A A 是 “等距的(isometric)” 定义 如果 Q 1 和 Q 2 均为正交矩阵,则 C = Q 1 − 1 A Q 2 与 A 等距 . 定义\kern 20pt如果\,Q_1\,和\,Q_2\,均为正交矩阵,则\,C=Q_1^{-1}AQ_2\,与\,A\,等距. 定义如果Q1Q2均为正交矩阵,则C=Q11AQ2A等距.例8】为了构造变换 T = d d x T=\dfrac{\textrm d}{\textrm dx} T=dxd 的矩阵 A A A,我们选择了输入基 1 , x , x 2 , x 3 1,x,x^2,x^3 1,x,x2,x3 和输出基 1 , x , x 2 1,x,x^2 1,x,x2,矩阵 A A A 很简单但可惜的是它并不是对角矩阵。但是我们可以取每组基的反序。
现在输入基是 x 3 , x 2 , x , 1 x^3,x^2,x,1 x3,x2,x,1,输出基是 x 2 , x , 1 x^2,x,1 x2,x,1,基变换矩阵 B in B_{\textrm{in}} Bin B out B_{\textrm{out}} Bout 是置换矩阵。 T ( u ) = d u d x T(\boldsymbol u)=\dfrac{\textrm d\boldsymbol u}{\textrm dx} T(u)=dxdu 在新基下的变换矩阵是对角奇异值矩阵 B out − 1 A B in = Σ \pmb{B^{-1}_{\textrm{out}}AB_{\textrm{in}}=\Sigma} Bout1ABin=Σ,且奇异值 σ 1 , σ 2 , σ 3 = 3 , 2 , 1 \sigma_1,\sigma_2,\sigma_3=3,2,1 σ1,σ2,σ3=3,2,1 B out − 1 A B in = [ 1 1 1 ] [ 0 1 0 0 0 0 2 0 0 0 0 3 ] [ 1 1 1 1 ] = [ 3 0 0 0 0 2 0 0 0 0 1 0 ] ( 8.2.8 ) \pmb{B^{-1}_{\textrm{out}}AB_{\textrm{in}}}=\begin{bmatrix}&&1\\&1\\1\end{bmatrix}\begin{bmatrix}0&\pmb1&0&0\\0&0&\pmb2&0\\0&0&0&\pmb3\end{bmatrix}\begin{bmatrix}&&&1\\&&1\\&1\\1\end{bmatrix}=\begin{bmatrix}\pmb3&0&0&0\\0&\pmb2&0&0\\0&0&\pmb1&0\end{bmatrix}\kern 15pt(8.2.8) Bout1ABin= 111 000100020003 1111 = 300020001000 (8.2.8)从上式可以看到 x 3 x^3 x3

六、主要内容总结

  1. 如果我们已知一组基的线性变换 T ( v 1 ) , T ( v 2 ) , ⋯ , T ( v n ) T(\boldsymbol v_1),T(\boldsymbol v_2),\cdots,T(\boldsymbol v_n) T(v1),T(v2),,T(vn),那么线性性质将会决定其它所有的变换 T ( v ) T(\boldsymbol v) T(v).
  2. 线性变换 T T T 的输入基是 v 1 , v 2 , ⋯ , v n \boldsymbol v_1,\boldsymbol v_2,\cdots,\boldsymbol v_n v1,v2,,vn,输出基是 w 1 , w 2 , ⋯ , w m \boldsymbol w_1,\boldsymbol w_2,\cdots,\boldsymbol w_m w1,w2,,wm,则存在 m × n m\times n m×n 的矩阵 A A A 来表示这个线性变换。
  3. 基变换矩阵 B = W − 1 V = B out − 1 B in B=W^{-1}V=B^{-1}_{\textrm{out}}B_{\textrm{in}} B=W1V=Bout1Bin 表示恒等变换 T ( v ) = v T(\boldsymbol v)=\boldsymbol v T(v)=v.
  4. 如果矩阵 A A A B B B 分别表示变换 T T T S S S,并且 S S S 的输出基是 T T T 的输入基,则矩阵 A B AB AB 表示变换 T ( S ( u ) ) T(S(\boldsymbol u)) T(S(u)).
  5. 最佳的输入-输出基是 A A A 特征向量或奇异向量,且 B − 1 A B = Λ = 特征值矩阵 B out − 1 A B in = Σ = 奇异值矩阵 B^{-1}AB=\Lambda=特征值矩阵\kern 20ptB^{-1}_{\textrm{out}}AB_{\textrm{in}}=\Sigma=奇异值矩阵 B1AB=Λ=特征值矩阵Bout1ABin=Σ=奇异值矩阵

七、例题

例9 2 × 2 2\times2 2×2 的矩阵空间有下面四个 “向量” 作为一组基: v 1 = [ 1 0 0 0 ] v 2 = [ 0 1 0 0 ] v 3 = [ 0 0 1 0 ] v 4 = [ 0 0 0 1 ] \boldsymbol v_1=\begin{bmatrix}1&0\\0&0\end{bmatrix}\kern 15pt\boldsymbol v_2=\begin{bmatrix}0&1\\0&0\end{bmatrix}\kern 15pt\boldsymbol v_3=\begin{bmatrix}0&0\\1&0\end{bmatrix}\kern 15pt\boldsymbol v_4=\begin{bmatrix}0&0\\0&1\end{bmatrix} v1=[1000]v2=[0010]v3=[0100]v4=[0001]线性变换 T T T 是转置每个 2 × 2 2\times2 2×2 的矩阵,那么在这组基下表示变换 T T T 的矩阵 A A A 是什么(输入基 = 输出基)?逆矩阵 A − 1 A^{-1} A1 是什么?转置变换的逆变换 T − 1 T^{-1} T1 是什么?
解: 转置这四个 “基矩阵” 仅仅是交换 v 2 \boldsymbol v_2 v2 v 3 \boldsymbol v_3 v3 T ( v 1 ) = v 1 T ( v 2 ) = v 3 T ( v 3 ) = v 2 T ( v 4 ) = v 4 给出了变换矩阵的四列 A = [ 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 ] \begin{array}{l}T(\boldsymbol v_1)=\boldsymbol v_1\\T(\boldsymbol v_2)=\boldsymbol v_3\\T(\boldsymbol v_3)=\boldsymbol v_2\\T(\boldsymbol v_4)=\boldsymbol v_4\end{array}\kern 10pt给出了变换矩阵的四列\kern 10ptA=\begin{bmatrix}1&0&0&0\\0&0&1&0\\0&1&0&0\\0&0&0&1\end{bmatrix} T(v1)=v1T(v2)=v3T(v3)=v2T(v4)=v4给出了变换矩阵的四列A= 1000001001000001 逆矩阵 A − 1 A^{-1} A1 A A A 相同,逆变换 T − 1 T^{-1} T1 T T T 相同。如果我们转置两次,最终得到的矩阵和原始矩阵相同。
注意 2 × 2 2\times2 2×2 的矩阵空间是 4 4 4 维的,所以矩阵 A A A(转置变换 T T T 的变换矩阵)是 4 × 4 4\times4 4×4 的, A A A 的零空间是 Z \pmb Z Z T T T 的核是零矩阵 —— 转置后为零矩阵的只有零矩阵。 A A A 的特征值是 1 , 1 , 1 , − 1 1,1,1,-1 1,1,1,1.
对应特征值 λ = − 1 \lambda=-1 λ=1,即满足 T ( A ) = A T = − A T(A)=A^T=-A T(A)=AT=A 的 “矩阵直线” 是什么?反对称矩阵!

相关文章:

8.2 线性变换的矩阵

一、线性变换的矩阵 本节将对每个线性变换 T T T 都指定一个矩阵 A A A. 对于一般的列向量,输入 v \boldsymbol v v 在空间 V R n \pmb{\textrm V}\pmb{\textrm R}^n VRn 中,输出 T ( v ) T(\boldsymbol v) T(v) 在空间 W R m \textrm{\pmb W}\…...

工业路由器WiFi6+5G的作用与使用指南,和普通路由器对比

工业路由器的技术优势 在现代工业环境中,网络连接的可靠性与效率直接影响生产效率和数据处理能力。WiFi 6(即802.11ax)和5G技术的结合,为工业路由器注入了强大的性能,使其成为智能制造、物联网和边缘计算的理想选择。…...

Nginx核心服务

一.正向代理 正向代理(Forward Proxy)‌是一种位于客户端和原始服务器之间的代理服务器,其主要作用是将客户端的请求转发给目标服务器,并将响应返回给客户端 Nginx 的 正向代理 充当客户端的“中间人”,代…...

条件随机场 (CRF) 原理及其在语义分割中的应用

条件随机场 (CRF) 原理及其在语义分割中的应用 一、条件随机场的原理 条件随机场 (Conditional Random Fields, CRF) 是一种判别式概率无向图模型。它用于在给定观测序列 (如图像中的像素) 的条件下,对另一组序列 (如像素的语义标签) 进行建模和预测。 与生成式模…...

2025年Y2大型游乐设施操作证备考练习题

Y2 大型游乐设施操作证备考练习题 单选题 1、《游乐设施安全技术监察规程(试行)》规定:对操作控制人员无法观察到游乐设施的运行情况,在可能发生危险的地方应( ),或者采取其他必要的安全措施。…...

L53.【LeetCode题解】二分法习题集2

目录 1.162. 寻找峰值 分析 代码 提交结果 2.153. 寻找旋转排序数组中的最小值 分析 图像的增长趋势可以分这样几类 逐个击破 比较明显的 先增后减再增 用二段性给出left和right的更新算法 代码 提交结果 其他做法 提交结果 3.LCR 173. 点名(同剑指offer 53:0~…...

趣味编程:抽象图(椭圆组成)

概述&#xff1a;本篇博客主要讲解由椭圆图案组合而成的抽象图形。 1.效果展示 该程序的实际运行是一个动态的效果&#xff0c;因此实际运行相较于博客图片更加灵动。 2.源码展示 // 程序名称&#xff1a;椭圆组合而成的抽象图案// #include <graphics.h> #include <…...

RPA浪潮来袭,职业竞争的新风口已至?

1. RPA职业定义与范畴 1.1 RPA核心概念 RPA&#xff08;Robotic Process Automation&#xff0c;机器人流程自动化&#xff09;是一种通过软件机器人模拟人类操作&#xff0c;实现重复性、规律性任务自动化的技术。它能够自动执行诸如数据输入、文件处理、系统操作等任务&…...

【Elasticsearch】字段别名

在 Elasticsearch 中&#xff0c;字段别名&#xff08;Field Alias&#xff09;主要用于查询和检索阶段&#xff0c;而不是直接用于写入数据。 为什么不能通过字段别名写入数据&#xff1f; 字段别名本质上是一个映射关系&#xff0c;它将别名指向实际的字段。Elasticsearch …...

【Linux笔记】防火墙firewall与相关实验(iptables、firewall-cmd、firewalld)

一、概念 1、防火墙firewall Linux 防火墙用于控制进出系统的网络流量&#xff0c;保护系统免受未授权访问。常见的防火墙工具包括 iptables、nftables、UFW 和 firewalld。 防火墙类型 包过滤防火墙&#xff1a;基于网络层&#xff08;IP、端口、协议&#xff09;过滤流量&a…...

人工智能解析:技术革命下的认知重构

当生成式AI能够自主创作内容、设计方案甚至编写代码时&#xff0c;我们面对的不仅是工具革新&#xff0c;更是一场关于智能本质的认知革命。人工智能解析的核心&#xff0c;在于理解技术如何重塑人类解决问题和创造价值的底层逻辑——这种思维方式的转变&#xff0c;正成为数字…...

Neo4j实现向量检索

最近因为Dify、RagFlow这样的智能体的镜像拉取的速度实在太麻烦&#xff0c;一狠心想实现自己的最简单的RAG。 因为之前图数据库使用到了neo4j&#xff0c;查阅资料才发现​​Neo4j从5.11版本开始支持向量索引&#xff0c;提供一个真实可用的单元测试案例。 Neo4j建向量索引表…...

SpringBoot外部化配置

外部化配置&#xff08;Externalized Configuration&#xff09;是指将应用的配置从代码中剥离出来&#xff0c;放在外部文件或环境中进行管理的一种机制。 通俗地说&#xff0c;就是你不需要在代码里写死配置信息&#xff08;比如数据库账号、端口号、日志级别等&#xff09;…...

Gut(IF: 23.1)|深度多组学破局肝癌免疫联合治疗耐药的空间微环境图谱

肝细胞癌&#xff08;HCC&#xff09;是癌症相关死亡的主要原因之一&#xff0c;晚期患者预后极差。近年来&#xff0c;免疫检查点抑制剂&#xff08;ICI&#xff09;联合治疗&#xff08;如抗CTLA-4的tremelimumab和抗PD-L1的durvalumab&#xff09;已成为晚期HCC的一线治疗方…...

2025年保姆级教程:Powershell命令补全、主题美化、文件夹美化及Git扩展

文章目录 1. 美化 Powershell 缘起2. 安装 oh-my-posh 和 posh-git3. 安装文件夹美化主题【可选】 1. 美化 Powershell 缘起 背景&#xff1a;用了 N 年的 Windows 系统突然觉得命令行实在太难用了&#xff0c;没有补全功能、界面也不美观。所以&#xff0c;我决定改变它。但是…...

LeetCode-链表-合并两个有序链表

LeetCode-链表-合并两个有序链表 ✏️ 关于专栏&#xff1a;专栏用于记录 prepare for the coding test。 文章目录 LeetCode-链表-合并两个有序链表&#x1f4dd; 合并两个有序链表&#x1f3af;题目描述&#x1f50d; 输入输出示例&#x1f9e9;题目提示&#x1f9ea;AC递归&…...

SpringBoot3+Vue3(2)-前端基本页面配置-登录界面编写-Axios请求封装-后端跨越请求错误

前端&#xff1a; 清理文件 main.js 刷新后页面上什么都没有了 App.vue就留这 1.基本页面配置 新建Vue组件 单页面&#xff0c;考路由才操作。 1.前端根目录下安装路由 2.创建路由文件夹 main.js中添加路由配置 App.vue 添加上路由 welcomeView.vue 浏览器刷新&…...

Android Framework学习八:SystemServer及startService原理

文章目录 SystemServer、SystemServiceManger、SystemService、serviceManager的关系SystemServer进程的执行包含的ServiceSystemServer启动服务的流程startService Framework学习系列文章 SystemServer、SystemServiceManger、SystemService、serviceManager的关系 管理机制&a…...

远程访问家里的路由器:异地访问内网设备或指定端口网址

在一些情况下&#xff0c;我们可能需要远程访问家里的路由器&#xff0c;以便进行设置调整或查看网络状态等&#xff0c;我们看看怎么操作&#xff1f; 1.开启远程访问 在路由本地电脑或手机&#xff0c;登录浏览器访问路由管理后台&#xff0c;并设置开启WEB远程访问。 2.内…...

大语言模型 17 - MCP Model Context Protocol 介绍对比分析 基本环境配置

MCP 基本介绍 官方地址&#xff1a; https://modelcontextprotocol.io/introduction “MCP 是一种开放协议&#xff0c;旨在标准化应用程序向大型语言模型&#xff08;LLM&#xff09;提供上下文的方式。可以把 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 提供了一种…...

python生成requirements.txt文件

方法一&#xff1a;只生成项目所用到的python包(常用) 首先安装pipreqs pip install pipreqs 然后进入到你所在的项目根目录&#xff0c;运行以下命令&#xff1a; pipreqs ./ --encodingutf-8 方法二&#xff1a;把本地所有安装包写入文件 pip freeze > requirements.txt …...

如何在PyCharm2025中设置conda的多个Python版本

前言 体验的最新版本的PyCharm(Community)2025.1.1&#xff0c;发现和以前的版本有所不同。特别是使用Anaconda中的多个版本的Python的时候。 关于基于Anaconda中多个Python版本的使用&#xff0c;以及对应的Pycharm&#xff08;2023版&#xff09;的使用&#xff0c;可以参考…...

StepX-Edit:一个通用图像编辑框架——论文阅读笔记

一. 前言 代码&#xff1a;https://github.com/stepfun-ai/Step1X-Edit 论文&#xff1a;https://arxiv.org/abs/2504.17761 近年来&#xff0c;图像编辑技术发展迅速&#xff0c;GPT- 4o、Gemini2 Flash等前沿多模态模型的推出&#xff0c;展现了图像编辑能力的巨大潜力。 这…...

vue原生table表格实现动态添加列,一行添加完换行继续添加。el-select输入框背景颜色根据所选内容不同而改变

效果如下 动态添加列 代码如下 <template><div class"table-container"><button click"addColumn">添加列</button><div class"scroll-container"><div class"table-grid"><div v-for"(r…...

maven之pom.xml

MAVEN 1、基础配置​2、项目信息3、依赖管理​4、构建配置​5、继承与聚合​6、仓库与SCM​7、其他高级配置​ Maven的pom.xml文件是项目的核心配置文件&#xff0c;用于定义项目结构、依赖关系和构建过程 https://www.runoob.com/maven/maven-pom.html 1、基础配置​ **<…...

深度学习Y8周:yolov8.yaml文件解读

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 本周任务&#xff1a;根据yolov8n、yolov8s模型的结构输出&#xff0c;手写出yolov8l的模型输出、 文件位置&#xff1a;./ultralytics/cfg/models/v8/yolov8.…...

充电桩APP的数据分析:如何用大数据优化运营?

随着新能源汽车的普及&#xff0c;充电桩作为基础设施的核心环节&#xff0c;其运营效率直接影响用户体验和行业可持续发展。充电桩APP积累了海量用户行为、充电记录、设备状态等数据&#xff0c;如何利用这些数据优化运营成为关键课题。大数据分析能够帮助运营商精准定位问题、…...

shell脚本之函数详细解释及运用

什么是函数 通俗地讲&#xff0c;所谓函数就是将一组功能相对独立的代码集中起来&#xff0c;形成一个代码块&#xff0c;这个代码可 以完成某个具体的功能。从上面的定义可以看出&#xff0c;Shell中的函数的概念与其他语言的函数的 概念并没有太大的区别。从本质上讲&#…...

校平机的原理、应用及发展趋势

一、校平机的定义与作用 校平机&#xff08;Leveling Machine&#xff09;是一种用于矫正金属板材、带材或卷材表面平整度的工业设备。其核心功能是通过机械作用消除材料内部残余应力&#xff0c;修正材料在加工、运输或存储过程中产生的弯曲、波浪形、翘曲等缺陷&#xff0c;…...

NFM算法解析:如何用神经网络增强因子分解机的特征交互能力?

在推荐系统和广告点击率预测等场景中&#xff0c;特征交叉&#xff08;Feature Interaction&#xff09;是提升模型效果的关键。传统的因子分解机&#xff08;FM&#xff09;通过二阶特征交互取得了显著效果&#xff0c;但其线性建模方式和有限阶数限制了模型的表达能力。今天&…...

Python人工智能算法 模拟退火算法:原理、实现与应用

模拟退火算法&#xff1a;从物理启发到全局优化的深度解析 一、算法起源与物理隐喻 模拟退火算法&#xff08;Simulated Annealing, SA&#xff09;起源于20世纪50年代的固体退火理论&#xff0c;其核心思想可追溯至Metropolis等人提出的蒙特卡罗模拟方法。1983年&#xff0c…...

服务器网络配置 netplan一个网口配置两个ip(双ip、辅助ip、别名IP别名)

文章目录 问答 问 # This is the network config written by subiquity network:ethernets:enp125s0f0:dhcp4: noaddresses: [192.168.90.180/24]gateway4: 192.168.90.1nameservers:addresses:- 172.0.0.207- 172.0.0.208enp125s0f1:dhcp4: trueenp125s0f2:dhcp4: trueenp125…...

FTP与NFS服务详解

一、FTP服务 &#xff08;一&#xff09;Linux下FTP客户端管理工具 1. ftp工具 安装命令&#xff1a;yum install ftp -y连接服务器&#xff1a;ftp 服务器IP&#xff0c;输入账号密码登录。常用命令&#xff1a; 命令说明ls查看远程目录文件put上传单个文件到远程服务器get…...

算法中的数学:欧拉函数

1.相关定义 互质&#xff1a;a与b的最大公约数为1 欧拉函数&#xff1a;在1~n中&#xff0c;与n互质的数的个数就是欧拉函数的值 eg&#xff1a; n1时&#xff0c;欧拉函数的值为1&#xff0c;因为1和1是互质的 n2是&#xff0c;值为2&#xff0c;因为1和2都是互质的 积性函数&…...

如果有三个服务实例部署在三台不同的服务器上,这三个服务实例的本地缓存,是存储一模一样的数据?还是各自只存一部分?

✅ 答案是&#xff1a;通常每个服务实例都会独立地缓存它自己访问过的数据&#xff0c;这些数据可能是相同的&#xff0c;也可能是不同的&#xff0c;取决于请求的内容。 &#x1f4cc; 举个例子说明 假设你有一个商品详情页的服务&#xff0c;部署了 3 个服务实例&#xff08…...

Coze工作流-选择器的用法

上集回顾 上集教程我们学习了什么是变量以及变量类型的用法。即什么时候用什么变量类型 教程简介 本教程将带大家学习工作流的选择和问答模块 工作流类型选择 在Coze中&#xff0c;工作流是智能体的核心逻辑单元。根据任务复杂度&#xff0c;可选择两种模式&#xff1a; 类…...

《AI工程技术栈》:三层结构解析,AI工程如何区别于ML工程与全栈工程

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

uni-app使用大集

1、手动修改页面标题 uni.setNavigationBarTitle({title: 修改标题 }); 2、单选 不止有 radio-group&#xff0c;还有 uni-data-checkbox 数据选择器 <!-- html部分 --> <uni-data-checkbox v-model"sex" :localdata"checkboxList"></u…...

链表day3

链表定义 struct ListNode{int val;ListNode *next; //next是一个指针变量&#xff0c;存储的是地址&#xff0c;是ListNode类型的地址ListNode(int x) : val(x),next(nullptr){} //也就是说ListNode必须接受一个int x&#xff0c;next指针默认为nullptr&#xff0c;值由外部指…...

C++23关联容器的异质擦除重载 (P2077R2)介绍

文章目录 一、基本概念二、原理重载机制类型转换 三、优势提高查找效率提升程序整体性能避免不必要的初始化确保系统实时性 四、应用场景高性能计算大型对象管理实时系统 五、代码示例六、相关图片材料结构与微观图像半导体研究图示与图表科学图表芯片与电路板 一、基本概念 在…...

Flink架构概览,Flink DataStream API 的使用,FlinkCDC的使用

一、Flink与其他组件的协同 Flink 是一个分布式、高性能、始终可用、准确一次&#xff08;Exactly-Once&#xff09;语义的流处理引擎&#xff0c;广泛应用于大数据实时处理场景中。它与 Hadoop 生态系统中的组件可以深度集成&#xff0c;形成完整的大数据处理链路。下面我们从…...

AI加速芯片全景图:主流架构和应用场景详解

目录 一、为什么AI芯片如此重要? 二、主流AI芯片架构盘点 三、不同芯片在训练与推理中的部署逻辑 四、真实应用案例解读 五、AI芯片发展趋势预测 AI芯片的选择,是AI系统能否高效运行的关键。今天笔者就从架构角度出发,带你系统了解主流AI加速芯片的种类、优劣对比及实际…...

Ubuntu22.04 系统安装Docker教程

1.更新系统软件包 #确保您的系统软件包是最新的。这有助于避免安装过程中可能遇到的问题 sudo apt update sudo apt upgrade -y 2.安装必要的依赖 sudo apt install apt-transport-https ca-certificates curl software-properties-common -y 3.替换软件源 原来/etc/apt/s…...

更新ubuntu软件源遇到GPG error

BUG背景 执行sudo apt update后遇到类似下列报错&#xff1a; E: The repository https://download.docker.com/linux/ubuntu bionic Release no longer has a Release file. N: Updating from such a repository cant be done securely, and is therefore disabled by defau…...

vue调后台接口

1.1 什么是 axios Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用来发送网络请求。它可以在浏览器和 node.js 中使用&#xff0c;本质上是对原生 XMLHttpRequest 的封装&#xff0c;符合最新的 ES 规范&#xff0c;支持 Promise API&#xff0c;能够拦截请求和响应&am…...

Ubuntu学习记录

冷知识补充 1.VMware官网安装后&#xff0c;会有两个软件&#xff0c;一个收费&#xff08;pro&#xff09;(功能更多&#xff0c;可以一次运行多个虚拟机)&#xff08;尽管2024年最新版本的也免费了&#xff09;一个免费(player)。 2.ubuntu打开终端快捷键&#xff1a;ctrlal…...

【音频】如何解析mp3文件

解析和播放MP3文件涉及两个主要步骤:解码(将MP3压缩数据转换为原始PCM音频)和播放(将PCM数据通过音频设备输出)。以下是不同平台和编程语言的实现方法: 一、MP3文件结构基础 MP3文件由多个**帧(Frame)**组成,每帧包含固定时长的音频数据(通常为26ms)。每个帧包含:…...

学习笔记:黑马程序员JavaWeb开发教程(2025.4.9)

12.16 异常处理 定义一个类&#xff0c;加上注解RestControllerAdvice&#xff0c;即定义了一个全局异常处理器 再方法上加上注解ExceptionHandler&#xff0c;通过注解当中的value属性来指定捕获那个类型的异常 完成Filter、interceptor、异常处理代码实操 Filter Filter里…...

【音频】wav文件如何解析编码格式(压缩格式)?

要确定一个WAV文件的编码格式&#xff0c;可以通过以下几种方法实现&#xff0c;包括使用操作系统自带工具、专业音频软件或编程解析文件头信息。以下是详细说明&#xff1a; 一、通过文件属性查看&#xff08;Windows/macOS&#xff09; 1. Windows系统 步骤&#xff1a; 右…...

【Django系统】Python+Django携程酒店评论情感分析系统

Python Django携程酒店评论情感分析系统 项目概述 这是一个基于 Django 框架开发的酒店评论情感分析系统。系统使用机器学习技术对酒店评论进行情感分析&#xff0c;帮助酒店管理者了解客户反馈&#xff0c;提升服务质量。 主要功能 评论数据导入&#xff1a;支持导入酒店…...