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

线性代数的本质(二)——线性变换与矩阵

文章目录

  • 线性变换与矩阵
    • 线性变换与二阶方阵
    • 常见的线性变换
    • 复合变换与矩阵乘法
    • 矩阵的定义
    • 列空间与基
    • 矩阵的秩
    • 逆变换与逆矩阵

线性变换与矩阵

线性变换与二阶方阵

本节从二维平面出发学习线性代数。通常选用平面坐标系 O x y Oxy Oxy ,基向量为 i , j \mathbf i,\ \mathbf j i, j,平面内的任意向量都可以写成基向量的线性组合
v = x i + y j \mathbf v=x\mathbf i+y\mathbf j v=xi+yj
这样,平面内的点和有序实数对 ( x , y ) (x,y) (x,y) 一一对应。借助平面坐标系,我们可以从代数的角度来研究几何变换。

请添加图片描述

变换与函数类似,函数把数映射到数,变换把点(向量)映射到点(向量)。
T : v ↦ T ( v ) T:\quad \mathbf v\mapsto T(\mathbf v) T:vT(v)

例如,(1) 平面内任意一点 P ( x , y ) P(x,y) P(x,y) 绕原点 O O O 逆时针方向旋转 60 ° 60\degree 60° 角得到点 P ′ ( x ′ , y ′ ) P'(x',y') P(x,y),坐标变换公式为
{ x ′ = 1 2 x − 3 2 y y ′ = 3 2 x + 1 2 y \begin{cases} x'=\frac{1}{2}x-\frac{\sqrt 3}{2}y \\ y'=\frac{\sqrt 3}{2}x+\frac{1}{2}y \end{cases} {x=21x23 yy=23 x+21y
可写为向量形式
[ x ′ y ′ ] = x [ 1 2 3 2 ] + y [ − 3 2 1 2 ] \begin{bmatrix}x'\\y'\end{bmatrix}= x\begin{bmatrix}\frac{1}{2}\\\frac{\sqrt 3}{2}\end{bmatrix}+ y\begin{bmatrix}-\frac{\sqrt 3}{2}\\\frac{1}{2}\end{bmatrix} [xy]=x[2123 ]+y[23 21]

(2) 平面内任意一点 P ( x , y ) P(x,y) P(x,y) 关于 y y y 轴的对称点 P ′ ( x ′ , y ′ ) P'(x',y') P(x,y)的表达式为
{ x ′ = − x y ′ = y \begin{cases} x'=-x \\ y'=y \end{cases} {x=xy=y
可写为向量形式
[ x ′ y ′ ] = x [ − 1 0 ] + y [ 0 1 ] \begin{bmatrix}x'\\y'\end{bmatrix}= x\begin{bmatrix}-1\\0\end{bmatrix}+ y\begin{bmatrix}0\\1\end{bmatrix} [xy]=x[10]+y[01]

事实上,在平面坐标系 O x y Oxy Oxy 中,很多几何变换都具有如下坐标变换公式
{ x ′ = a x + b y y ′ = c x + d y \begin{cases} x'=ax+by \\ y'=cx+dy \end{cases} {x=ax+byy=cx+dy
向量形式为
[ x ′ y ′ ] = x [ a c ] + y [ b d ] \begin{bmatrix}x'\\y'\end{bmatrix}= x\begin{bmatrix}a\\c\end{bmatrix}+ y\begin{bmatrix}b\\d\end{bmatrix} [xy]=x[ac]+y[bd]
其中 ( x ′ , y ′ ) (x',y') (x,y)为平面内任意一点 ( x , y ) (x,y) (x,y) 变换后的点。我们把形如上式的几何变换叫做平面线性变换

容易证明,线性变换满足下列两条性质

(1) 可加性: T ( v + w ) = T ( v ) + T ( w ) T(\mathbf v+\mathbf w)=T(\mathbf v)+T(\mathbf w) T(v+w)=T(v)+T(w)
(2) 伸缩性: T ( c v ) = c L ( v ) T(c\mathbf v)=cL(\mathbf v) T(cv)=cL(v)

事实上,这两条性质才是线性变换的严格定义。

请添加图片描述

为了进一步了解线性变换的本质,取任意向量 v = x i + y j \mathbf v=x\mathbf i+y\mathbf j v=xi+yj ,在线性变换 T T T 的作用下
T ( v ) = T ( x i + y j ) = x T ( i ) + y T ( j ) T(\mathbf v)=T(x\mathbf i+y\mathbf j)=xT(\mathbf i)+yT(\mathbf j) T(v)=T(xi+yj)=xT(i)+yT(j)
可知,变换后的向量 T ( v ) T(\mathbf v) T(v) 由变换后的基向量以同样的系数完全确定。设变换后的基向量分别为
T ( i ) = a i + c j = [ a c ] , T ( j ) = b i + d j = [ b d ] T(\mathbf i)=a\mathbf i+c\mathbf j=\begin{bmatrix}a\\c\end{bmatrix},\quad T(\mathbf j)=b\mathbf i+d\mathbf j=\begin{bmatrix}b\\d\end{bmatrix} T(i)=ai+cj=[ac],T(j)=bi+dj=[bd]

注意:本章线性变换中的坐标始终使用最初的 O x y Oxy Oxy 坐标系。

于是,线性变换 T : v ↦ T ( v ) T:\mathbf v\mapsto T(\mathbf v) T:vT(v) 对应的坐标运算为
[ x ′ y ′ ] = x [ a c ] + y [ b d ] \begin{bmatrix}x'\\y'\end{bmatrix}= x\begin{bmatrix}a\\c\end{bmatrix}+ y\begin{bmatrix}b\\d\end{bmatrix} [xy]=x[ac]+y[bd]
由于上述变换由变换后的基向量唯一确定,我们可以按顺序写为数表的形式

在这里插入图片描述

我们把这个数表称为二阶矩阵,一般用大写英文字母表示。变换后的向量则定义为矩阵与向量的乘积
[ a b c d ] [ x y ] = x [ a c ] + y [ b d ] = [ a x + b y c x + d y ] \begin{bmatrix}a & b\\c & d\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}= x\begin{bmatrix} a \\ c \end{bmatrix}+ y\begin{bmatrix} b \\ d \end{bmatrix}= \begin{bmatrix} ax+by \\ cx+dy \end{bmatrix} [acbd][xy]=x[ac]+y[bd]=[ax+bycx+dy]
可知,矩阵代表一个特定的线性变换,我们完全可以把矩阵的列看作变换后的基向量,矩阵向量乘法就是将线性变换作用于给定向量

Grant:矩阵最初的定义就来自线性变换。

至此,任何一个线性变换都可以写为矩阵与向量乘积的形式。反之,确定了坐标系后,任何一个矩阵都唯一确定了一个线性变换。矩阵和向量的乘积与线性变换实现了一一对应。

一般地,直线在线性变换后仍然保持直线

在这里插入图片描述

证明:如图 l l l 为向量 w 1 , w 2 \mathbf w_1,\mathbf w_2 w1,w2 终点所确定的直线, v \mathbf v v 为终点在直线 l l l 上的任意向量。
v = w 1 + λ ( w 2 − w 1 ) = ( 1 − λ ) w 1 + λ w 2 ( λ ∈ R ) \mathbf v=\mathbf w_1+\lambda(\mathbf w_2-\mathbf w_1)=(1-\lambda)\mathbf w_1+\lambda \mathbf w_2 \quad (\lambda\in\R) v=w1+λ(w2w1)=(1λ)w1+λw2(λR)
λ 1 + λ 2 = 1 \lambda_1+\lambda_2=1 λ1+λ2=1
v = λ 1 w 1 + λ 2 w 2 \mathbf v=\lambda_1 \mathbf w_1+\lambda_2 \mathbf w_2 v=λ1w1+λ2w2
这就是由向量 w 1 , w 2 \mathbf w_1,\mathbf w_2 w1,w2 的终点所确定的直线的向量形式。由线性变换的基本性质可知,直线 l l l 在线性变换 A A A 的作用下变成
v ′ = A ( λ 1 w 1 + λ 2 w 2 ) = λ 1 A w 1 + λ 2 A w 2 \mathbf v'=A(\lambda_1 \mathbf w_1+\lambda_2 \mathbf w_2)=\lambda_1 A\mathbf w_1+\lambda_2 A\mathbf w_2 v=A(λ1w1+λ2w2)=λ1Aw1+λ2Aw2
(1) 如果 A w 1 ≠ A w 2 A\mathbf w_1\neq A\mathbf w_2 Aw1=Aw2,那么 v ′ \mathbf v' v 表示由向量 A w 1 , A w 2 A\mathbf w_1,A\mathbf w_2 Aw1,Aw2 的终点确定的直线。此时矩阵 A A A 对应的线性变换把直线变成直线;
(2) 如果 A w 1 = A w 2 A\mathbf w_1 = A\mathbf w_2 Aw1=Aw2,那么 λ 1 A w 1 + λ 2 A w 2 = A w 1 \lambda_1 A\mathbf w_1+\lambda_2 A\mathbf w_2=A\mathbf w_1 λ1Aw1+λ2Aw2=Aw1 。由于向量 A w 1 A\mathbf w_1 Aw1 的终点是一个确定的点,因而,矩阵 A A A 所对应的线性变换把直线 l l l 映射成了一个点 A w 1 A\mathbf w_1 Aw1

常见的线性变换

Grant:我们可以使用无限网格刻画二维空间所有点的变换。线性变换是操作空间的一种手段,它能够保持网格线平行且等距,并保持原点不动

我们已经知道,在线性变换的作用下,直线仍然保持直线(或一个点)。为了方便,我们只考虑在平面直角坐标系内,单位正方形区域的线性变换。

根据向量加法的平行四边形法则,单位正方形区域可用向量形式表示为
[ x y ] = x i + y j ( 0 ⩽ x , y ⩽ 1 ) \begin{bmatrix}x\\y\end{bmatrix}=x\mathbf i+y\mathbf j \quad(0\leqslant x,y\leqslant 1) [xy]=xi+yj(0x,y1)
由线性变换基本性质知,变换后的区域为
A [ x y ] = x ( A i ) + y ( A j ) ( 0 ⩽ x , y ⩽ 1 ) A\begin{bmatrix}x\\y\end{bmatrix}=x(A\mathbf i)+y(A\mathbf j) \quad(0\leqslant x,y\leqslant 1) A[xy]=x(Ai)+y(Aj)(0x,y1)

表示以 A i , A j A\mathbf i,A\mathbf j Ai,Aj 为邻边的平行四边形区域。因此,我们只需考虑单位向量 i , j \mathbf i,\mathbf j i,j 在线性变换作用下的结果,就能得到单位正方形区域在线性变换作用下所变成的图形。

在这里插入图片描述

恒等变换:把平面内任意一点 P ( x , y ) P(x,y) P(x,y) 变成它本身,记为 I I I 。对应的矩阵称为单位阵
[ 1 0 0 1 ] \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix} [1001]

旋转变换:(rotations)平面内任意一点 P ( x , y ) P(x,y) P(x,y) 绕原点 O O O按逆时针方向旋转 θ \theta θ 角,记为 R θ R_{\theta} Rθ 。对应的矩阵为
[ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] \begin{bmatrix} \cos\theta & -\sin\theta\\ \sin\theta & \cos\theta \end{bmatrix} [cosθsinθsinθcosθ]

在这里插入图片描述

切变变换:(shears)平行于 x x x 轴的切变变换对应的矩阵为
[ 1 k 0 1 ] \begin{bmatrix} 1 & k\\ 0 & 1 \end{bmatrix} [10k1]
类似的,平行于 y y y 轴的切变变换对应的矩阵为
[ 1 0 k 1 ] \begin{bmatrix} 1 & 0\\ k & 1 \end{bmatrix} [1k01]

在这里插入图片描述

反射变换:(reflection)一般的我们把平面内任意一点 P ( x , y ) P(x,y) P(x,y) 关于直线 l l l 对称的线性变换叫做关于直线 l l l 的反射变换。

(1) 关于 y y y 轴的反射变换对应的矩阵为
[ − 1 0 0 1 ] \begin{bmatrix} -1 & 0\\ 0 & 1 \end{bmatrix} [1001]
(2) 关于直线 y = x y=x y=x 的反射变换对应的矩阵为
[ 0 1 1 0 ] \begin{bmatrix} 0 & 1\\ 1 & 0 \end{bmatrix} [0110]
(3) 关于直线 y = k x y=kx y=kx 的反射变换对应的矩阵为
1 k 2 + 1 [ 1 − k 2 2 k 2 k k 2 − 1 ] \frac{1}{k^2+1}\begin{bmatrix} 1-k^2 & 2k\\ 2k & k^2-1 \end{bmatrix} k2+11[1k22k2kk21]

在这里插入图片描述

伸缩变换:(stretching)将每个点的横坐标变为原来的 k 1 k_1 k1 倍,纵坐标变为原来的 k 2 k_2 k2 倍,其中 k 1 , k 2 ≠ 0 k_1,k_2\neq0 k1,k2=0 。对应的矩阵为
[ k 1 0 0 k 2 ] \begin{bmatrix} k_1 & 0\\ 0 & k_2 \end{bmatrix} [k100k2]

在这里插入图片描述

投影变换:(projection)平面内任意一点 P ( x , y ) P(x,y) P(x,y) 在直线 l l l 的投影称为关于直线 l l l 的投影变换。

(1) 关于 x x x 轴的投影变换对应的矩阵为
[ 1 0 0 0 ] \begin{bmatrix} 1 & 0\\ 0 & 0 \end{bmatrix} [1000]
(2) 关于 y y y 轴的投影变换对应的矩阵为
[ 0 0 0 1 ] \begin{bmatrix} 0 & 0\\ 0 & 1 \end{bmatrix} [0001]
(3) 关于直线 y = k x y=kx y=kx 的投影变换对应的矩阵为
1 k 2 + 1 [ 1 k k k 2 ] \frac{1}{\sqrt{k^2+1}}\begin{bmatrix} 1 & k\\ k & k^2 \end{bmatrix} k2+1 1[1kkk2]

在这里插入图片描述

平移变换:形如 ( x , y ) ↦ ( x + h , y + k ) (x,y)\mapsto (x+h,y+k) (x,y)(x+h,y+k) 的平移变换并不是线性变换,我们无法直接使用矩阵向量乘法。对此可以引入齐次坐标:平面内的每个点 ( x , y ) (x,y) (x,y) 都可以对应于空间中的点 ( x , y , 1 ) (x,y,1) (x,y,1) 。平移变换可以用齐次坐标写成变换 T : ( x , y , 1 ) ↦ ( x + h , y + k , 1 ) T:(x,y,1)\mapsto (x+h,y+k,1) T:(x,y,1)(x+h,y+k,1),对应的矩阵为
[ 1 0 h 0 1 k 0 0 1 ] \begin{bmatrix} 1 & 0 & h \\ 0 & 1 & k \\ 0 & 0 & 1 \end{bmatrix} 100010hk1

在这里插入图片描述

复合变换与矩阵乘法

平面内任意一向量,依次做旋转变换 R θ 1 : [ cos ⁡ θ 1 − sin ⁡ θ 1 sin ⁡ θ 1 cos ⁡ θ 1 ] R_{\theta_1}:\begin{bmatrix} \cos{\theta_1} & -\sin{\theta_1}\\ \sin{\theta_1} & \cos{\theta_1} \end{bmatrix} Rθ1:[cosθ1sinθ1sinθ1cosθ1] R θ 2 : [ cos ⁡ θ 2 − sin ⁡ θ 2 sin ⁡ θ 2 cos ⁡ θ 2 ] R_{\theta_2}:\begin{bmatrix} \cos{\theta_2} & -\sin{\theta_2}\\ \sin{\theta_2} & \cos{\theta_2} \end{bmatrix} Rθ2:[cosθ2sinθ2sinθ2cosθ2]

在这里插入图片描述

很显然最终作用的效果可以用一个变换 R θ 1 + θ 2 R_{\theta_1+\theta_2} Rθ1+θ2 来表示,对应的矩阵为
[ cos ⁡ ( θ 1 + θ 2 ) − sin ⁡ ( θ 1 + θ 2 ) sin ⁡ ( θ 1 + θ 2 ) cos ⁡ ( θ 1 + θ 2 ) ] \begin{bmatrix} \cos{(\theta_1+\theta_2)} & -\sin{(\theta_1+\theta_2)}\\ \sin{(\theta_1+\theta_2)} & \cos{(\theta_1+\theta_2)} \end{bmatrix} [cos(θ1+θ2)sin(θ1+θ2)sin(θ1+θ2)cos(θ1+θ2)]
旋转变换 R θ 1 + θ 2 R_{\theta_1+\theta_2} Rθ1+θ2仍然是线性变换。

一般地,设矩阵 A = [ a 1 b 1 c 1 d 1 ] , B = [ a 2 b 2 c 2 d 2 ] A=\begin{bmatrix}a_1 & b_1\\ c_1 & d_1\end{bmatrix},B=\begin{bmatrix}a_2 & b_2\\ c_2 & d_2\end{bmatrix} A=[a1c1b1d1],B=[a2c2b2d2],他们对应的线性变换分别为 f f f g g g

平面上任意一个向量 v = [ x y ] \mathbf v=\begin{bmatrix} x \\ y \end{bmatrix} v=[xy] 依次做变换 g g g f f f ,其作用效果为
f ( g ( v ) ) = A ( B v ) f(g(\mathbf v))=A(B\mathbf v) f(g(v))=A(Bv)

Grant:线性变换的本质主要在于追踪基向量变换后的位置。

接下来,我们追踪变换过程中基向量的位置。由矩阵向量乘法的定义知道,基向量 i , j \mathbf i,\mathbf j i,j 经过矩阵 B B B 变换后(第一次变换)的位置为
B i = [ a 2 c 2 ] , B j = [ b 2 d 2 ] B\mathbf i=\begin{bmatrix}a_2\\c_2\end{bmatrix},\quad B\mathbf j=\begin{bmatrix}b_2\\d_2\end{bmatrix} Bi=[a2c2],Bj=[b2d2]
基向量 B i , B j B\mathbf i,B\mathbf j Bi,Bj 又经过矩阵 A A A 变换后的最终位置为
i ′ : [ a 1 b 1 c 1 d 1 ] [ a 2 c 2 ] = a 2 [ a 1 c 1 ] + c 2 [ b 1 d 1 ] = [ a 1 a 2 + b 1 c 2 c 1 a 2 + d 1 c 2 ] j ′ : [ a 1 b 1 c 1 d 1 ] [ b 2 d 2 ] = b 2 [ a 1 c 1 ] + d 2 [ b 1 d 1 ] = [ a 1 b 2 + b 1 d 2 c 1 b 2 + d 1 d 2 ] \mathbf i':\begin{bmatrix}a_1 & b_1\\ c_1 & d_1\end{bmatrix} \begin{bmatrix}a_2\\ c_2\end{bmatrix}= a_2\begin{bmatrix}a_1\\ c_1\end{bmatrix}+ c_2\begin{bmatrix}b_1\\d_1\end{bmatrix}= \begin{bmatrix}a_1a_2+b_1c_2 \\ c_1a_2+d_1c_2\end{bmatrix} \\ \mathbf j':\begin{bmatrix}a_1 & b_1\\ c_1 & d_1\end{bmatrix} \begin{bmatrix}b_2\\ d_2\end{bmatrix}= b_2\begin{bmatrix}a_1\\ c_1\end{bmatrix}+ d_2\begin{bmatrix}b_1\\d_1\end{bmatrix}= \begin{bmatrix}a_1b_2+b_1d_2\\c_1b_2+d_1d_2\end{bmatrix} i:[a1c1b1d1][a2c2]=a2[a1c1]+c2[b1d1]=[a1a2+b1c2c1a2+d1c2]j:[a1c1b1d1][b2d2]=b2[a1c1]+d2[b1d1]=[a1b2+b1d2c1b2+d1d2]
从而,对任意向量 v = [ x y ] \mathbf v=\begin{bmatrix} x \\ y \end{bmatrix} v=[xy] 依次做变换 B B B A A A ,其总体作用效果为
A ( B v ) = x i ′ + y j ′ = [ a 1 a 2 + b 1 c 2 a 1 b 2 + b 1 d 2 c 1 a 2 + d 1 c 2 c 1 b 2 + d 1 d 2 ] [ x y ] A(B\mathbf v)=x\mathbf i'+y\mathbf j'=\begin{bmatrix}a_1a_2+b_1c_2 & a_1b_2+b_1d_2\\ c_1a_2+d_1c_2 & c_1b_2+d_1d_2\end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} A(Bv)=xi+yj=[a1a2+b1c2c1a2+d1c2a1b2+b1d2c1b2+d1d2][xy]
这也是一个线性变换,我们称为复合变换(composite transformation),记为 f ∘ g f\circ g fg

在此,我们定义复合变换 f ∘ g f\circ g fg 为矩阵 A , B A,B A,B 的乘积,记为
A B = [ a 1 b 1 c 1 d 1 ] [ a 2 b 2 c 2 d 2 ] = [ a 1 a 2 + b 1 c 2 a 1 b 2 + b 1 d 2 c 1 a 2 + d 1 c 2 c 1 b 2 + d 1 d 2 ] AB=\begin{bmatrix}a_1 & b_1\\ c_1 & d_1\end{bmatrix} \begin{bmatrix}a_2 & b_2\\ c_2 & d_2\end{bmatrix}= \begin{bmatrix}a_1a_2+b_1c_2 & a_1b_2+b_1d_2\\ c_1a_2+d_1c_2 & c_1b_2+d_1d_2\end{bmatrix} AB=[a1c1b1d1][a2c2b2d2]=[a1a2+b1c2c1a2+d1c2a1b2+b1d2c1b2+d1d2]

注意:矩阵乘积的次序与复合变换相同,从右向左相继作用。

由定义易知,对任意向量 v \mathbf v v
( A B ) v = A ( B v ) (AB)\mathbf v=A(B\mathbf v) (AB)v=A(Bv)

矩阵的定义

接下来,我们将矩阵的概念推广到高维空间。高维线性空间中的变换与二维空间中的变换类似。

矩阵: m × n m\times n m×n 个数按一定次序排成的数表称为矩阵
[ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] \begin{bmatrix} a_{11}&a_{12}&\cdots&a_{1n} \\ a_{21}&a_{22}&\cdots&a_{2n} \\ \vdots&\vdots&\ddots&\vdots \\ a_{m1}&a_{m2}&\cdots&a_{mn} \\ \end{bmatrix} a11a21am1a12a22am2a1na2namn
常用大写英文字母表示矩阵,如 A A A A m × n A_{m× n} Am×n。矩阵中的每个数 a i j a_{ij} aij 称为它的元素(entry),有时矩阵也记作 ( a i j ) (a_{ij}) (aij) ( a i j ) m × n (a_{ij})_{m× n} (aij)m×n 。根据矩阵的元素所属的数域,可以将矩阵分为复矩阵和实矩阵。

几种特殊的矩阵

  1. 元素全为零的矩阵称为零矩阵(zero matrix),记作 O O O
  2. 只有一行的矩阵称为行矩阵(row matrix)或行向量;只有一列的矩阵称为列矩阵(column matrix)或列向量。行(列)矩阵通常用小写黑体字母表示,如 a , x \mathbf a,\mathbf x a,x
  3. 当行数和列数相等时的矩阵 A n × n A_{n\times n} An×n 称为** n n n 阶方阵**(n-order square matrix)。
  4. 不在主对角线上的元素全为零的方阵称为对角阵(diagonal matrix),记作 d i a g ( a 1 , a 2 , ⋯ , a n ) \mathrm{diag}(a_1,a_2,\cdots,a_n) diag(a1,a2,,an)
  5. 主对角线上的元素全为1的对角阵,称为单位阵(identity matrix)。记 n n n 阶单位阵记作 E n E_n En I n I_n In

矩阵的线性运算:因为矩阵 A m × n A_{m\times n} Am×n 的各列是 m m m维向量,写作 A = [ a 1 a 2 ⋯ a n ] A=\begin{bmatrix}\mathbf a_1&\mathbf a_2&\cdots&\mathbf a_n\end{bmatrix} A=[a1a2an] ,因此矩阵可看作向量集,向量的线性运算自然推广到矩阵。

设矩阵 A = ( a i j ) A=(a_{ij}) A=(aij) B = ( b i j ) B=(b_{ij}) B=(bij)

  1. 他们的对应元素完全相同 a i j = b i j a_{ij}=b_{ij} aij=bij,则称矩阵 A A A B B B 相等,记作 A = B A=B A=B
  2. 矩阵的加法定义为 A + B = ( a i j + b i j ) A+B=(a_{ij}+b_{ij}) A+B=(aij+bij)
  3. 矩阵的数乘定义为 k A = ( k a i j ) kA=(ka_{ij}) kA=(kaij)

{% label 性质 orange %}:线性运算满足以下性质

  1. 加法交换律: A + B = B + A A+B=B+A A+B=B+A
  2. 加法结合律: A + ( B + C ) = ( A + B ) + C A+(B+C)=(A+B)+C A+(B+C)=(A+B)+C
  3. 零矩阵: O + A = A O+A=A O+A=A
  4. 负矩阵: A + ( − A ) = O A+(-A)=O A+(A)=O
  5. 数乘结合律: k ( l A ) = ( k l ) A k(lA)=(kl)A k(lA)=(kl)A
  6. 数乘分配律: k ( A + B ) = k A + k B k(A+B)=kA+kB k(A+B)=kA+kB
  7. 数乘分配律: ( k + l ) A = k A + l A (k+l)A=kA+lA (k+l)A=kA+lA
  8. 数乘单位元: 1 A = A 1A=A 1A=A

矩阵向量的乘法: 矩阵与向量的乘法来源于线性变换,它有着直观的、深刻的几何背景。设 m × n m\times n m×n 维矩阵 A = ( a i j ) A=(a_{ij}) A=(aij) n n n维向量 v = ( x 1 , x 2 , ⋯ , x n ) T \mathbf v=(x_1,x_2,\cdots,x_n)^T v=(x1,x2,,xn)T 的乘积
[ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] [ x 1 x 2 ⋮ x n ] = x 1 [ a 11 a 21 ⋮ a m 1 ] + ⋯ + x n [ a 1 n a 2 n ⋮ a m n ] = [ ∑ j = 1 n a 1 j x j ∑ j = 1 n a 2 j x j ⋮ ∑ j = 1 n a m j x j ] \begin{bmatrix} a_{11}&a_{12}&\cdots&a_{1n} \\ a_{21}&a_{22}&\cdots&a_{2n} \\ \vdots&\vdots&\ddots&\vdots \\ a_{m1}&a_{m2}&\cdots&a_{mn} \\ \end{bmatrix} \begin{bmatrix}x_1\\x_2\\\vdots\\x_n\end{bmatrix}= x_1\begin{bmatrix}a_{11}\\a_{21}\\\vdots\\a_{m1}\end{bmatrix}+\cdots+ x_n\begin{bmatrix}a_{1n}\\a_{2n}\\\vdots\\a_{mn}\end{bmatrix}= \begin{bmatrix}\sum_{j=1}^na_{1j}x_j\\\sum_{j=1}^na_{2j}x_j\\\vdots\\\sum_{j=1}^na_{mj}x_j\end{bmatrix} a11a21am1a12a22am2a1na2namn x1x2xn =x1 a11a21am1 ++xn a1na2namn = j=1na1jxjj=1na2jxjj=1namjxj
一般地, m × n m\times n m×n 维的矩阵,表示将 n n n 维空间中的向量映射到 m m m 维空间中。矩阵的第 j j j列表示第 j j j 个基向量变换后的坐标。

矩阵乘法:矩阵与矩阵乘法来源于复合线性变换。设矩阵 A = ( a i j ) m × n A=(a_{ij})_{m\times n} A=(aij)m×n B = ( b i j ) n × p B=(b_{ij})_{n\times p} B=(bij)n×p,向量 v = ( x 1 , x 2 , ⋯ , x p ) \mathbf v=(x_1,x_2,\cdots,x_p) v=(x1,x2,,xp) ,用 b 1 , b 2 , ⋯ , b p \mathbf b_1,\mathbf b_2,\cdots,\mathbf b_p b1,b2,,bp表示矩阵 B B B 的各列,则
B v = x 1 b 1 + x 2 b 2 + ⋯ + x p b p B\mathbf v=x_1\mathbf b_1+x_2\mathbf b_2+\cdots+x_p\mathbf b_p Bv=x1b1+x2b2++xpbp
由线性变换的性质
A ( B v ) = A ( x 1 b 1 ) + A ( x 2 b 2 ) + ⋯ + A ( x p b p ) = x 1 A b 1 + x 2 A b 2 + ⋯ + x p A b p = [ A b 1 A b 2 ⋯ A b p ] v \begin{aligned} A(B\mathbf v)&=A(x_1\mathbf b_1)+A(x_2\mathbf b_2)+\cdots+A(x_p\mathbf b_p) \\ &=x_1A\mathbf b_1+x_2A\mathbf b_2+\cdots+x_pA\mathbf b_p \\ &=\begin{bmatrix}A\mathbf b_1&A\mathbf b_2&\cdots&A\mathbf b_p\end{bmatrix}\mathbf v \end{aligned} A(Bv)=A(x1b1)+A(x2b2)++A(xpbp)=x1Ab1+x2Ab2++xpAbp=[Ab1Ab2Abp]v
于是可定义矩阵的乘积 A B AB AB m × p m\times p m×p 矩阵
A B = A [ b 1 b 2 ⋯ b p ] = [ A b 1 A b 2 ⋯ A b p ] AB=A\begin{bmatrix}\mathbf b_1&\mathbf b_2&\cdots&\mathbf b_p\end{bmatrix}= \begin{bmatrix}A\mathbf b_1&A\mathbf b_2&\cdots&A\mathbf b_p\end{bmatrix} AB=A[b1b2bp]=[Ab1Ab2Abp]
矩阵 A A A的列数必须和 B B B 的行数相等,乘积才有意义 。之前定义的矩阵向量乘法是矩阵乘法的特例。通常,更方便的方法是用元素定义矩阵乘法。设乘积 A B = ( c i j ) m × p AB=(c_{ij})_{m× p} AB=(cij)m×p。则元素
c i j = a i 1 b 1 j + a i 2 b 2 j + ⋯ + a i p b p j c_{ij}=a_{i1}b_{1j}+a_{i2}b_{2j}+\cdots+a_{ip}b_{pj} cij=ai1b1j+ai2b2j++aipbpj
{% label 性质 orange %}:矩阵乘法满足以下性质

  1. 矩阵乘法满足结合率: A ( B C ) = ( A B ) C A(BC)=(AB)C A(BC)=(AB)C
  2. 矩阵乘法满足左分配律: A ( B + C ) = A B + A C A(B+C)=AB+AC A(B+C)=AB+AC
  3. 矩阵乘法满足右分配律: ( B + C ) A = B A + C A (B+C)A=BA+CA (B+C)A=BA+CA
  4. 矩阵乘法满足数乘分配律: k ( A B ) = ( k A ) B = A ( k B ) k(AB)=(kA)B=A(kB) k(AB)=(kA)B=A(kB)
  5. 矩阵乘法单位元: I A = A I = A IA=AI=A IA=AI=A

证明:(1) 可从矩阵乘法的定义证明满足结合率。从线性变换角度来看,对于复合变换 A ( B C ) A(BC) A(BC) ( A B ) C (AB)C (AB)C 是同样的变换,且依次作用的顺序并不会发生改变,变换的最终结果自然不变。
v → C C v → B B C v → A A B C v \mathbf v\xrightarrow{C}C\mathbf v\xrightarrow{B}BC\mathbf v\xrightarrow{A}ABC\mathbf v vC CvB BCvA ABCv

注意:

  1. 矩阵乘法不满足交换率,即一般情况下 A B ≠ B A AB\neq BA AB=BA
  2. 矩阵乘法不满足消去率,即若 A B = A C AB=AC AB=AC,不能推出 B = C B=C B=C ;同样由 A B = O AB=O AB=O,不能推出 A = O A=O A=O B = O B=O B=O

证明:(1) 一般地,复合变换 f ∘ g ≠ g ∘ f f\circ g\neq g\circ f fg=gf ,自然 A B ≠ B A AB\neq BA AB=BA,矩阵乘法不满足交换率。
(2) 可举例证明矩阵乘法不满足消去率

设矩阵
A = [ 0 1 0 0 0 1 0 0 1 ] , B = [ 0 0 1 0 0 0 0 0 0 ] A=\begin{bmatrix}0&1&0\\ 0&0&1\\ 0&0&1\end{bmatrix},\quad B=\begin{bmatrix}0&0&1\\ 0&0&0\\ 0&0&0\end{bmatrix} A= 000100011 ,B= 000000100
则有
A B = [ 0 1 0 0 0 1 0 0 1 ] [ 0 0 1 0 0 0 0 0 0 ] = [ 0 0 0 0 0 0 0 0 0 ] = O B A = [ 0 0 1 0 0 0 0 0 0 ] [ 0 1 0 0 0 1 0 0 1 ] = [ 0 0 1 0 0 0 0 0 0 ] ≠ O AB=\begin{bmatrix}0&1&0\\ 0&0&1\\ 0&0&1\end{bmatrix} \begin{bmatrix}0&0&1\\ 0&0&0\\ 0&0&0\end{bmatrix}= \begin{bmatrix}0&0&0\\ 0&0&0\\ 0&0&0\end{bmatrix}=O \\ BA=\begin{bmatrix}0&0&1\\ 0&0&0\\ 0&0&0\end{bmatrix} \begin{bmatrix}0&1&0\\ 0&0&1\\ 0&0&1\end{bmatrix}= \begin{bmatrix}0&0&1\\ 0&0&0\\ 0&0&0\end{bmatrix}\neq O AB= 000100011 000000100 = 000000000 =OBA= 000000100 000100011 = 000000100 =O

列空间与基

定义:为方便使用,先介绍几个简单的定义

  1. 线性变换是一种映射,称变换后的向量 T ( v ) T(\mathbf v) T(v) 为向量 v \mathbf v v 在映射 T T T 下的,而称 v \mathbf v v T ( v ) T(\mathbf v) T(v) 在映射 T T T 下的原像
  2. 线性变换 T T T 的像集 T ( V ) T(V) T(V)是一个线性空间,称为线性变换 T T T值域,记作
    range ( T ) = { T ( v ) ∣ v ∈ V } \text{range}(T)=\{T(\mathbf v)\mid\mathbf v\in V\} range(T)={T(v)vV}
  3. 在前面几节的分析中,我们始终将矩阵的列看成是向量。而这些列向量所张成的空间,称为列空间,若 A = ( a 1 , a 2 , ⋯ , a n ) A=(\mathbf a_1,\mathbf a_2,\cdots,\mathbf a_n) A=(a1,a2,,an)
    col  A = span { a 1 , a 2 , ⋯ , a n } \text{col }A=\text{span}\{\mathbf a_1,\mathbf a_2,\cdots,\mathbf a_n\} col A=span{a1,a2,,an}

我们已经知道,变换后的向量 A v A\mathbf v Av 是变换后的基向量以同样的系数线性组合,而矩阵的列就是基向量变换之后的位置。因此,矩阵 A A A 线性变换后的空间即是矩阵 A A A 的列空间
col  A = range  A = { A v ∣ v ∈ V } \text{col }A=\text{range }A=\{A\mathbf v\mid\mathbf v\in V\} col A=range A={AvvV}
定理:矩阵 A A A 的主元列构成 col  A \text{col }A col A 的一组基。

下面两个例子给出对列空间求基的简单算法。

例1:求 Col  B \text{Col }B Col B 的一组基,其中
B = ( b 1 , b 2 , ⋯ , b n ) = [ 1 4 0 2 0 0 0 1 − 1 0 0 0 0 0 1 0 0 0 0 0 ] B=(\mathbf b_1,\mathbf b_2,\cdots,\mathbf b_n)=\begin{bmatrix}1&4&0&2&0\\ 0&0&1&-1&0\\ 0&0&0&0&1\\0&0&0&0&0\end{bmatrix} B=(b1,b2,,bn)= 10004000010021000010
事实上, B B B 的每个非主元列都是主元列的线性组合 b 2 = 4 b 1 , b 4 = 2 b 1 − b 3 \mathbf b_2=4\mathbf b_1,\mathbf b_4=2\mathbf b_1-\mathbf b_3 b2=4b1,b4=2b1b3 且主元列时线性无关的,所以主元列构成列空间的一组基 col  B = span  { b 1 , b 3 , b 5 } \text{col }B=\text{span }\{\mathbf b_1,\mathbf b_3,\mathbf b_5\} col B=span {b1,b3,b5}

当矩阵不是阶梯型矩阵时,回顾矩阵 A = ( a 1 , a 2 , ⋯ , a n ) A=(\mathbf a_1,\mathbf a_2,\cdots,\mathbf a_n) A=(a1,a2,,an) 中列向量间的线性关系都可以用方程 A x = 0 A\mathbf x=0 Ax=0 的形式刻画。当 A A A 被行简化为阶梯型矩阵 B = ( b 1 , b 2 , ⋯ , b n ) B=(\mathbf b_1,\mathbf b_2,\cdots,\mathbf b_n) B=(b1,b2,,bn) 时,即存在可逆矩阵 P P P 使 B = P A B=PA B=PA 。若 B B B 的列向量线性相关,即存在系数 x \mathbf x x 使得 B x = 0 B\mathbf x=0 Bx=0 ,即
x 1 b 1 + x 2 b 2 + ⋯ + x n b n = 0 x_1\mathbf b_1+x_2\mathbf b_2+\cdots+x_n\mathbf b_n=0 x1b1+x2b2++xnbn=0
同样的系数 x \mathbf x x 也适用于矩阵 A A A 的列向量, A x = P − 1 B x = 0 A\mathbf x=P^{-1}B\mathbf x=0 Ax=P1Bx=0,即
x 1 a 1 + x 2 a 2 + ⋯ + x n a n = 0 x_1\mathbf a_1+x_2\mathbf a_2+\cdots+x_n\mathbf a_n=0 x1a1+x2a2++xnan=0
综上,即矩阵 A A A的列与阶梯型矩阵 B B B 的列具有完全相同的线性相关关系。

例2:
A = ( a 1 , a 2 , ⋯ , a n ) = [ 1 4 0 2 − 1 3 12 1 5 5 2 8 1 3 2 5 20 2 8 8 ] A=(\mathbf a_1,\mathbf a_2,\cdots,\mathbf a_n)=\begin{bmatrix}1&4&0&2&-1\\ 3&12&1&5&5\\ 2&8&1&3&2\\5&20&2&8&8\end{bmatrix} A=(a1,a2,,an)= 1325412820011225381528
已知矩阵 A A A 行等价于上例中的矩阵 B B B ,求 Col  A \text{Col }A Col A 的一组基。

由于上例中 b 2 = 4 b 1 , b 4 = 2 b 1 − b 3 \mathbf b_2=4\mathbf b_1,\mathbf b_4=2\mathbf b_1-\mathbf b_3 b2=4b1,b4=2b1b3 ,相关关系完全适用于矩阵 A A A 的列向量 a 2 = 4 a 1 , a 4 = 2 a 1 − a 3 \mathbf a_2=4\mathbf a_1,\mathbf a_4=2\mathbf a_1-\mathbf a_3 a2=4a1,a4=2a1a3 。于是线性无关集 a 1 , a 3 , a 5 \mathbf a_1,\mathbf a_3,\mathbf a_5 a1,a3,a5 Col  A \text{Col }A Col A 的一组基 col  A = span  { a 1 , a 3 , a 5 } \text{col }A=\text{span }\{\mathbf a_1,\mathbf a_3,\mathbf a_5\} col A=span {a1,a3,a5}

注意:阶梯形矩阵的主元列通常不在原矩阵的列空间中。

矩阵的秩

矩阵的秩就是列空间的维度,记作 rank  A = dim ⁡ ( col  A ) \text{rank }A=\dim(\text{col }A) rank A=dim(col A)

前面介绍的都是方阵,表示向量空间到自身的映射。下面简单说下非方阵的映射关系。

一般地, m × n m\times n m×n 维的矩阵,表示将 n n n 维空间中的向量映射到 m m m 维空间中。矩阵的第 j j j列表示第 j j j 个基向量变换后的坐标。例如:

3 × 2 3\times 2 3×2 维矩阵是把二维空间映射到三维空间上,因为矩阵有两列,说明输入空间有两个基向量,三行表示每一个基向量在变换后用三个独立的坐标来描述。
[ 1 − 1 3 2 0 3 ] [ x y ] = [ 1 3 0 ] x + [ − 1 2 3 ] y \begin{bmatrix}1&-1\\3&2\\0&3\end{bmatrix} \begin{bmatrix}x\\y\end{bmatrix}= \begin{bmatrix}1\\3\\0\end{bmatrix}x+ \begin{bmatrix}-1\\2\\3\end{bmatrix}y 130123 [xy]= 130 x+ 123 y

在这里插入图片描述

2 × 3 2\times 3 2×3 维矩阵是把三维空间映射到二维空间上,因为矩阵有三列,说明输入空间有三个基向量,二行表示每一个基向量在变换后用二个独立的坐标来描述。
[ 2 2 1 1 0 − 1 ] [ x y z ] = [ 2 1 ] x + [ 2 0 ] y + [ 1 − 1 ] z \begin{bmatrix}2&2&1\\1&0&-1\end{bmatrix} \begin{bmatrix}x\\y\\z\end{bmatrix}= \begin{bmatrix}2\\1\end{bmatrix}x+ \begin{bmatrix}2\\0\end{bmatrix}y+ \begin{bmatrix}1\\-1\end{bmatrix}z [212011] xyz =[21]x+[20]y+[11]z

在这里插入图片描述

若矩阵的秩等于列数,则称为满秩矩阵(full rank matrix),零向量一定在列空间内,满秩变换中,唯一能落在原点的就是零向量自身。满秩矩阵的列即为列空间的基。

对于非满秩矩阵,意味着该线性变换会将空间压缩到一个更低维的空间,通俗来讲,就是会有一系列直线上不同方向的向量压缩为原点。

由此可得,秩可以用来描述线性变换对空间的压缩程度

逆变换与逆矩阵

我们已经知道了矩阵与线性变换中的对应关系,试想一下,将变换后的向量还原到初始状态。

在这里插入图片描述

逆矩阵:对于 n n n 阶方阵 A A A ,如果存在 n n n 阶方阵 B B B ,使得
A B = B A = I AB=BA=I AB=BA=I
则称矩阵 A A A 可逆(invertible), B B B A A A逆矩阵。实际上, A A A 的逆矩阵是唯一的,记为 A − 1 A^{-1} A1。因为,若 B , C B,C B,C 都是 A A A 的逆矩阵,则

B = ( C A ) B = C ( A B ) = C B=(CA)B=C(AB)=C B=(CA)B=C(AB)=C

不可逆矩阵有时称为奇异矩阵,而可逆矩阵也称为非奇异矩阵

{% label 性质 orange %}:逆矩阵满足下列性质

  1. ( A − 1 ) − 1 = A (A^{-1})^{-1}=A (A1)1=A
  2. ( k A ) − 1 = 1 k A − 1 , ( k ≠ 0 ) (kA)^{-1}=\dfrac{1}{k}A^{-1},\quad(k\neq0) (kA)1=k1A1,(k=0)
  3. ( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)1=B1A1
  4. ( A T ) − 1 = ( A − 1 ) T (A^T)^{-1}=(A^{-1})^T (AT)1=(A1)T

证明:(性质3)若方阵 A , B A,B A,B 都可逆,则有
( A B ) ( B − 1 A − 1 ) = ( B − 1 A − 1 ) ( A B ) = I (AB)(B^{-1}A^{-1})=(B^{-1}A^{-1})(AB)=I (AB)(B1A1)=(B1A1)(AB)=I
因此 ( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)1=B1A1

从变换的角度考虑,复合变换的逆 ( f ∘ g ) − 1 = g − 1 ∘ f − 1 (f\circ g)^{-1}=g^{-1}\circ f^{-1} (fg)1=g1f1 ,很容易理解。

在这里插入图片描述

(性质4)
I = ( A A − 1 ) T = ( A − 1 ) T A T , I = ( A − 1 A ) T = A T ( A − 1 ) T I=(AA^{-1})^T=(A^{-1})^TA^T,\quad I=(A^{-1}A)^T=A^T(A^{-1})^T I=(AA1)T=(A1)TAT,I=(A1A)T=AT(A1)T
因此 ( A T ) − 1 = ( A − 1 ) T (A^T)^{-1}=(A^{-1})^T (AT)1=(A1)T

相关文章:

线性代数的本质(二)——线性变换与矩阵

文章目录 线性变换与矩阵线性变换与二阶方阵常见的线性变换复合变换与矩阵乘法矩阵的定义列空间与基矩阵的秩逆变换与逆矩阵 线性变换与矩阵 线性变换与二阶方阵 本节从二维平面出发学习线性代数。通常选用平面坐标系 O x y Oxy Oxy ,基向量为 i , j \mathbf i,…...

JavaScript获取字符串的字节长度

概要 提示:大家都知道,获取字符串的长度可用length来获取。 那么获取这段字符串的字节数呢?英文字母肯定lenght和字节数都一样:都是1而中文lenght1,字节数2因此,需要作的就是把中文字符的字节数计算出来。 …...

[2023.09.13]: Rust Lang,避不开的所有权问题

Rust的所有权问题,在我学Rust的时候就跳过了,因为我知道这玩意儿没有场景就不好理解。没想到场景很快就出现了。 在开发Yew应用组件的时候,涉及到了事件,闭包,自然就引出了所有权问题。 话不多说,下面让我们…...

Redux中间件源码解析与实现

基本介绍 本文中涉及到的关键npm包的版本信息如下: react 的版本为18.2.0 redux的版本为4.1.2 redux-thunk版本为2.4.2 redux-promise版本为0.6.0 redux-logger版本为3.0.6 在Redux源码解析与实现(一)Redux源码解析与实现(二&…...

关于rsync用不了之后

1.尝试找出rsync使用错误原因: 我遇见一个问题:rsync:read errors mapping:communication error on send (70),我查了一下这个问题很大可能是网络链接导致的,然后我用nslookup指令查看了/train2…...

由一个多线程并发保存而引发的思考

1. 问题描述 问题描述,现A表(用户查看实验的次数)有user_id和exp_id两个字段,其中user_id加exp_id不唯一。B表有user_id,exp_id以及exp_num三个字段,其中user_id加exp_id唯一(表中未建唯一索引)。 现需要将A表的数据同步到B表,单机模式通过定时任务同步。A表的数据有…...

python-vlc

文章目录 关于 python-vlc安装使用关于 python-vlc Python vlc bindings github : https://github.com/oaubert/python-vlcPython bindings (ctypes-based) for VLC http://olivieraubert.net/vlc/python-ctypes/关于 VLC 可参考 macOS - 安装使用 VLC https://blog.csdn.net/…...

2023长城杯 web部分题目(seekingeasy_extension)

seeking 下载题目附件得到&#xff1a; <?php error_reporting(0); header("HINT:POST n range(1,10)");$image $_GET[image]; echo "这里什么也没有&#xff0c;或许吧。"; $allow range(1, 10); shuffle($allow); if (($_POST[n] $allow[0])) …...

2-1 张量数据结构

张量概念 张量是什么&#xff1f; 单个元素叫标量&#xff08;scalar&#xff09;&#xff0c;一个序列叫向量&#xff08;vector&#xff09;&#xff0c;多个序列组成的平面叫矩阵&#xff08;matrix&#xff09;&#xff0c;多个平面组成的立方体叫张量&#xff08;tensor&…...

QSqlQuery查询语句

SqlQuery 封装了在 QSqlDatabase 上执行的 SQL 查询中创建、导航和检索数据所涉及的功能。 可用于执行 DML&#xff08;数据操作语言&#xff09;语句&#xff0c;如 SELECT、INSERT、UPDATE 和 DELETE&#xff0c; 以及 DDL&#xff08;数据定义语言&#xff09;语句&#xff…...

用c语言编写出三底模型

以下是一个用C语言实现三底模型的示例代码。这个程序通过循环遍历输入的股票数据&#xff0c;判断是否出现三底形态&#xff0c;如果是&#xff0c;则输出买入信号&#xff0c;否则输出卖出信号。 c语言 #include <stdio.h> #include <stdlib.h> // 判断是否出现…...

15 Python使用MySQL

概述 在上一节&#xff0c;我们介绍了如何在Python中使用网络&#xff0c;包括&#xff1a;套接字编程、socketserver等内容。在这一节&#xff0c;我们将介绍如何在Python中使用MySQL。MySQL是最流行的关系型数据库管理系统之一&#xff0c;由瑞典MySQL AB公司开发&#xff0c…...

3、Nginx 常用的命令和配置文件

文章目录 3、nginx 常用的命令和配置文件3.1 nginx 常用的命令&#xff1a;3.2 nginx.conf 配置文件3.2.1 地址3.2.2 内容3.2.2 vim不正常退出后再次打开信息提示解决方法 3.3 第一部分&#xff1a;全局块3.4 第二部分&#xff1a;events 块3.4 第三部分&#xff1a;http 块①、…...

python经典百题之兔子出生问题

这是一个经典的 Fibonacci 数列问题&#xff0c;可以通过递归或循环来解决。 递归方法&#xff1a; 由题意可知&#xff0c;第 n 个月的兔子数等于第 n-1 个月的兔子数加上第 n-2 个月的兔子数。设 f(n) 表示第 n 个月的兔子数&#xff0c;则有&#xff1a; f(n) f(n-1) f…...

不定积分的概念和性质

目录 原函数 不定积分 不定积分的几何意义 原函数的存在定理 不定积分的性质 不定积分是微积分的一个关键部分&#xff0c;它涉及到一个函数的不定积分的计算。不定积分可以理解为求一个函数的原函数&#xff0c;也被称为反导数。原函数是一个函数&#xff0c;使得该函数的…...

远程访问服务器JupyterLab的配置方法

远程访问服务器JupyterLab的配置方法 环境及工具注意 基本步骤生成密码生成并修改配置文件*错误&#xff1a;jupyter localhost 已拒绝连接*后台运行jupyter后台关闭 其实就是在服务器运行JupyterLab&#xff0c;然后在本地浏览器访问 环境及工具 服务器&#xff1a;Ubuntu 1…...

Java native 关键字

如你在看 JDK 的源代码的时候&#xff0c;大概率会看到很多方法使用了 native 关键字。 下面是 String 对象 JDK 中的源代码&#xff0c;就带有了一个 native 关键字。 native 是干什么用的 简单来说就是 Java 的 native 方法的实现不是用 Java 实现的&#xff0c;可能在其他…...

【线性代数】沉浸式线性代数在线学习网站

地址&#xff1a;http://immersivemath.com/ila/index.html 这是全球第一本带交互式图形的线性代数教材&#xff0c;作者是 J. Strm, K. strm, and T. Akenine-Mller。 全书一共十章&#xff0c;各章节内容如下&#xff1a; 接下来我将对各章节进行简单的总结&#xff0c;另外…...

Kotlin中特性、数据类、伴生对象、顶层函数

Kotlin中的函数参数和属性声明 在 Kotlin 中&#xff0c;函数参数和属性有不同的声明方式和行为。这些特性使得 Kotlin 代码更加安全、易于理解和维护。 函数参数的只读性 fun sum(a: Int, b: Int): Int {var modifiedA aif (modifiedA > 0) {modifiedA 1}//三元表达式v…...

《PostgreSQL物化视图:创建、维护与应用》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…...

shell脚本之test命令

shell脚本之test命令 数值比较&#xff1a;2. 字符串比较&#xff1a;3. 文件测试&#xff1a;4. 逻辑操作&#xff1a;5. 其他测试&#xff1a; test命令在Shell脚本中用于进行条件测试和条件判断。它用于检查文件、字符串和数值的各种条件&#xff0c;并返回一个状态码&#…...

JAVA设计模式8:装饰模式,动态地将责任附加到对象上,扩展对象的功能

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;3年JAVA全栈开发经验&#xff0c;专注JAVA技术、系统定制、远程指导&#xff0c;致力于企业数字化转型&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;蓝桥云课讲师。 目录 一、什么是装饰模式二、…...

Linux学习之MySQL备份

xtrabackup资源下载 完全备份与恢复 # 1.物理备份与恢复 # 冷备份&#xff0c;需停止数据库服务 适合线下服务器。 [rootmysql50 ~]# systemctl stop mysqld [rootmysql50 ~]# mkdir /bakdir [rootmysql50 ~]# cp -r /var/lib/mysql /bakdir/mysql.bak [rootmysql50 ~]# cd /…...

时序分解 | MATLAB实现北方苍鹰优化算法NGO优化VMD信号分量可视化

时序分解 | MATLAB实现北方苍鹰优化算法NGO优化VMD信号分量可视化 目录 时序分解 | MATLAB实现北方苍鹰优化算法NGO优化VMD信号分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 北方苍鹰优化算法NGO优化VMD&#xff0c;对其分解层数&#xff0c;惩罚因子数做优化…...

分类预测 | Matlab实现RBF-Adaboost多特征分类预测

分类预测 | Matlab实现RBF-Adaboost多特征分类预测 目录 分类预测 | Matlab实现RBF-Adaboost多特征分类预测效果一览基本介绍研究内容程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于RBF-Adaboost数据分类预测&#xff08;Matlab完整程序和数据&#xff09; 2.多特征输入…...

【Java代码规范】阿里编码规约 VS CheckStyle

全文速览&#xff1a; 1、关于代码编码质量2、如何小成本有效管理企业内的编码规范 2.1 阿里编码规约IDE插件2.2 CheckStyle IDE插件 3、如何在代码提交中检验规范 3.1 阿里编码规约配置git precommit check3.2 CheckStyle配置git precommit check3.3 实践 1、关于代码编码质…...

iPhone苹果15手机圆点怎么设置让屏幕上显示出来圆形图标?

iPhone苹果15手机圆点怎么设置让屏幕上显示出来圆形图标&#xff1f; 1、在iPhone苹果手机上找到「设置」并点击打开&#xff1b; 2、在苹果iPhone设置内找到「辅助功能」并点击打开&#xff1b; 3、在苹果iPhone手机辅助功能内的动作交互内找到「触控」并点击打开&#xff1b…...

kibana报错内存溢出问题解决

一、背景&#xff1a; kibana内存溢出&#xff0c;进程被kill掉&#xff0c;导致前端页面访问不到。 报错内容 二、报错原因&#xff1a; 发现是前端 js 报的内存 oom 异常&#xff0c;通过网上资料发现node.js 的默认内存大小为1.4G Node 中通过 JavaScript 使用内存时只能…...

【C语法】1124循环结构

#include <stdio.h> int main(){ //输入一个数。倒叙输出各个位上的数。 //123456 6 5 4 3 2 1 // 1输出个位上的数 %10 // 2将这个数去掉个位上的数。 / 10 // 3当这个数最后变成0时结束 int a 0; printf("请输入一个正整数&#xff1a;"); scanf…...

在PHP8中向数组添加元素-PHP8知识详解

在php8中向数组添加元素有多种方法&#xff0c;在这里主要讲解几个常用的方法&#xff1a;使用方括号[]添加元素、使用array_unshift()函数&#xff0c;向数组的头部添加元素、使用array_push()函数&#xff0c;向数组的尾部添加元素、使用array_splice()函数添加元素。 1、使用…...

长沙第三方网站建设公司/百度站长平台

1.Eclipse的配置 1. 双击Eclipse启动图标&#xff0c;不能正常启动Eclipse 启动不了的原因很多种&#xff0c;这里需要大家从如下几个方面排查&#xff1a; ①. 环境变量是否正确配置&#xff0c;需要在命令行输入javac.exe或java.exe进行检查 ②. 是否正确的安装了JDK和JRE ③…...

广州网站模块建设/今日预测足球比分预测

转载于:https://www.cnblogs.com/zzzzw/p/4996246.html...

wordpress换了空间无法登录密码/近期热点新闻事件

本文是php-internals的读书笔记.概述1) 操作系统直接管理着内存&#xff0c;所以操作系统也需要进行内存管理&#xff0c;计算机中通常都有内存管理单元(MMU) 用于处理CPU对内存的访问。2) 应用程序无法直接调用物理内存&#xff0c; 只能向系统申请内存。向操作系统申请内存空…...

南通制作网站/沈阳沈河seo网站排名优化

1.在网上查找到的一些例子当中&#xff0c;存在new Ext.grid.ColumnModel()这样的操作&#xff0c;在5.0当中这是不允许的&#xff0c;在5.0当中这个已经被设置为私有方法&#xff0c;不允许用户调用&#xff0c;在5.0中我们不需要创建所谓的列模型&#xff0c;只需要在grid中增…...

如何在百度网站收录提交入口/搜狗推广开户

程序员需要多少英语和数学基础&#xff1f;说起转行做程序员&#xff0c;很多朋友就又要问了&#xff1a;程序员是不是英语和数学都特别好&#xff1f;总的来说&#xff0c;根据岗位和等级的不同&#xff0c;所需要的基础也不一样。 英语对于程序员来说&#xff0c;英语的主要…...

带状疱疹的预防措施/深圳seo优化排名

输入n个整数&#xff0c;找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字&#xff0c;则最小的4个数字是1,2,3,4,。 基本思路&#xff1a;建立一个包含K个元素的大顶堆。 注&#xff1a;python中貌似只能直接建小顶堆。 # -*- coding:utf-8 -*- class Solution:def …...