机器学习数学基础:19.线性相关与线性无关
一、线性相关与线性无关的定义
(一)线性相关
想象我们有一组向量,就好比是一群有着不同“力量”和“方向”的小伙伴。给定的向量组 α ⃗ 1 , α ⃗ 2 , ⋯ , α ⃗ m \vec{\alpha}_1, \vec{\alpha}_2, \cdots, \vec{\alpha}_m α1,α2,⋯,αm,如果能找到不全为零的数 k 1 , k 2 , ⋯ , k m k_1, k_2, \cdots, k_m k1,k2,⋯,km,让 k 1 α ⃗ 1 + k 2 α ⃗ 2 + ⋯ + k m α ⃗ m = 0 ⃗ k_1\vec{\alpha}_1 + k_2\vec{\alpha}_2 + \cdots + k_m\vec{\alpha}_m \ = \vec{0} k1α1+k2α2+⋯+kmαm =0成立,那这组向量就是线性相关的。
举个例子,在一个二维平面里,有向量 α ⃗ 1 = ( 1 1 ) \vec{\alpha}_1 \ = \begin{pmatrix}1\\1\end{pmatrix} α1 =(11)和 α ⃗ 2 = ( 2 2 ) \vec{\alpha}_2 \ = \begin{pmatrix}2\\2\end{pmatrix} α2 =(22)。我们试着找一些数让它们的组合等于零向量。嘿,发现当 k 1 = − 2 k_1 \ = -2 k1 =−2, k 2 = 1 k_2 \ = 1 k2 =1的时候(这两个数不全是 0 0 0哦), − 2 ( 1 1 ) + 1 ( 2 2 ) = ( − 2 + 2 − 2 + 2 ) = ( 0 0 ) -2\begin{pmatrix}1\\1\end{pmatrix} + 1\begin{pmatrix}2\\2\end{pmatrix} \ = \begin{pmatrix}-2 + 2\\-2 + 2\end{pmatrix} \ = \begin{pmatrix}0\\0\end{pmatrix} −2(11)+1(22) =(−2+2−2+2) =(00)。这就说明这两个向量之间存在一种“特殊关系”,它们是线性相关的。从直观上看, α ⃗ 2 \vec{\alpha}_2 α2就像是 α ⃗ 1 \vec{\alpha}_1 α1的“双胞胎加强版”,方向完全一样,只是长度不同,所以它们之间不是相互独立的。
(二)线性无关
还是那组向量小伙伴,如果只有当 k 1 = k 2 = ⋯ = k m = 0 k_1 \ = k_2 \ = \cdots \ = k_m \ = 0 k1 =k2 =⋯ =km =0时,才有 k 1 α ⃗ 1 + k 2 α ⃗ 2 + ⋯ + k m α ⃗ m = 0 ⃗ k_1\vec{\alpha}_1 + k_2\vec{\alpha}_2 + \cdots + k_m\vec{\alpha}_m \ = \vec{0} k1α1+k2α2+⋯+kmαm =0,那这组向量就是线性无关的。
比如在平面直角坐标系中的两个单位向量 e ⃗ 1 = ( 1 0 ) \vec{e}_1 \ = \begin{pmatrix}1\\0\end{pmatrix} e1 =(10)和 e ⃗ 2 = ( 0 1 ) \vec{e}_2 \ = \begin{pmatrix}0\\1\end{pmatrix} e2 =(01)。我们来假设一下,要是存在两个数 k 1 k_1 k1和 k 2 k_2 k2,让 k 1 e ⃗ 1 + k 2 e ⃗ 2 = 0 ⃗ k_1\vec{e}_1 + k_2\vec{e}_2 \ = \vec{0} k1e1+k2e2 =0,也就是 k 1 ( 1 0 ) + k 2 ( 0 1 ) = ( k 1 k 2 ) = ( 0 0 ) k_1\begin{pmatrix}1\\0\end{pmatrix} + k_2\begin{pmatrix}0\\1\end{pmatrix} \ = \begin{pmatrix}k_1\\k_2\end{pmatrix} \ = \begin{pmatrix}0\\0\end{pmatrix} k1(10)+k2(01) =(k1k2) =(00),那只能是 k 1 = 0 k_1 \ = 0 k1 =0而且 k 2 = 0 k_2 \ = 0 k2 =0。没有其他非零的数能让这个等式成立,这就表明 e ⃗ 1 \vec{e}_1 e1和 e ⃗ 2 \vec{e}_2 e2是相互独立的,它们组成的向量组就是线性无关的。从几何角度看, e ⃗ 1 \vec{e}_1 e1沿着 x x x轴方向, e ⃗ 2 \vec{e}_2 e2沿着 y y y轴方向,它们相互垂直,谁也不“依赖”谁。
二、从线性方程组角度理解
(一)线性相关
线性相关这件事,其实可以和齐次线性方程组联系起来。我们把向量组 α ⃗ 1 , α ⃗ 2 , ⋯ , α ⃗ m \vec{\alpha}_1, \vec{\alpha}_2, \cdots, \vec{\alpha}_m α1,α2,⋯,αm当作系数矩阵 A A A的列向量,也就是 A = ( α ⃗ 1 , α ⃗ 2 , ⋯ , α ⃗ m ) A \ = (\vec{\alpha}_1, \vec{\alpha}_2, \cdots, \vec{\alpha}_m) A =(α1,α2,⋯,αm)。那么 k 1 α ⃗ 1 + k 2 α ⃗ 2 + ⋯ + k m α ⃗ m = 0 ⃗ k_1\vec{\alpha}_1 + k_2\vec{\alpha}_2 + \cdots + k_m\vec{\alpha}_m \ = \vec{0} k1α1+k2α2+⋯+kmαm =0就相当于齐次线性方程组 A x = 0 Ax \ = 0 Ax =0(这里 x = ( k 1 k 2 ⋮ k m ) x \ = \begin{pmatrix}k_1\\k_2\\\vdots\\k_m\end{pmatrix} x = k1k2⋮km )有非零解。
比如说前面那个线性相关的例子,向量组 α ⃗ 1 = ( 1 1 ) \vec{\alpha}_1 \ = \begin{pmatrix}1\\1\end{pmatrix} α1 =(11)和 α ⃗ 2 = ( 2 2 ) \vec{\alpha}_2 \ = \begin{pmatrix}2\\2\end{pmatrix} α2 =(22),对应的系数矩阵 A = ( 1 2 1 2 ) A \ = \begin{pmatrix}1&2\\1&2\end{pmatrix} A =(1122),齐次线性方程组就是 ( 1 2 1 2 ) ( k 1 k 2 ) = ( 0 0 ) \begin{pmatrix}1&2\\1&2\end{pmatrix}\begin{pmatrix}k_1\\k_2\end{pmatrix} \ = \begin{pmatrix}0\\0\end{pmatrix} (1122)(k1k2) =(00)。我们来解这个方程组,从第一个方程 k 1 + 2 k 2 = 0 k_1 + 2k_2 \ = 0 k1+2k2 =0,可以得到 k 1 = − 2 k 2 k_1 \ = -2k_2 k1 =−2k2。那我们随便让 k 2 = 1 k_2 \ = 1 k2 =1, k 1 k_1 k1就等于 − 2 -2 −2了,这就是一组非零解呀。这就说明这个齐次线性方程组有非零解,也就意味着向量组是线性相关的。
(二)线性无关
线性无关呢,就表示对应的齐次线性方程组仅有零解。同样是由向量组构成的系数矩阵 A A A,齐次线性方程组 A x = 0 Ax \ = 0 Ax =0只有 x = 0 x \ = 0 x =0(也就是 k 1 = k 2 = ⋯ = k m = 0 k_1 \ = k_2 \ = \cdots \ = k_m \ = 0 k1 =k2 =⋯ =km =0)这一个解。
像刚才说的单位向量组 e ⃗ 1 = ( 1 0 ) \vec{e}_1 \ = \begin{pmatrix}1\\0\end{pmatrix} e1 =(10)和 e ⃗ 2 = ( 0 1 ) \vec{e}_2 \ = \begin{pmatrix}0\\1\end{pmatrix} e2 =(01),它们的系数矩阵 A = ( 1 0 0 1 ) A \ = \begin{pmatrix}1&0\\0&1\end{pmatrix} A =(1001),对应的齐次线性方程组 ( 1 0 0 1 ) ( k 1 k 2 ) = ( 0 0 ) \begin{pmatrix}1&0\\0&1\end{pmatrix}\begin{pmatrix}k_1\\k_2\end{pmatrix} \ = \begin{pmatrix}0\\0\end{pmatrix} (1001)(k1k2) =(00)。根据矩阵乘法,很明显只能得到 k 1 = 0 k_1 \ = 0 k1 =0并且 k 2 = 0 k_2 \ = 0 k2 =0,这是这个方程组唯一的解,也就是仅有零解,所以这个向量组是线性无关的。
三、线性相关性的判断方法
(一)根据定义判断
假设有向量组 γ ⃗ 1 , γ ⃗ 2 , ⋯ , γ ⃗ n \vec{\gamma}_1, \vec{\gamma}_2, \cdots, \vec{\gamma}_n γ1,γ2,⋯,γn,我们先假设存在数 k 1 , k 2 , ⋯ , k n k_1, k_2, \cdots, k_n k1,k2,⋯,kn,让 k 1 γ ⃗ 1 + k 2 γ ⃗ 2 + ⋯ + k n γ ⃗ n = 0 ⃗ k_1\vec{\gamma}_1 + k_2\vec{\gamma}_2 + \cdots + k_n\vec{\gamma}_n \ = \vec{0} k1γ1+k2γ2+⋯+knγn =0。然后就像解方程一样,去试着找出 k 1 , k 2 , ⋯ , k n k_1, k_2, \cdots, k_n k1,k2,⋯,kn的值。要是能找到不全为零的数满足这个等式,那这个向量组就是线性相关的;要是只能得到 k 1 = k 2 = ⋯ = k n = 0 k_1 \ = k_2 \ = \cdots \ = k_n \ = 0 k1 =k2 =⋯ =kn =0,那这个向量组就是线性无关的。
举个复杂点的例子,有向量组 γ ⃗ 1 = ( 1 1 0 ) \vec{\gamma}_1 \ = \begin{pmatrix}1\\1\\0\end{pmatrix} γ1 = 110 , γ ⃗ 2 = ( 0 1 1 ) \vec{\gamma}_2 \ = \begin{pmatrix}0\\1\\1\end{pmatrix} γ2 = 011 , γ ⃗ 3 = ( 1 2 1 ) \vec{\gamma}_3 \ = \begin{pmatrix}1\\2\\1\end{pmatrix} γ3 = 121 。设 k 1 γ ⃗ 1 + k 2 γ ⃗ 2 + k 3 γ ⃗ 3 = 0 ⃗ k_1\vec{\gamma}_1 + k_2\vec{\gamma}_2 + k_3\vec{\gamma}_3 \ = \vec{0} k1γ1+k2γ2+k3γ3 =0,也就是 k 1 ( 1 1 0 ) + k 2 ( 0 1 1 ) + k 3 ( 1 2 1 ) = ( k 1 + k 3 k 1 + k 2 + 2 k 3 k 2 + k 3 ) = ( 0 0 0 ) k_1\begin{pmatrix}1\\1\\0\end{pmatrix} + k_2\begin{pmatrix}0\\1\\1\end{pmatrix} + k_3\begin{pmatrix}1\\2\\1\end{pmatrix} \ = \begin{pmatrix}k_1 + k_3\\k_1 + k_2 + 2k_3\\k_2 + k_3\end{pmatrix} \ = \begin{pmatrix}0\\0\\0\end{pmatrix} k1 110 +k2 011 +k3 121 = k1+k3k1+k2+2k3k2+k3 = 000 ,这样就得到了一个方程组 { k 1 + k 3 = 0 k 1 + k 2 + 2 k 3 = 0 k 2 + k 3 = 0 \begin{cases}k_1 + k_3 \ = 0\\k_1 + k_2 + 2k_3 \ = 0\\k_2 + k_3 \ = 0\end{cases} ⎩ ⎨ ⎧k1+k3 =0k1+k2+2k3 =0k2+k3 =0。
我们来解这个方程组,从第一个方程 k 1 = − k 3 k_1 \ = -k_3 k1 =−k3,把它代入第二个方程,就得到 − k 3 + k 2 + 2 k 3 = 0 -k_3 + k_2 + 2k_3 \ = 0 −k3+k2+2k3 =0,也就是 k 2 + k 3 = 0 k_2 + k_3 \ = 0 k2+k3 =0,这和第三个方程是一样的。再把 k 1 = − k 3 k_1 \ = -k_3 k1 =−k3代入第三个方程,能得到 k 2 − k 1 = 0 k_2 - k_1 \ = 0 k2−k1 =0,也就是 k 2 = k 1 k_2 \ = k_1 k2 =k1。最后解得 k 1 = k 2 = k 3 = 0 k_1 \ = k_2 \ = k_3 \ = 0 k1 =k2 =k3 =0,所以这个向量组是线性无关的。
(二)利用矩阵求解判断
我们把向量组里的向量都拿出来,依次作为矩阵 A A A的列向量。然后对矩阵 A A A进行一些操作,也就是初等行变换,把它变成行阶梯形矩阵。这个行阶梯形矩阵中非零行的行数,就是矩阵的秩 r ( A ) r(A) r(A),它表示矩阵里线性无关的行(或列)向量的最大个数。
如果行阶梯形矩阵中非零行的行数(也就是矩阵的秩 r ( A ) r(A) r(A))小于向量的个数 m m m,那就说明向量组是线性相关的;要是 r ( A ) = m r(A) \ = m r(A) =m,那向量组就是线性无关的。
比如说有向量组 δ ⃗ 1 = ( 1 2 3 ) \vec{\delta}_1 \ = \begin{pmatrix}1\\2\\3\end{pmatrix} δ1 = 123 , δ ⃗ 2 = ( 2 4 6 ) \vec{\delta}_2 \ = \begin{pmatrix}2\\4\\6\end{pmatrix} δ2 = 246 , δ ⃗ 3 = ( 3 6 9 ) \vec{\delta}_3 \ = \begin{pmatrix}3\\6\\9\end{pmatrix} δ3 = 369 ,我们把它们构成矩阵 A = ( 1 2 3 2 4 6 3 6 9 ) A \ = \begin{pmatrix}1&2&3\\2&4&6\\3&6&9\end{pmatrix} A = 123246369 。
对它进行初等行变换:
- 先把第二行减去第一行的 2 2 2倍,第三行减去第一行的 3 3 3倍,就得到 ( 1 2 3 0 0 0 0 0 0 ) \begin{pmatrix}1&2&3\\0&0&0\\0&0&0\end{pmatrix} 100200300 。
你看,这个行阶梯形矩阵中非零行的行数是 1 1 1,也就是矩阵的秩 r ( A ) = 1 r(A) \ = 1 r(A) =1,而这里向量的个数 m = 3 m \ = 3 m =3,因为 1 < 3 1 < 3 1<3,所以这个向量组是线性相关的。
四、线性相关性的推论
(一)相关向量组增加向量后仍相关
假如有一个向量组 α ⃗ 1 , α ⃗ 2 , ⋯ , α ⃗ m \vec{\alpha}_1, \vec{\alpha}_2, \cdots, \vec{\alpha}_m α1,α2,⋯,αm是线性相关的,这就好比一群小伙伴里已经存在一些“依赖关系”了。那如果我们再往这个向量组里增加任意数量的向量 α ⃗ m + 1 , α ⃗ m + 2 , ⋯ , α ⃗ m + s \vec{\alpha}_{m + 1}, \vec{\alpha}_{m + 2}, \cdots, \vec{\alpha}_{m + s} αm+1,αm+2,⋯,αm+s,得到的新向量组 α ⃗ 1 , α ⃗ 2 , ⋯ , α ⃗ m , α ⃗ m + 1 , α ⃗ m + 2 , ⋯ , α ⃗ m + s \vec{\alpha}_1, \vec{\alpha}_2, \cdots, \vec{\alpha}_m, \vec{\alpha}_{m + 1}, \vec{\alpha}_{m + 2}, \cdots, \vec{\alpha}_{m + s} α1,α2,⋯,αm,αm+1,αm+2,⋯,αm+s还是线性相关的。
为什么呢?因为原来的向量组线性相关,所以肯定存在不全为零的数 k 1 , k 2 , ⋯ , k m k_1, k_2, \cdots, k_m k1,k2,⋯,km,让 k 1 α ⃗ 1 + k 2 α ⃗ 2 + ⋯ + k m α ⃗ m = 0 ⃗ k_1\vec{\alpha}_1 + k_2\vec{\alpha}_2 + \cdots + k_m\vec{\alpha}_m \ = \vec{0} k1α1+k2α2+⋯+kmαm =0。对于新的向量组,我们可以让增加的这些向量前面的系数 k m + 1 = k m + 2 = ⋯ = k m + s = 0 k_{m + 1} \ = k_{m + 2} \ = \cdots \ = k_{m + s} \ = 0 km+1 =km+2 =⋯ =km+s =0,这样 k 1 α ⃗ 1 + k 2 α ⃗ 2 + ⋯ + k m α ⃗ m + k m + 1 α ⃗ m + 1 + k m + 2 α ⃗ m + 2 + ⋯ + k m + s α ⃗ m + s = 0 ⃗ k_1\vec{\alpha}_1 + k_2\vec{\alpha}_2 + \cdots + k_m\vec{\alpha}_m + k_{m + 1}\vec{\alpha}_{m + 1} + k_{m + 2}\vec{\alpha}_{m + 2} + \cdots + k_{m + s}\vec{\alpha}_{m + s} \ = \vec{0} k1α1+k2α2+⋯+kmαm+km+1αm+1+km+2αm+2+⋯+km+sαm+s =0,而且 k 1 , k 2 , ⋯ , k m , k m + 1 , k m + 2 , ⋯ , k m + s k_1, k_2, \cdots, k_m, k_{m + 1}, k_{m + 2}, \cdots, k_{m + s} k1,k2,⋯,km,km+1,km+2,⋯,km+s不全为零,所以新向量组还是线性相关的。
比如已知向量组 α ⃗ 1 = ( 1 1 ) \vec{\alpha}_1 \ = \begin{pmatrix}1\\1\end{pmatrix} α1 =(11), α ⃗ 2 = ( 2 2 ) \vec{\alpha}_2 \ = \begin{pmatrix}2\\2\end{pmatrix} α2 =(22)是线性相关的(前面验证过啦),现在增加向量 α ⃗ 3 = ( 3 4 ) \vec{\alpha}_3 \ = \begin{pmatrix}3\\4\end{pmatrix} α3 =(34),因为 − 2 α ⃗ 1 + 1 α ⃗ 2 + 0 α ⃗ 3 = 0 ⃗ -2\vec{\alpha}_1 + 1\vec{\alpha}_2 + 0\vec{\alpha}_3 \ = \vec{0} −2α1+1α2+0α3 =0,有不全为零的系数 − 2 , 1 , 0 -2, 1, 0 −2,1,0,所以新的向量组 α ⃗ 1 , α ⃗ 2 , α ⃗ 3 \vec{\alpha}_1, \vec{\alpha}_2, \vec{\alpha}_3 α1,α2,α3就是线性相关的。
(二)无关向量组增加向量后情况分析
要是一个向量组是线性无关的,增加向量后新向量组的情况就有点复杂啦,它可能线性相关,也可能线性无关。
-
可能线性相关的情况:在一个二维空间里,有向量组 e ⃗ 1 = ( 1 0 ) \vec{e}_1 \ = \begin{pmatrix}1\\0\end{pmatrix} e1 =(10), e ⃗ 2 = ( 0 1 ) \vec{e}_2 \ = \begin{pmatrix}0\\1\end{pmatrix} e2 =(01),它们是线性无关的,就像直角坐标系里的两个“坐标轴方向”。要是我们增加一个向量 e ⃗ 3 = ( 1 1 ) \vec{e}_3 \ = \begin{pmatrix}1\\1\end{pmatrix} e3 =(11),设 k 1 e ⃗ 1 + k 2 e ⃗ 2 + k 3 e ⃗ 3 = 0 ⃗ k_1\vec{e}_1 + k_2\vec{e}_2 + k_3\vec{e}_3 \ = \vec{0} k1e1+k2e2+k3e3 =0,也就是 k 1 ( 1 0 ) + k 2 ( 0 1 ) + k 3 ( 1 1 ) = ( k 1 + k 3 k 2 + k 3 ) = ( 0 0 ) k_1\begin{pmatrix}1\\0\end{pmatrix} + k_2\begin{pmatrix}0\\1\end{pmatrix} + k_3\begin{pmatrix}1\\1\end{pmatrix} \ = \begin{pmatrix}k_1 + k_3\\k_2 + k_3\end{pmatrix} \ = \begin{pmatrix}0\\0\end{pmatrix} k1(10)+k2(01)+k3(11) =(k1+k3k2+k3) =(00),这样就得到方程组 { k 1 + k 3 = 0 k 2 + k 3 = 0 \begin{cases}k_1 + k_3 \ = 0\\k_2 + k_3 \ = 0\end{cases} {k1+k3 =0k2+k3 =0。我们令 k 3 = 1 k_3 \ = 1 k3 =1,那 k 1 = − 1 k_1 \ = -1 k1 =−1, k 2 = − 1 k_2 \ = -1 k2 =−1,这就找到了不全为零的解,所以新的向量组 e ⃗ 1 , e ⃗ 2 , e ⃗ 3 \vec{e}_1, \vec{e}_2, \vec{e}_3 e1,e2,e3就是线性相关的。
-
可能线性无关的情况:在三维空间里,有向量组 e ⃗ 1 = ( 1 0 0 ) \vec{e}_1 \ = \begin{pmatrix}1\\0\\0\end{pmatrix} e1 = 100 , e ⃗ 2 = ( 0 1 0 ) \vec{e}_2 \ = \begin{pmatrix}0\\1\\0\end{pmatrix} e2 = 010 ,它们是线性无关的。要是增加向量 e ⃗ 3 = ( 0 0 1 ) \vec{e}_3 \ = \begin{pmatrix}0\\0\\1\end{pmatrix} e3 = 001 ,设 k 1 e ⃗ 1 + k 2 e ⃗ 2 + k 3 e ⃗ 3 = 0 ⃗ k_1\vec{e}_1 + k_2\vec{e}_2 + k_3\vec{e}_3 \ = \vec{0} k1e1+k2e2+k3e3 =0,也就是 ( k 1 k 2 k 3 ) = ( 0 0 0 ) \begin{pmatrix}k_1\\k_2\\k_3\end{pmatrix} \ = \begin{pmatrix}0\\0\\0\end{pmatrix} k1k2k3 = 000 ,只能推出 k 1 = k 2 = k 3 = 0 k_1 \ = k_2 \ = k_3 \ = 0 k1 =k2 =k3 =0,所以新的向量组 e ⃗ 1 , e ⃗ 2 , e ⃗ 3 \vec{e}_1, \vec{e}_2, \vec{e}_3 e1,e2,e3还是线性无关的。
五、极大线性无关组
(一)概念
“能力”,可以把其他小伙伴的“能力”用它们的组合表示出来。
例如,在向量组 α ⃗ 1 = ( 1 1 1 ) \vec{\alpha}_1 \ = \begin{pmatrix}1\\1\\1\end{pmatrix} α1 = 111 , α ⃗ 2 = ( 1 2 3 ) \vec{\alpha}_2 \ = \begin{pmatrix}1\\2\\3\end{pmatrix} α2 = 123 , α ⃗ 3 = ( 2 3 4 ) \vec{\alpha}_3 \ = \begin{pmatrix}2\\3\\4\end{pmatrix} α3 = 234 , α ⃗ 4 = ( 3 4 5 ) \vec{\alpha}_4 \ = \begin{pmatrix}3\\4\\5\end{pmatrix} α4 = 345 中。我们来看看 α ⃗ 1 \vec{\alpha}_1 α1和 α ⃗ 2 \vec{\alpha}_2 α2,假设存在数 k 1 k_1 k1, k 2 k_2 k2使得 k 1 α ⃗ 1 + k 2 α ⃗ 2 = 0 ⃗ k_1\vec{\alpha}_1 + k_2\vec{\alpha}_2 \ = \vec{0} k1α1+k2α2 =0,即 k 1 ( 1 1 1 ) + k 2 ( 1 2 3 ) = ( k 1 + k 2 k 1 + 2 k 2 k 1 + 3 k 2 ) = ( 0 0 0 ) k_1\begin{pmatrix}1\\1\\1\end{pmatrix} + k_2\begin{pmatrix}1\\2\\3\end{pmatrix} \ = \begin{pmatrix}k_1 + k_2\\k_1 + 2k_2\\k_1 + 3k_2\end{pmatrix} \ = \begin{pmatrix}0\\0\\0\end{pmatrix} k1 111 +k2 123 = k1+k2k1+2k2k1+3k2 = 000 ,通过求解方程组 { k 1 + k 2 = 0 k 1 + 2 k 2 = 0 k 1 + 3 k 2 = 0 \begin{cases}k_1 + k_2 \ = 0\\k_1 + 2k_2 \ = 0\\k_1 + 3k_2 \ = 0\end{cases} ⎩ ⎨ ⎧k1+k2 =0k1+2k2 =0k1+3k2 =0,可以得到 k 1 = k 2 = 0 k_1 \ = k_2 \ = 0 k1 =k2 =0,所以 α ⃗ 1 \vec{\alpha}_1 α1和 α ⃗ 2 \vec{\alpha}_2 α2线性无关。
再看 α ⃗ 3 \vec{\alpha}_3 α3, α ⃗ 3 = α ⃗ 1 + α ⃗ 2 \vec{\alpha}_3 \ = \vec{\alpha}_1 + \vec{\alpha}_2 α3 =α1+α2; α ⃗ 4 = 2 α ⃗ 1 + α ⃗ 2 \vec{\alpha}_4 \ = 2\vec{\alpha}_1 + \vec{\alpha}_2 α4 =2α1+α2,也就是 α ⃗ 3 \vec{\alpha}_3 α3和 α ⃗ 4 \vec{\alpha}_4 α4都能由 α ⃗ 1 \vec{\alpha}_1 α1和 α ⃗ 2 \vec{\alpha}_2 α2线性表示。所以 α ⃗ 1 \vec{\alpha}_1 α1, α ⃗ 2 \vec{\alpha}_2 α2构成了该向量组的一个极大线性无关组。
(二)求解方法
- 构造矩阵:把向量组中的向量按顺序作为矩阵 A A A的列向量。比如有向量组 β ⃗ 1 = ( 1 1 0 0 ) \vec{\beta}_1 \ = \begin{pmatrix}1\\1\\0\\0\end{pmatrix} β1 = 1100 , β ⃗ 2 = ( 0 0 1 1 ) \vec{\beta}_2 \ = \begin{pmatrix}0\\0\\1\\1\end{pmatrix} β2 = 0011 , β ⃗ 3 = ( 1 1 1 1 ) \vec{\beta}_3 \ = \begin{pmatrix}1\\1\\1\\1\end{pmatrix} β3 = 1111 , β ⃗ 4 = ( 2 2 1 1 ) \vec{\beta}_4 \ = \begin{pmatrix}2\\2\\1\\1\end{pmatrix} β4 = 2211 ,则构造矩阵 A = ( 1 0 1 2 1 0 1 2 0 1 1 1 0 1 1 1 ) A \ = \begin{pmatrix}1&0&1&2\\1&0&1&2\\0&1&1&1\\0&1&1&1\end{pmatrix} A = 1100001111112211 。
- 初等行变换化为行最简形矩阵:利用三种初等行变换,即换行(交换两行的位置)、某一行乘以非零常数、某一行加上另一行的倍数,将矩阵化为行最简形矩阵。
- 对于矩阵 A A A,先将第二行减去第一行,第四行减去第三行,得到 ( 1 0 1 2 0 0 0 0 0 1 1 1 0 0 0 0 ) \begin{pmatrix}1&0&1&2\\0&0&0&0\\0&1&1&1\\0&0&0&0\end{pmatrix} 1000001010102010 。此时已经是行阶梯形矩阵,再进一步化为行最简形矩阵,无需其他操作。
- 确定极大线性无关组:行最简形矩阵中主元(每行第一个非零元素)所在列对应的原向量组中的向量就构成一个极大线性无关组。在上述行最简形矩阵中,主元在第一列和第三列,所以 β ⃗ 1 \vec{\beta}_1 β1和 β ⃗ 3 \vec{\beta}_3 β3构成该向量组的一个极大线性无关组。
(三)性质
- 不唯一性:极大线性无关组并不是唯一的。仍以上述向量组为例,经过进一步分析可能还存在其他两个向量的组合也满足极大线性无关组的条件。再比如向量组 γ ⃗ 1 = ( 1 0 0 ) \vec{\gamma}_1 \ = \begin{pmatrix}1\\0\\0\end{pmatrix} γ1 = 100 , γ ⃗ 2 = ( 0 1 0 ) \vec{\gamma}_2 \ = \begin{pmatrix}0\\1\\0\end{pmatrix} γ2 = 010 , γ ⃗ 3 = ( 1 1 0 ) \vec{\gamma}_3 \ = \begin{pmatrix}1\\1\\0\end{pmatrix} γ3 = 110 , γ ⃗ 4 = ( 0 0 1 ) \vec{\gamma}_4 \ = \begin{pmatrix}0\\0\\1\end{pmatrix} γ4 = 001 。 γ ⃗ 1 \vec{\gamma}_1 γ1, γ ⃗ 2 \vec{\gamma}_2 γ2, γ ⃗ 4 \vec{\gamma}_4 γ4是一个极大线性无关组,因为它们线性无关且 γ ⃗ 3 = γ ⃗ 1 + γ ⃗ 2 \vec{\gamma}_3 \ = \vec{\gamma}_1 + \vec{\gamma}_2 γ3 =γ1+γ2;同时 γ ⃗ 1 \vec{\gamma}_1 γ1, γ ⃗ 3 \vec{\gamma}_3 γ3, γ ⃗ 4 \vec{\gamma}_4 γ4也可以是极大线性无关组, γ ⃗ 2 = γ ⃗ 3 − γ ⃗ 1 \vec{\gamma}_2 \ = \vec{\gamma}_3 - \vec{\gamma}_1 γ2 =γ3−γ1且这三个向量线性无关。这是因为在向量组中,可能存在多种不同的线性无关的组合方式,都能满足极大线性无关组对向量组的“代表”作用。
- 向量个数相等:一个向量组的任意两个极大线性无关组所含向量的个数一定相等,这个固定的个数称为向量组的秩。例如,对于向量组 δ ⃗ 1 = ( 1 2 3 ) \vec{\delta}_1 \ = \begin{pmatrix}1\\2\\3\end{pmatrix} δ1 = 123 , δ ⃗ 2 = ( 2 4 6 ) \vec{\delta}_2 \ = \begin{pmatrix}2\\4\\6\end{pmatrix} δ2 = 246 , δ ⃗ 3 = ( 3 6 9 ) \vec{\delta}_3 \ = \begin{pmatrix}3\\6\\9\end{pmatrix} δ3 = 369 ,它的一个极大线性无关组可以是 { δ ⃗ 1 } \{\vec{\delta}_1\} {δ1}(因为 δ ⃗ 2 = 2 δ ⃗ 1 \vec{\delta}_2 \ = 2\vec{\delta}_1 δ2 =2δ1, δ ⃗ 3 = 3 δ ⃗ 1 \vec{\delta}_3 \ = 3\vec{\delta}_1 δ3 =3δ1),若再找出另一个极大线性无关组,其中向量个数也必然为 1 1 1,该向量组的秩就是 1 1 1。这是因为极大线性无关组反映的是向量组中线性无关的“最大规模”,无论以何种方式选取,这个“最大规模”是固定的,就像一个容器的最大容量是确定的,虽然装东西的方式可以不同,但最大能装的量是一样的。
(四)用极大线性无关组表示不属于该组的向量
当我们确定了向量组的极大线性无关组后,对于那些不属于极大线性无关组的向量,我们可以通过求解线性方程组的方式来确定它们由极大线性无关组线性表示的系数。
例如,已知向量组 ϵ ⃗ 1 = ( 1 1 0 ) \vec{\epsilon}_1 \ = \begin{pmatrix}1\\1\\0\end{pmatrix} ϵ1 = 110 , ϵ ⃗ 2 = ( 0 1 1 ) \vec{\epsilon}_2 \ = \begin{pmatrix}0\\1\\1\end{pmatrix} ϵ2 = 011 , ϵ ⃗ 3 = ( 1 2 1 ) \vec{\epsilon}_3 \ = \begin{pmatrix}1\\2\\1\end{pmatrix} ϵ3 = 121 ,已求得 ϵ ⃗ 1 \vec{\epsilon}_1 ϵ1, ϵ ⃗ 2 \vec{\epsilon}_2 ϵ2是极大线性无关组。设 ϵ ⃗ 3 = x ϵ ⃗ 1 + y ϵ ⃗ 2 \vec{\epsilon}_3 \ = x\vec{\epsilon}_1 + y\vec{\epsilon}_2 ϵ3 =xϵ1+yϵ2,即 ( 1 2 1 ) = x ( 1 1 0 ) + y ( 0 1 1 ) = ( x x + y y ) \begin{pmatrix}1\\2\\1\end{pmatrix} \ = x\begin{pmatrix}1\\1\\0\end{pmatrix} + y\begin{pmatrix}0\\1\\1\end{pmatrix} \ = \begin{pmatrix}x\\x + y\\y\end{pmatrix} 121 =x 110 +y 011 = xx+yy ,由此得到方程组 { x = 1 x + y = 2 y = 1 \begin{cases}x \ = 1\\x + y \ = 2\\y \ = 1\end{cases} ⎩ ⎨ ⎧x =1x+y =2y =1。通过解方程组,很容易得出 x = 1 x \ = 1 x =1, y = 1 y \ = 1 y =1,所以 ϵ ⃗ 3 = ϵ ⃗ 1 + ϵ ⃗ 2 \vec{\epsilon}_3 \ = \vec{\epsilon}_1 + \vec{\epsilon}_2 ϵ3 =ϵ1+ϵ2。这就好像我们找到了一种“配方”,用极大线性无关组中的向量按照特定的比例(这里 x = 1 x \ = 1 x =1, y = 1 y \ = 1 y =1)组合起来,就能得到不属于极大线性无关组的向量,体现了极大线性无关组对整个向量组的“构建”作用,有助于我们更清晰、简洁地描述整个向量组的结构和性质。
相关文章:
机器学习数学基础:19.线性相关与线性无关
一、线性相关与线性无关的定义 (一)线性相关 想象我们有一组向量,就好比是一群有着不同“力量”和“方向”的小伙伴。给定的向量组 α ⃗ 1 , α ⃗ 2 , ⋯ , α ⃗ m \vec{\alpha}_1, \vec{\alpha}_2, \cdots, \vec{\alpha}_m α 1,α 2…...
快速集成DeepSeek到项目
DeepSeek API-KEY 获取 登录DeekSeek 官网,进入API 开放平台 2. 创建API-KEY 复制API-KEY进行保存,后期API调用使用 项目中集成DeepSeek 这里只展示部分核心代码,具体请查看源码orange-ai-deepseek-biz-starter Slf4j AllArgsConstructo…...
Rocketmq 和 Rabbitmq ,在多消费者的情况下,可以实现顺序消费吗
在多消费者的情况下,RocketMQ 和 RabbitMQ 都可以实现顺序消费,但它们的实现机制和适用场景有所不同。以下是对两者的详细分析和对比: 1. RocketMQ 的顺序消费 1.1 实现机制 顺序消息:RocketMQ 支持顺序消息(Orderly …...
linux下安装【流媒体】SRS之安装与使用
一、 安装srs 这个是一个流媒体服务器。 1.1 github 获取源码 git clone https://github.com/ossrs/srs.git 或者下载国内的 git clone https://gitee.com/ossrs/srs 进去之后下载zip的 #直接使用当前最新的6.0release版本 ,我下载的是zip的 下载了之后上传到…...
Qt QSettings用法
一、概述 QSettings类是Qt框架中的一个重要类,它主要用于存储和访问应用程序的设置和配置。 二、QSettings的构造方式 1、基于组织名和程序名的构造方式(主要用于Windows注册表) 1、explicit QSettings(const QString &organization,c…...
python学opencv|读取图像(六十)先后使用cv2.erode()函数和cv2.dilate()函数实现图像处理
【1】引言 前序学习进程中,先后了解了使用cv2.erode()函数和cv2.dilate()函数实现图像腐蚀和膨胀处理的效果,相关文章链接为: python学opencv|读取图像(五十八)使用cv2.erode()函数实现图像腐蚀处理-CSDN博客 pytho…...
【大数据安全分析】大数据安全分析技术框架与关键技术
在数字化时代,网络安全面临着前所未有的挑战。传统的网络安全防护模式呈现出烟囱式的特点,各个安全防护措施和数据相互孤立,形成了防护孤岛和数据孤岛,难以有效应对日益复杂多变的安全威胁。而大数据分析技术的出现,为…...
[笔记.AI]Deepseek-R1 各参数版本的蒸馏模型对比
备注:信息主要通过Deepseek-R1获得(查询近一个月的在线资料并整理),然后我进行了相应整合。如有错误,希望指出,谢谢。 Deepseek-R1 蒸馏模型 对比维度1.5B7B8B14B32B70B 特有的突破性能力▸ 毫秒级响应(0.3…...
JAVA面向对象2(三大特征)
面向对象的三大特征:封装、继承、多态 封装: 封装,英文单词Encapsulation。 从广义的角度来说,将一块经常要使用的代码片段,定义到方法中,是封装。将多个方法和多个状态数据定义到类体中,也是一…...
Spring Cloud工程完善
目录 完善订单服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 完成商品服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 远程调用 需求 实现 1.定义RestTemplate 2.修改order-service中的OrderService 测试运行 Rest…...
AI大模型随机初始化权重并打印网络结构方法(以Deepseekv3为例,单机可跑)
背景 当前大模型的权重加载和调用,主要是通过在HuggingFace官网下载并使用transformer的库来加以实现;其中大模型的权重文件较大(部分>100GB),若只是快速研究网络结构和数据流变化,则无需下载权重。本文…...
介绍下SpringBoot常用的依赖项
Spring Boot 是一个用于快速开发 Spring 应用程序的框架,它通过自动配置和依赖管理简化了开发过程。以下是一些 Spring Boot 项目中常用的依赖项: 1. Spring Boot Starter Web 作用: 用于构建 Web 应用程序,包括 RESTful 服务。依赖项: spr…...
第四节 docker基础之---dockerfile部署JDK
本地宿主机配置jdk 创建test目录: [rootdocker ~]# mkdir test 压缩包tomcat和jdk上传到root/test目录下: 本机部署Jdk 解压jdk: [rootdocker test]# tar -xf jdk-8u211-linux-x64.tar.gz [rootdocker test]# tar -xf apache-tomcat-8.5.…...
Vue基础:index.html、App.vue、main.js三个文件的联系
index.html、App.vue、main.js三个文件的联系 当vue项目npm run dev启动成功后, 浏览器就可以通过路径访问页面,那么这个页面到底展示的是哪个文件里的内容呢? 如果对前端vue有一定的基础知识,这篇文章可忽略。 在vue项目的目录结…...
数据库 绪论
目录 数据库基本概念 一.基本概念 1.信息 2.数据 3.数据库(DB) 4.数据库管理系统(DBMS) 5.数据库系统(DBS) 二.数据管理技术的发展 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段 4.数据库管…...
26~31.ppt
目录 26.北京主要的景点 题目 解析 27.创新产品展示及说明会 题目 解析 28.《小企业会计准则》 题目 解析 29.学习型社会的学习理念 题目 解析 30.小王-产品展示信息 题目 解析 31.小王-办公理念-信息工作者的每一天 题目 解析 26.北京主要的景点…...
AutoMQ 如何实现没有写性能劣化的极致冷读效率
前言 追赶读(Catch-up Read,冷读)是消息和流系统常见和重要的场景。 削峰填谷:对于消息来说,消息通常用作业务间的解耦和削峰填谷。削峰填谷要求消息队列能将上游发送的数据堆积住,让下游在容量范围内消费…...
启动gateway时Failed to configure a DataSource
问题 在启动网关时候启动失败,报错: 原因很明显,就是没有配制数据库连接信息 实际上是因为在网关模块中导入的某个依赖里面引入了MyBatis的依赖,导致启动的时候自动配置数据库源 但是在这个网关模块中是不需要数据数据库的 解决...
node 程序占用处理方法与后台运行方法
程序占用 如果你在关闭终端后重新运行 node server.js,但提示端口 3000 被占用,说明之前的服务器进程仍然在后台运行。以下是解决方法: 1. 检查后台运行的 Node.js 进程 首先,检查是否有 Node.js 进程正在占用端口 3000。 在 L…...
C# OpenCV机器视觉:对位贴合
在热闹非凡的手机维修街上,阿强开了一家小小的手机贴膜店。每天看着顾客们自己贴膜贴得歪歪扭扭,不是膜的边缘贴不整齐,就是里面充满了气泡,阿强心里就想:“要是我能有个自动贴膜的神器,那该多好啊…...
【计算机网络】TCP/IP 网络模型有哪几层?
目录 应用层 传输层 网络层 网络接口层 总结 为什么要有 TCP/IP 网络模型? 对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通…...
本地部署Deepseek R1
使用Ollama open-webui部署Deepseek R1 一、安装Ollama 官网地址:https://ollama.com/,点击下载按钮选择windows版本。并安装 打开命令提示符输入ollama,出现一下提示命令表示ollama安装完成 二、使用Ollama下载deepseek R1不同模型 打开o…...
PHP盲盒商城系统源码 晒图+免签+短信验证+在线回收 thinkphp框架
源码介绍 PHP盲盒商城系统源码 晒图免签短信验证在线回收 thinkphp框架 源码前端uniapp开发,可以打包成APP(非H5封壳)H5,接其他平台支付通道,前后端全开源 H5盲盒首页可以直接开盒新UI 修复优化BUG,修复无…...
[Do374]ansible-nagivator考前整理
[Do374]ansible-nagivator考前整理 1. Ansible-Navigator 升级后的变化1.1 主要变化1.2 重大改变 2. ansible主要配置文件2.1 .ansible-navigator.yml2.2 ansible.cnf 3. 常用模块3.1 file模块3.2 copy模块3.3 user模块和lookup模块3.4 yum和yum_repository模块3.5 systemd和se…...
deepseek+kimi自动生成ppt
打开deepseek官网,输入详细的需求,让他生成个ppt 接着deepseek开始思考生成了 接着复制生成了的内容 打开kimi粘贴刚才deepseek生成的内容 可以一键生成啦,下载编辑使用吧...
循环神经网络学习01——transformer:输入部分-嵌入层位置编码
一、介绍 1、核心思想 利用自注意力机制来捕获输入序列中各元素之间的全局依赖关系,无论这些元素之间的实际距离有多远。 自注意力机制:允许模型在处理序列的每个元素时,考虑到序列中的所有其他元素,从而捕捉它们之间的关系和依…...
centos系统清理docker日志文件
在CentOS系统中,Docker日志文件的不断增长可能会占用大量磁盘空间,影响系统性能和正常运行。为了保持系统的健康状态,需要定期清理Docker日志文件。本文将详细介绍如何在CentOS系统上清理Docker日志文件的具体步骤和方法。 Docker日志文件位…...
低成本+高性能+超灵活!Deepseek 671B+Milvus重新定义知识库搭建
“老板说,这个项目得上Deepseek,还得再做个知识库...” 还有哪个开发者,最近没听到这样的抱怨? Deepseek爆火,推理端的智能提速,算力成本急剧下降,让不少原本不想用大模型,用不起大模型的企业&a…...
Windows 本地部署大模型 OpenWebUI+Ollama
安装Ollama Ollama官方网址:https://ollama.com 下载运行大模型 在Ollama官网中查看需要下载的大模型 https://ollama.com/library 复制图片中的链接 打开cmd,运行此命令(此过程会时间会很久) 下载Miniconda Miniconda作用是…...
【iOS自动化】Xcode配置WebDriverAgent
WebDriverAgent 是 iOS 端自动化测试的工具,这里记录下 MacOS 环境 Xcode 如何配置 WebDriverAgent。 【重要】环境准备 ‼️ 注意:Xcode 版本需要支持对应的 iOS 版本,而 Xcode 版本又依赖 MacOS 版本;在开始部署前,…...
RabbitMQ 延迟队列
1.延迟队列插件安装(版本号要对其) Releases rabbitmq/rabbitmq-delayed-message-exchange GitHub 下载的文件: rabbitmq_delayed_message_exchange-3.13.0.ez 直接复制到以下文件夹: \RabbitMQ Server\rabbitmq_server-3.13.7\plugins\ 执行命令…...
JVM-Java虚拟机
基础知识 JVM的定义与作用 定义:JVM是Java语言的一部分,它是一个虚拟的计算机,通过它可以执行Java程序。 作用: 跨平台支持:实现了“编译一次,到处运行”的目标。 自动内存管理:通过垃圾回收…...
Unity底层C#处理机制深度解析
一、Unity脚本执行架构 Unity采用分层架构处理C#脚本,核心由以下组件构成: 脚本引擎层 Mono Runtime(旧版本) IL2CPP(2015版本) Burst Compiler(DOTS体系) 原生交互层 Runtime …...
【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪
本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中,实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构,还是监…...
MFC 应用最小化到系统托盘
本指南将实现 MFC 应用程序在关闭时最小化系统托盘的功能,并左键和右键系统托盘图标进行交互。 目标: 左键点击托盘图标:恢复对话框窗口。右键点击托盘图标:弹出右键菜单,提供 恢复窗口 和 退出程序 两个选项。退出时…...
C++ ——从C到C++
1、C的学习方法 (1)C知识点概念内容比较多,需要反复复习 (2)偏理论,有的内容不理解,可以先背下来,后续可能会理解更深 (3)学好编程要多练习,简…...
【OCPP】ocpp1.6J协议框架说明
目录 1.简介 1.1.本文件的目的 1.2.目标受众 1.3. OCPP-S and OCPP-J 1.4. 约定 1.5.定义和缩写 1.6.参考 2.优点和问题 3.连接 3.1.客户要求 3.1.1.连接URL 3.1.2.OCPP版本 3.1.3.打开HTTP请求的示例 3.2.服务器响应 3.3.更多信息 4.RPC框架 4.1.介绍 4.1.1…...
Swipe横滑与SwipeItem自定义横滑相互影响
背景 vue项目,H5页面,使用vant的组件库轮播组件<Swipe>,UI交互要求,在每个SwipeItem中有内容,可自横滑,查看列表内容 核心代码 <template><Swipeclass"my_swipe":autoplay&quo…...
渗透利器工具:Burp Suite 联动 XRAY 图形化工具.(主动扫描+被动扫描)
Burp Suite 联动 XRAY 图形化工具.(主动扫描被动扫描) Burp Suite 和 Xray 联合使用,能够将 Burp 的强大流量拦截与修改功能,与 Xray 的高效漏洞检测能力相结合,实现更全面、高效的网络安全测试,同时提升漏…...
C# 学习目录
以下内容仅供参考 基础概念 数据类型(使用与定义)-CSDN博客 var使用-CSDN博客 运算符(new、sizeof、is、as)_new 运算符-CSDN博客 数据结构 数组定义与使用-CSDN博客 动态数组和泛型集合-CSDN博客 字典(Dictonary)-CSDN博客 集合类型࿰…...
react native学习【9】——动态路由
react native学习【9】——动态路由 1、进入终端2、动态路由dynamic router3、编写app/_layout.jsx布局文件4、创建动态路由5、完善index.jsx文件6、完善[id].jsx文件扩展运算符...7、完整的index.jsx文件1、进入终端 2、动态路由dynamic router 官方网站 视频中的举例:当我们…...
[AI]Mac本地部署Deepseek R1模型 — — 保姆级教程
[AI]Mac本地部署DeepSeek R1模型 — — 保姆级教程 DeepSeek R1是中国AI初创公司深度求索(DeepSeek)推出大模型DeepSeek-R1。 作为一款开源模型,R1在数学、代码、自然语言推理等任务上的性能能够比肩OpenAI o1模型正式版,并采用MI…...
LeetCodehot 力扣热题100 验证二叉搜索树
class Solution {vector<int> nums; // 用来存储二叉树节点值的数组 public:bool isValidBST(TreeNode* root) {inorder(root); // 中序遍历二叉树,填充 nums 数组// 遍历 nums 数组,检查是否为严格递增序列for(int i0; i<nums.size()-1; i){…...
使用Kickstart配置文件封装操作系统实现Linux的自动化安装
使用Kickstart配置文件封装操作系统实现Linux的自动化安装 创建ks.cfg配置文件 可以使用已经安装完成的Linux操作系统中的/root目录下的anaconda.cfg配置文件 注意,配置文件会因为kickstart的版本兼容性的问题导致无法安装报错需要在实际使用过程中删除某些参数 …...
前端开发架构师Prompt指令的最佳实践
前端开发架构师Prompt 提示词可作为系统提示词使用,可基于用户的需求输出对应的编码方案。 本次提示词偏向前端开发的使用,如有需要可适当修改关键词和示例。 推荐使用 Cursor 中作为自定义指令使用Cline 插件中作为自定义指令使用在力所能及的范围内使…...
flink判断两个事件之间有没有超时(不使用CEP)
1.为啥不使用cep呢,cep的超时时间设置不好配置化,无法满足扩展要求 2.超时怎么界定。A事件发生后,过了N时间,还没有收到B事件,算超时。 代码如下: import com.alibaba.fastjson.JSONObject; import lombo…...
vue3+ts+vite+element plus设置日期时间禁止选择小于当前时间精确到时分秒
ts组件 // timeUtils.ts/*** 生成一个数组* param start* param end*/ export const makeRange (start: number, end: number): number[] > {const result: number[] [];for (let i start; i < end; i) {result.push(i);}return result; };/*** 限制今天之前的时间不…...
2025web寒假作业二
一、整体功能概述 该代码构建了一个简单的后台管理系统界面,主要包含左侧导航栏和右侧内容区域。左侧导航栏有 logo、管理员头像、导航菜单和安全退出按钮;右侧内容区域包括页头、用户信息管理内容(含搜索框和用户数据表格)以及页…...
2025.2.8——二、Confusion1 SSTI模板注入|Jinja2模板
题目来源:攻防世界 Confusion1 目录 一、打开靶机,整理信息 二、解题思路 step 1:查看网页源码信息 step 2:模板注入 step 3:构造payload,验证漏洞 step 4:已确认为SSTI漏洞中的Jinjia2…...
Mysql 函数解析
文章目录 一、模糊匹配【like】二、CASE函数1、简单case2、搜索case3、搜索case 聚合函数 一、模糊匹配【like】 一般形式为:列名 [NOT] LIKE ‘%关键字%’,示例如下: like %北京%列名包括北京的字样like ‘北京%’ 列名北京开头like ‘%北…...