6.5 正定矩阵
一、正定矩阵
这一节关注的是特征值都是正数的对称矩阵。如果对称使得矩阵很重要,那么这个额外的性质(所有的 λ > 0 \lambda>0 λ>0)会使得它更加的特殊。我们所说的特殊并不表示它稀有,特征值都是正数的对称矩阵几乎是所有应用的中心,称之为正定(positive definite)。
第一个问题是如何识别正定矩阵。当然求出所有的特征值然后测试 λ > 0 \lambda>0 λ>0 是可以的,但是特征值的计算工作量挺大的,当我们需要 λ ′ s \lambda's λ′s,我们可以计算,但是我们仅仅是想知道它的所有 λ ′ s \lambda's λ′s 是不是都是正的,会有很多种更快的方法。本节有两个目标:
- 找出快速判定对称矩阵是正数特征值的方法。
- 说明正定的重要应用。
由于是对称矩阵,所以它的每个特征值都是实数。
从 2 × 2 的矩阵开始,什么时候 S = [ a b b c ] 有 λ 1 > 0 且 λ 2 > 0 ? \pmb{从 \,2\times2 \,的矩阵开始,什么时候 \,S=\begin{bmatrix}a&b\\b&c\end{bmatrix} 有\, \lambda_1>0 \,且\, \lambda_2>0}\,? 从2×2的矩阵开始,什么时候S=[abbc]有λ1>0且λ2>0?
测试: S S S 的特征值都是正数当且仅当 a > 0 且 a c − b 2 > 0. \color{blue}a>0\,且\,ac-b^2>0. a>0且ac−b2>0.
S 1 = [ 1 2 2 1 ] S_1=\begin{bmatrix}1&2\\2&1\end{bmatrix} S1=[1221] 不是正定,因为 a c − b 2 = 1 − 4 < 0 ac-b^2=1-4<0 ac−b2=1−4<0
S 2 = [ 1 − 2 − 2 6 ] S_2=\begin{bmatrix}\kern 7pt1&-2\\-2&\kern 7pt6\end{bmatrix} S2=[1−2−26] 正定,因为 a = 1 a=1 a=1 且 a c − b 2 = 6 − 4 > 0 ac-b^2=6-4>0 ac−b2=6−4>0
S 3 = [ − 1 2 2 − 6 ] S_3=\begin{bmatrix}-1&\kern 7pt2\\\kern 7pt2&-6\end{bmatrix} S3=[−122−6] 不是正定(尽管 det A = + 2 \det A=+2 detA=+2),因为 a = − 1 a=-1 a=−1
S 1 S_1 S1 的特征值是 3 3 3 和 − 1 -1 −1,可以确认 S 1 S_1 S1 不是正定,有正数迹 3 − 1 = 2 3-1=2 3−1=2,但是负数行列式 ( 3 ) ( − 1 ) = − 3 (3)(-1)=-3 (3)(−1)=−3。 S 3 = − S 2 S_3=-S_2 S3=−S2 是负定(negative definite)。 S 2 S_2 S2 有两个正数特征值, S 3 S_3 S3 有两个负数特征值。
证明:当 λ 1 > 0 \lambda_1>0 λ1>0 和 λ 2 > 0 \lambda_2>0 λ2>0 时,可以通过 2 × 2 2\times2 2×2 的测试。乘积 λ 1 λ 2 \lambda_1\lambda_2 λ1λ2 是行列式所以 a c − b 2 > 0 ac-b^2>0 ac−b2>0,它们的和 λ 1 + λ 2 \lambda_1+\lambda_2 λ1+λ2 是迹 a + c > 0 a+c>0 a+c>0,则 a a a 和 c c c 都是正数(如果 a a a 和 c c c 不是正数, a c − b 2 ac-b^2 ac−b2 就不会成立)。这个证明反之亦然,可以证明 a > 0 a>0 a>0 和 a c > b 2 ac>b^2 ac>b2 能够保证 λ 1 > 0 \lambda_1>0 λ1>0 和 λ 2 > 0 \lambda_2>0 λ2>0。
这个测试使用了 1 × 1 1\times1 1×1 的行列式 a a a 和 2 × 2 2\times2 2×2 的行列式 a c − b 2 ac-b^2 ac−b2,当 S S S 是 3 × 3 3\times3 3×3 时,第三步测试是要求 det S > 0 \det S>0 detS>0。
下一个测试要求正主元。
测试: S S S 的特征值都是正数当且仅当主元都是正数:
a > 0 且 a c − b 2 a > 0 \color{blue}a>0\kern 5pt且\kern 5pt\frac{ac-b^2}{a}>0 a>0且aac−b2>0
这两项测试中都要求 a > 0 a>0 a>0,所以对于行列式的测试以及现在的主元测试, a c > b 2 ac>b^2 ac>b2 也是必要的。重点是得到 S S S 的第二主元: [ a b b c ] → 乘数是 b / a 第一主元是 a [ a b 0 c − b a b ] 第二主元是 c − b 2 a = a c − b 2 a \begin{bmatrix}a&b\\b&c\end{bmatrix}\xrightarrow[乘数是\,b/a]{第一主元是\,a}\begin{bmatrix}a&b\\0&c-\displaystyle\frac{b}{a}b\end{bmatrix}\kern 10pt\pmb{第二主元是\,c-\frac{b^2}{a}=\frac{ac-b^2}{a}} [abbc]第一主元是a乘数是b/a[a0bc−abb]第二主元是c−ab2=aac−b2这个将线性代数的两大部分联系在了一起,对于对称矩阵正数特征值意味着正数主元,反之亦然。每个主元都是左上角行列式的比值,通过主元可以快速判定 λ > 0 \lambda>0 λ>0,这比计算特征值要快很多。
3 × 3 的例子 S = [ 2 1 1 1 2 1 1 1 2 ] 正定 特征值 是 : 1 , 1 , 4 行列式 是 : 2 , 3 , 4 主元 是 : 2 , 3 / 2 , 4 / 3 \pmb{3\times3\,的例子}\kern 6ptS=\begin{bmatrix}2&1&1\\1&2&1\\1&1&2\end{bmatrix}正定\kern 7pt\begin{array}{l}\pmb{特征值}是:1,1,4\\\pmb{行列式}是:2,3,4\\\pmb{主元}是:2,3/2,4/3\end{array} 3×3的例子S= 211121112 正定特征值是:1,1,4行列式是:2,3,4主元是:2,3/2,4/3 S − I S-I S−I 会是半正定(semidefinite)矩阵:特征值是 0 , 0 , 3 0,0,3 0,0,3; S − 2 I S-2I S−2I 是不定的,因为它的特征值是 λ = − 1 , − 1 , 2 \lambda=-1,-1,2 λ=−1,−1,2。
下面有一个不同的方法来验证对称矩阵是否是正特征值。
二、能量基定义
由正定矩阵 S x = λ x S\boldsymbol x=\lambda\boldsymbol x Sx=λx,两边同时左乘 x T \boldsymbol x^T xT 得 x T S x = λ x T x \boldsymbol x^TS\boldsymbol x=\lambda\boldsymbol x^T\boldsymbol x xTSx=λxTx,右边是一个正数 λ \lambda λ 乘一个正数 x T x = ∣ ∣ x ∣ ∣ 2 \boldsymbol x^T\boldsymbol x=||\boldsymbol x||^2 xTx=∣∣x∣∣2,所以左边 x T S x \boldsymbol x^TS\boldsymbol x xTSx 对任意的特征向量也是正数。
重点:新的概念是 x T S x \boldsymbol x^TS\boldsymbol x xTSx 对于所有的非零向量 x \boldsymbol x x 都是正数,而不仅仅是特征向量。很多应用中 x T S x \boldsymbol x^TS\boldsymbol x xTSx (或 1 2 x T S x \displaystyle\frac{1}{2}\boldsymbol x^TS\boldsymbol x 21xTSx)是系统的能量(energy)。正能量得到要求给出了正定矩阵的另一个定义,这个能量基(energy-based)的定义是基础的一个。
特征值和主元是两种等效的检验 x T S x > 0 \boldsymbol x^TS\boldsymbol x>0 xTSx>0 的方法。
定义: 如果对于任意的非零向量 x \boldsymbol x x 都有 x T S x > 0 \boldsymbol x^TS\boldsymbol x>0 xTSx>0,则 S S S 正定:
2 × 2 x T S x = [ x y ] [ a b b c ] [ x y ] = a x 2 + 2 b x y + c y 2 > 0 ( 6.5.1 ) \pmb{2\times2}\kern 10pt{\color{blue}\boldsymbol x^TS\boldsymbol x}=\begin{bmatrix}x&y\end{bmatrix}\begin{bmatrix}a&b\\b&c\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}={\color{blue}ax^2+2bxy+cy^2>0}\kern 12pt(6.5.1) 2×2xTSx=[xy][abbc][xy]=ax2+2bxy+cy2>0(6.5.1)
四个元素 a , b , b , c a,b,b,c a,b,b,c 得到 x T S x \boldsymbol x^TS\boldsymbol x xTSx 的四个部分,从 a a a 和 c c c 得到了纯平方项 a x 2 ax^2 ax2 和 c y 2 cy^2 cy2,从非对角线处的 b b b 和 b b b 得到相同的两个交叉项 b x y bxy bxy 和 b y x byx byx,将这四项加起来得到 x T S x \boldsymbol x^TS\boldsymbol x xTSx。这个能量基的定义可以得到一个基础的事实: 如果 S 和 T 对称正定,那么 S + T 也是。 \color{blue}如果\,S\,和 \,T\,对称正定,那么\,S+T\,也是。 如果S和T对称正定,那么S+T也是。原因: x T ( S + T ) x \boldsymbol x^T(S+T)\boldsymbol x xT(S+T)x 就是 x T S x + x T T x \boldsymbol x^TS\boldsymbol x+\boldsymbol x^TT\boldsymbol x xTSx+xTTx,若 x ≠ 0 \boldsymbol x\neq\boldsymbol 0 x=0,则这两项都是正数,所以 S + T S+T S+T 也正定。当两个矩阵相加时,主元和特征值并不容易追踪,但是能量只需要简单的相加。
x T S x \boldsymbol x^TS\boldsymbol x xTSx 和我们其它确认正定矩阵的方法相联系。从任意矩阵 A A A 开始,也可以是矩形矩阵,我们知道 S = A T A S=A^TA S=ATA 是一个对称的方阵,不仅如此,如果 A A A 的列线性无关,则 S S S 正定: 测试:如果 A 的列线性无关,则 S = A T A 正定。 \pmb{测试:如果\,A\,的列线性无关,则\,S=A^TA\,正定。} 测试:如果A的列线性无关,则S=ATA正定。这里使用特征值和主元判断并不容易,但是数字 x T S x \boldsymbol x^TS\boldsymbol x xTSx 和 x T A T A x \boldsymbol x^TA^TA\boldsymbol x xTATAx 相同, x T A T A x \boldsymbol x^TA^TA\boldsymbol x xTATAx 就是 ( A x ) T ( A x ) = ∣ ∣ A x ∣ ∣ 2 (A\boldsymbol x)^T(A\boldsymbol x)=||A\boldsymbol x||^2 (Ax)T(Ax)=∣∣Ax∣∣2 —— 这是又一个使用括号的重要证明!由于 A A A 的列是无关列,所以当 x ≠ 0 \boldsymbol x\neq\boldsymbol 0 x=0 时,向量 A x A\boldsymbol x Ax 也不为零,则 x T S x \boldsymbol x^TS\boldsymbol x xTSx 是一个正数 ∣ ∣ A x ∣ ∣ 2 ||A\boldsymbol x||^2 ∣∣Ax∣∣2,所以这个矩阵 S S S 正定。
到目前为止,有五个等效的判断正定矩阵的判据。这个关键的概念联系了线性代数的整个主题:主元、行列式、特征值和最小二乘(从 A T A A^TA ATA)。
当一个对称矩阵 S S S 有下面五个中的任意一个性质时,它就有下面所有的性质:
1、 S S S 的所有 n n n 个主元是正数。
2、所有的 n n n 个左上行列式(主子式)都是正数。
3、 S S S 的所有 n n n 个特征值都是正数。
4、除 x = 0 \boldsymbol x=\boldsymbol 0 x=0 外, x T S x \boldsymbol x^T S\boldsymbol x xTSx 对于任意的向量 x \boldsymbol x x 都是正数。这是能量基的定义。
5、 S S S 等于 A T A A^TA ATA,其中 A A A 有无关列。
“左上行列式(upper left determinants)” 即主子式是 1 × 1 1\times1 1×1, 2 × 2 2\times2 2×2, ⋯ \cdots ⋯ 一直到 n × n n\times n n×n 的行列式,最后一个就是整个矩阵 S S S 的行列式。这个定理将线性代数的所有内容都联系结合在了一起。
【例1】测试下面的对称矩阵 S S S 和 T T T 的正定性: S = [ 2 − 1 0 − 1 2 − 1 0 − 1 2 ] 和 T = [ 2 − 1 b − 1 2 − 1 b − 1 2 ] S=\begin{bmatrix}\kern 7pt2&-1&\kern 7pt0\\-1&\kern 7pt2&-1\\\kern 7pt0&-1&\kern 7pt2\end{bmatrix}\kern 5pt和\kern 5ptT=\begin{bmatrix}\kern 7pt2&-1&\kern 7ptb\\-1&\kern 7pt2&-1\\\kern 7ptb&-1&\kern 7pt2\end{bmatrix} S= 2−10−12−10−12 和T= 2−1b−12−1b−12 解: S S S 的主元是 2 2 2、 3 2 \displaystyle\frac{3}{2} 23 和 4 3 \displaystyle\frac{4}{3} 34,都是正数。它的左上行列式是 2 2 2、 3 3 3 和 4 4 4,都是正数。 S S S 的特征值是 2 − 2 2-\sqrt2 2−2、 2 2 2 和 2 + 2 2+\sqrt2 2+2,都是正数。这些就完成了性质 1 1 1、 2 2 2、 3 3 3 的测试,每一个测试都可以决定它的正定。
对于性质 5 5 5,有三个候选矩阵 A 1 A_1 A1、 A 2 A_2 A2 和 A 3 A_3 A3,使得 S = A T A S=A^TA S=ATA,都可以证明 S S S 的正定性。 A 1 A_1 A1 是一个 4 × 3 4\times3 4×3 的一阶差分矩阵,得到 S S S 中的 − 1 -1 −1、 2 2 2 和 − 1 -1 −1: S = A 1 T A 1 [ 2 − 1 0 − 1 2 − 1 0 − 1 2 ] = [ 1 − 1 0 0 0 1 − 1 0 0 0 1 − 1 ] [ 1 0 0 − 1 1 0 0 − 1 1 0 0 − 1 ] \pmb{S=A_1^TA_1}\kern 20pt\begin{bmatrix}\kern 7pt2&-1&\kern 7pt0\\-1&\kern 7pt2&-1\\\kern 7pt0&-1&\kern 7pt2\end{bmatrix}=\begin{bmatrix}1&-1&\kern 7pt0&\kern 7pt0\\0&\kern 7pt1&-1&\kern 7pt0\\0&\kern 7pt0&\kern 7pt1&-1\end{bmatrix}\begin{bmatrix}\kern 7pt1&\kern 7pt0&\kern 7pt0\\-1&\kern 7pt1&\kern 7pt0\\\kern 7pt0&-1&\kern 7pt1\\\kern 7pt0&\kern 7pt0&-1\end{bmatrix} S=A1TA1 2−10−12−10−12 = 100−1100−1100−1 1−10001−10001−1 A 1 A_1 A1 的三个列是无关的,因此 S S S 正定。
A 2 A_2 A2 来自于 S = L D L T S=LDL^T S=LDLT( S = L U S=LU S=LU 的对称版本),消元法可以得到 D D D 中的主元 2 , 3 2 , 4 3 2,\displaystyle\frac{3}{2},\frac{4}{3} 2,23,34, L L L 中的乘数 − 1 2 , 0 , − 2 3 -\displaystyle\frac{1}{2},0,-\frac{2}{3} −21,0,−32,令 A 2 = ( L D ) T \pmb{A_2=(L\sqrt D)^T} A2=(LD)T。 L D L T = [ 1 − 1 2 1 0 − 2 3 1 ] [ 2 3 2 4 3 ] [ 1 − 1 2 0 1 − 2 3 1 ] = ( L D ) ( L D ) T = A 2 T A 2 A 2 是 S 的 Cholesky 因子 LDL^T=\begin{bmatrix}\kern 7pt1\\-\frac{1}{2}&\kern 7pt1\\\kern 7pt0&-\frac{2}{3}&1\end{bmatrix}\begin{bmatrix}2\\&\frac{3}{2}\\&&\frac{4}{3}\end{bmatrix}\begin{bmatrix}1&-\frac{1}{2}&\kern 7pt0\\&\kern 7pt1&-\frac{2}{3}\\&&\kern 7pt1\end{bmatrix}=\begin{array}{l}\\(L\sqrt D)(L\sqrt D)^T=A_2^TA_2\\\color{blue}A_2\,是\,S\,的\,\textrm{Cholesky}\,因子\end{array} LDLT= 1−2101−321 22334 1−2110−321 =(LD)(LD)T=A2TA2A2是S的Cholesky因子这个 A A A 的三角形矩阵中出现了平方根,没有那么漂亮。这个是 S S S 的 “Cholesky factor”,MATLAB 中的指令是 A = chol ( S ) A=\textrm{chol}(S) A=chol(S)。在应用中,矩形 A 1 A_1 A1 是我们如何建立的 S S S,而 Cholesky A 2 A_2 A2 是如何分解它。
特征值得到对称的选择 A 3 = Q Λ Q T \pmb{A_3=Q\sqrt \Lambda Q^T} A3=QΛQT,其中 A 3 T A 3 = Q Λ Q T = S A_3^TA_3=Q\Lambda Q^T=S A3TA3=QΛQT=S,所有的测试都证明了 − 1 , 2 , − 1 -1,2,-1 −1,2,−1 矩阵 S S S 是正定的。
要看能量 x T S x \boldsymbol x^TS\boldsymbol x xTSx 是不是正的,我们将它写成平方和的形式。这三个选择 A 1 , A 2 , A 3 A_1,A_2,A_3 A1,A2,A3 有三种不同的分离 x T S x \boldsymbol x^TS\boldsymbol x xTSx 的方式: x T S x = 2 x 1 2 − 2 x 1 x 2 + 2 x 2 2 − 2 x 2 x 3 + 2 x 3 2 改写成平方 ∣ ∣ A 1 x ∣ ∣ 2 = x 1 2 + ( x 2 − x 1 ) 2 + ( x 3 − x 2 ) 2 + x 3 2 使用差分的 A 1 ∣ ∣ A 2 x ∣ ∣ 2 = 2 ( x 1 − 1 2 x 2 ) 2 + 3 2 ( x 2 − 2 3 x 3 ) 2 + 4 3 x 3 2 使用 S = L D L T ∣ ∣ A 3 x ∣ ∣ 2 = λ 1 ( q 1 T x ) 2 + λ 2 ( q 2 T x ) 2 + λ 3 ( q 3 T x ) 2 使用 S = Q Λ Q T \begin{array}{ll}\boldsymbol x^TS\boldsymbol x=2x_1^2-2x_1x_2+2x_2^2-2x_2x_3+2x_3^2&\pmb{改写成平方}\\||A_1\boldsymbol x||^2=x_1^2+(x_2-x_1)^2+(x_3-x_2)^2+x_3^2&\pmb{使用差分的\,A_1}\\||A_2\boldsymbol x||^2=2(x_1-\frac{1}{2}x_2)^2+\frac{3}{2}(x_2-\frac{2}{3}x_3)^2+\frac{4}{3}x_3^2&\pmb{使用\,S=LDL^T}\\||A_3\boldsymbol x||^2=\lambda_1(\boldsymbol q_1^T\boldsymbol x)^2+\lambda_2(\boldsymbol q_2^T\boldsymbol x)^2+\lambda_3(\boldsymbol q_3^T\boldsymbol x)^2&\pmb{使用\,S=Q\Lambda Q^T}\end{array} xTSx=2x12−2x1x2+2x22−2x2x3+2x32∣∣A1x∣∣2=x12+(x2−x1)2+(x3−x2)2+x32∣∣A2x∣∣2=2(x1−21x2)2+23(x2−32x3)2+34x32∣∣A3x∣∣2=λ1(q1Tx)2+λ2(q2Tx)2+λ3(q3Tx)2改写成平方使用差分的A1使用S=LDLT使用S=QΛQT下面看矩阵 T T T, ( 1 , 3 ) (1,3) (1,3) 和 ( 3 , 1 ) (3,1) (3,1) 元素从 0 0 0 变成了 b b b,这个 b b b 一定不能太大!行列式的测试是最简单的, 1 × 1 1\times1 1×1 行列式是 2 2 2, 2 × 2 2\times2 2×2 的行列式还是 3 3 3, 3 × 3 3\times3 3×3 的行列式包含 b b b: 对 T 进行测试 det T = 4 + 2 b − 2 b 2 = ( 1 + b ) ( 4 − 2 b ) 一定要是正数 \pmb{对\,T\,进行测试}\kern 10pt\det T=4+2b-2b^2=(1+b)(4-2b)\kern 10pt一定要是正数 对T进行测试detT=4+2b−2b2=(1+b)(4−2b)一定要是正数在 b = − 1 b=-1 b=−1 和 b = 2 b=2 b=2 时得到 det T = 0 \det T=0 detT=0,当 − 1 < b < 2 -1<b<2 −1<b<2 时矩阵 T T T 正定。矩阵 S S S 角落中的元素 b = 0 b=0 b=0,它在 − 1 -1 −1 和 2 2 2 之间,所以是安全的。
三、半正定矩阵
很多时候我们会在正定的边缘,此时行列式为零,最小的特征值是零,这个特征向量的能量是 x T S x = x T 0 x = 0 \boldsymbol x^TS\boldsymbol x=\boldsymbol x^T0\boldsymbol x=0 xTSx=xT0x=0。这些边缘情况的矩阵称为半正定(positive semidefinite)。下面是两个例子(不可逆): S = [ 1 2 2 4 ] 和 T = [ 2 − 1 − 1 − 1 2 − 1 − 1 − 1 2 ] 都是半正定 S=\begin{bmatrix}1&2\\2&4\end{bmatrix}\kern 5pt和\kern 5ptT=\begin{bmatrix}\kern 7pt2&-1&-1\\-1&\kern 7pt2&-1\\-1&-1&\kern 7pt2\end{bmatrix}都是半正定 S=[1224]和T= 2−1−1−12−1−1−12 都是半正定 S S S 的特征值是 5 5 5 和 0 0 0,它的左上行列式分别是 1 1 1 和 0 0 0,秩只有 1 1 1。这个矩阵 S S S 可分解成 A T A A^TA ATA,但是 A A A 是有相关列: A 有相关列 半正定的 S [ 1 2 2 4 ] = [ 1 0 2 0 ] [ 1 2 0 0 ] = A T A \begin{array}{l}\pmb{A\,有相关列}\\\pmb{半正定的\,S}\end{array}\kern 5pt\begin{bmatrix}1&2\\2&4\end{bmatrix}=\begin{bmatrix}1&0\\2&0\end{bmatrix}\begin{bmatrix}1&2\\0&0\end{bmatrix}=A^TA A有相关列半正定的S[1224]=[1200][1020]=ATA如果 4 4 4 再稍微变大一点,矩阵 S S S 就变成正定的了。循环 T T T 的行列式也是零(例 1 1 1 中当 b = − 1 b=-1 b=−1 时), T T T 是奇异的,特征向量 x = ( 1 , 1 , 1 ) \boldsymbol x=(1,1,1) x=(1,1,1) 有 T x = 0 T\boldsymbol x=\boldsymbol 0 Tx=0 且能量 x T T x = 0 \boldsymbol x^TT\boldsymbol x=0 xTTx=0。其它方向的向量 x \boldsymbol x x 都得到正能量。这个 T T T 可以写成很多种 A T A A^TA ATA 的形式,但是 A A A 一定有相关列,因为 ( 1 , 1 , 1 ) (1,1,1) (1,1,1) 在它的零空间: 二阶差分 T 来自于一阶差分 A 循环 T 来自于循环 A [ 2 − 1 − 1 − 1 2 − 1 − 1 − 1 2 ] = [ 1 − 1 0 0 1 − 1 − 1 0 1 ] [ 1 0 − 1 − 1 1 0 0 − 1 1 ] \begin{array}{l}\pmb{二阶差分\,T}\\\pmb{来自于一阶差分\,A}\\\pmb{循环\,T\,来自于循环\,A}\pmb{}\end{array}\kern 7pt\begin{bmatrix}\kern7pt2&-1&-1\\-1&\kern 7pt2&-1\\-1&-1&\kern 7pt2\end{bmatrix}=\begin{bmatrix}\kern 7pt1&-1&\kern 7pt0\\\kern 7pt0&\kern 7pt1&-1\\-1&\kern 7pt0&\kern 7pt1\end{bmatrix}\begin{bmatrix}\kern 7pt1&\kern 7pt0&-1\\-1&\kern 7pt1&\kern 7pt0\\\kern 7pt0&-1&\kern 7pt1\end{bmatrix} 二阶差分T来自于一阶差分A循环T来自于循环A 2−1−1−12−1−1−12 = 10−1−1100−11 1−1001−1−101 半正定矩阵的所有 λ ≥ 0 \lambda\geq0 λ≥0 且所有的 x T S x ≥ 0 \boldsymbol x^TS\boldsymbol x\geq0 xTSx≥0,这些弱不等式( ≥ \pmb{\geq} ≥ 而不是 > \pmb{>} >)包括正定 S S S 和处于边缘的奇异矩阵。
四、椭圆 a x 2 + 2 b x y + c y 2 = 1 ax^2+2bxy+cy^2=1 ax2+2bxy+cy2=1
考虑一下如 Figure 6.7a 所示的倾斜的椭圆(ellipse) x T S x = 1 \boldsymbol x^TS\boldsymbol x=1 xTSx=1,它的中心是 ( 0 , 0 ) (0,0) (0,0),将它旋转到与坐标轴对齐( X X X 和 Y Y Y 轴),就是 Figrue 6.7(b)。这两张图展示了 S = Q Λ Q − 1 = Q Λ Q T S=Q\Lambda Q^{-1}=Q\Lambda Q^T S=QΛQ−1=QΛQT 这种分解背后的几何意义:
- 倾斜的椭圆对应于 S S S,它的方程是 x T S x = 1 \boldsymbol x^TS\boldsymbol x=1 xTSx=1。
- 与坐标轴对齐的椭圆对应于 Λ \Lambda Λ,它的方程是 X T Λ X = 1 X^T\Lambda X=1 XTΛX=1。
- 使得椭圆旋转到与坐标轴对齐的旋转矩阵是特征向量矩阵 Q Q Q。
【例2】求出倾斜椭圆 5 x 2 + 8 x y + 5 y 2 = 1 5x^2+8xy+5y^2=1 5x2+8xy+5y2=1 的轴。
解: 从匹配这个方程的正定矩阵开始: 方程是 [ x y ] [ 5 4 4 5 ] [ x y ] = 1 矩阵是 S = [ 5 4 4 5 ] 方程是\kern 10pt\begin{bmatrix}x&y\end{bmatrix}\begin{bmatrix}5&4\\4&5\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}=1\kern 12pt矩阵是\kern 5pt\boxed{S=\begin{bmatrix}5&4\\4&5\end{bmatrix}} 方程是[xy][5445][xy]=1矩阵是S=[5445]特征向量是 [ 1 1 ] \begin{bmatrix}1\\1\end{bmatrix} [11] 和 [ 1 − 1 ] \begin{bmatrix}\kern 7pt1\\-1\end{bmatrix} [1−1],除以 2 \sqrt2 2 得到单位向量,则 S = Q Λ Q T S=Q\Lambda Q^T S=QΛQT: 特征向量在 Q 中 特征值是 9 和 1 [ 5 4 4 5 ] = 1 2 [ 1 1 1 − 1 ] [ 9 0 0 1 ] 1 2 [ 1 1 1 − 1 ] \begin{array}{l}\pmb{特征向量在\,Q\,中}\\\pmb{特征值是\,9\,和\,1}\end{array}\kern 10pt\begin{bmatrix}5&4\\4&5\end{bmatrix}=\frac{1}{\sqrt2}\begin{bmatrix}1&\kern 7pt1\\1&-1\end{bmatrix}\begin{bmatrix}\pmb9&0\\0&\pmb1\end{bmatrix}\frac{1}{\sqrt2}\begin{bmatrix}1&\kern 7pt1\\1&-1\end{bmatrix} 特征向量在Q中特征值是9和1[5445]=21[111−1][9001]21[111−1]现在左乘 [ x y ] \begin{bmatrix}x&y\end{bmatrix} [xy] 再右乘 [ x y ] \begin{bmatrix}x\\y\end{bmatrix} [xy] 得到 x T S x = ( x T Q ) Λ ( Q T x ) \boldsymbol x^TS\boldsymbol x=(\boldsymbol x^TQ)\Lambda(Q^T\boldsymbol x) xTSx=(xTQ)Λ(QTx): x T S x = 平方和 5 x 2 + 8 x y + 5 y 2 = 9 ( x + y 2 ) 2 + 1 ( x − y 2 ) ( 6.5.2 ) {\color{blue}\boldsymbol x^TS\boldsymbol x=平方和}\kern 13pt5x^2+8xy+5y^2=9\Big(\frac{x+y}{\sqrt2}\Big)^2+1\Big(\frac{x-y}{\sqrt2}\Big)\kern 14pt(6.5.2) xTSx=平方和5x2+8xy+5y2=9(2x+y)2+1(2x−y)(6.5.2)系数不是来自于 D D D 的主元 5 5 5 和 9 / 5 9/5 9/5,而是来自于 Λ \Lambda Λ 的特征值 9 9 9 和 1 1 1。平方里面是特征向量 q 1 = 1 2 [ 1 1 ] \boldsymbol q_1=\displaystyle\frac{1}{\sqrt2}\begin{bmatrix}1\\1\end{bmatrix} q1=21[11] 和 q 2 = 1 2 [ 1 − 1 ] \boldsymbol q_2=\displaystyle\frac{1}{\sqrt2}\begin{bmatrix}\kern 7pt1\\-1\end{bmatrix} q2=21[1−1]。
倾斜椭圆的轴指向特征向量。这个解释了为什么 S = Q Λ Q T S=Q\Lambda Q^T S=QΛQT 称为 “主轴定理”,因为它显示了轴。不仅有轴的方向(来自于特征向量),还有轴的长度(来自于特征值)。要完全看到这些,我们用大写字母作为对齐坐标轴后的椭圆的新坐标: Line up 对齐 x + y 2 = X 和 x − y 2 = Y 和 9 X 2 + Y 2 = 1 \pmb{\textrm{Line\,up}\,\,对齐}\kern 14pt\frac{x+y}{\sqrt2}=X\kern 5pt和\kern 5pt\frac{x-y}{\sqrt2}=Y\kern 5pt和\kern 5pt\pmb{9X^2+Y^2=1} Lineup对齐2x+y=X和2x−y=Y和9X2+Y2=1 X 2 X^2 X2 的最大值是 1 / 9 1/9 1/9,短轴的端点是 X = 1 / 3 X=1/3 X=1/3 和 Y = 0 Y=0 Y=0。
注意:大的特征值 λ 1 = 9 \lambda_1=9 λ1=9 得到的是短轴,半长(half-length)是 1 / λ 1 = 1 / 3 1/\sqrt{\lambda_1}=1/3 1/λ1=1/3;小的特征值 λ 2 = 1 \lambda_2=1 λ2=1 得到长轴,半长是 1 / λ 2 = 1 1/\sqrt{\lambda_2}=1 1/λ2=1。
在 x y xy xy 系统中,轴是沿着 S S S 的特征向量;在 X Y XY XY 系统中,轴是沿着 Λ \Lambda Λ 的特征向量 —— 即坐标轴。这些全部都来自于 S = Q Λ Q T S=Q\Lambda Q^T S=QΛQT。
当所有的 λ i > 0 \lambda_i>0 λi>0 时, S = Q Λ Q T S=Q\Lambda Q^T S=QΛQT 正定, x T S x = 1 \boldsymbol x^TS\boldsymbol x=1 xTSx=1 的图形是一个椭圆: 椭圆 [ x y ] Q Λ Q T [ x y ] = [ X Y ] Λ [ X Y ] = λ 1 X 2 + λ 2 Y 2 = 1 ( 6.5.3 ) \boxed{\pmb{椭圆}\kern 15pt\begin{bmatrix}x&y\end{bmatrix}Q\Lambda Q^T\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}X&Y\end{bmatrix}\Lambda\begin{bmatrix}X\\Y\end{bmatrix}=\pmb{\lambda_1X^2+\lambda_2Y^2=1}}\kern 16pt(6.5.3) 椭圆[xy]QΛQT[xy]=[XY]Λ[XY]=λ1X2+λ2Y2=1(6.5.3)轴指向 S S S 的特征向量,半长是 1 / λ 1 1/\sqrt{\lambda_1} 1/λ1 和 1 / λ 2 1/\sqrt{\lambda_2} 1/λ2。
S = I S=I S=I 得到圆 x 2 + y 2 = 1 x^2+y^2=1 x2+y2=1,如果一个特征值是负的(交换 S S S 中的 4 ′ s 4's 4′s 和 5 ′ s 5's 5′s),椭圆将变成一个双曲线(hyperbola),平方和变成了平方的差: 9 X 2 − Y 2 = 1 9X^2-Y^2=1 9X2−Y2=1。若是一个负定矩阵如 S = − I S=-I S=−I,它两个特征值 λ \lambda λ 都是负数, − x 2 − y 2 = 1 -x^2-y^2=1 −x2−y2=1 的图形就没有一个点。
如果 S S S 是 n × n n\times n n×n 的矩阵, x T S x = 1 \boldsymbol x^TS\boldsymbol x=1 xTSx=1 是 R n \pmb{\textrm R}^n Rn 中的一个 “椭球体(ellipsoid)”,它轴的方向是 S S S 的特征向量。
五、重要应用:最小值判断
在点 ( x , y ) = ( 0 , 0 ) (x,y)=(0,0) (x,y)=(0,0) 处,如果 ∂ F / ∂ x = 0 \partial F/\partial x=0 ∂F/∂x=0 且 ∂ F / ∂ y = 0 \partial F/\partial y=0 ∂F/∂y=0,那么 F ( x , y ) F(x,y) F(x,y) 有极小值吗?
对于 f ( x ) f(x) f(x),我们通过微积分来判断是否存在极小值: d f / d x = 0 df/dx=0 df/dx=0 且 d 2 f / d x 2 > 0 d^2f/dx^2>0 d2f/dx2>0。对于 F ( x , y ) F(x,y) F(x,y), 它的两个变量得到一个对称矩阵 S S S,它包含了四个二阶导数。 d 2 f / d x 2 \pmb{d^2f/dx^2} d2f/dx2 为正数的要求变成了矩阵 S \pmb S S 正定:如果 ∂ F / ∂ x = ∂ F / ∂ y = 0 \partial F/\partial x=\partial F/\partial y=0 ∂F/∂x=∂F/∂y=0 且 S S S 正定时, F ( x , y ) F(x,y) F(x,y) 存在极小值。
原因: S S S 显示了 a x 2 + 2 b x y + c y 2 ax^2+2bxy+cy^2 ax2+2bxy+cy2 在 ( x , y ) = ( 0 , 0 ) (x,y)=(0,0) (x,y)=(0,0) 附近全部的重要项, F F F 的二阶导数是 2 a , 2 b , 2 b , 2 c 2a,2b,2b,2c 2a,2b,2b,2c。对于 F ( x , y , z ) F(x,y,z) F(x,y,z) 矩阵 S S S 是 3 × 3 3\times3 3×3 的。
六、主要内容总结
- 正定矩阵的特征值和主元都是正数。
- 通过左上行列式(主子式)可以快速判断正定: a > 0 a>0 a>0 且 a c − b 2 > 0 ac-b^2>0 ac−b2>0。
- 能量 x T S x \boldsymbol x^TS\boldsymbol x xTSx 的图是一个从 x = 0 \boldsymbol x=\boldsymbol 0 x=0 处朝上的 “碗”: x T S x = a x 2 + 2 b x y + c y 2 除了 ( x , y ) = ( 0 , 0 ) ,均为正数 \boldsymbol x^TS\boldsymbol x=ax^2+2bxy+cy^2\kern 10pt除了\kern 1pt(x,y)=(0,0)\,,均为正数 xTSx=ax2+2bxy+cy2除了(x,y)=(0,0),均为正数
- 如果 A A A 是无关列,则 S = A T A S=A^TA S=ATA 正定。
- 椭球体 x T S x = 1 \boldsymbol x^TS\boldsymbol x=1 xTSx=1 的轴沿着 S S S 的特征向量,半长是 1 λ 1\sqrt \lambda 1λ。
- 如果 ∂ F ∂ x = ∂ F ∂ y = 0 \displaystyle\frac{\partial F}{\partial x}=\frac{\partial F}{\partial y}=0 ∂x∂F=∂y∂F=0 且二阶导数矩阵正定,则 F ( x , y ) F(x,y) F(x,y) 有极小值。
七、例题
【例3】对称矩阵的分解: S = L D L T S=LDL^T S=LDLT 来自于主元和乘数; S = Q Λ Q T S=Q\Lambda Q^T S=QΛQT 来自于特征值和特征向量。测试下面的矩阵的正定性:pascal(6)、ones(6)、hilb(6) 和 rand(6)+rand(6)'。
解: pascal(6) 正定,因为它所有的主元都是 1 1 1
ones(6) 半正定,因为它的特征值是 0 , 0 , 0 , 0 , 0 , 6 0,0,0,0,0,6 0,0,0,0,0,6
H = hilb(6) 正定,尽管 eig(H) 得到的特征值非常接近于零。
希尔伯特矩阵 Hilbert matrix: x T H x = ∫ 0 1 ( x 1 + x 2 s + ⋯ + x 6 s 5 ) 2 d s > 0 , H i j = 1 / ( i + j − 1 ) \boldsymbol x^TH\boldsymbol x=\int_0^1(x_1+x_2s+\cdots+x_6s^5)^2ds>0, \,H_{ij}=1/(i+j-1) xTHx=∫01(x1+x2s+⋯+x6s5)2ds>0,Hij=1/(i+j−1)
rand(6)+rand(6)’ 也可能正定,也可能不是正定。使用 MATLAB 测试 20000 20000 20000 次中正定矩阵的个数。
n = 20000;
p = 0;
for k=1:nA = rand(6);p = p + all(eig(A+A')>0); % 正定矩阵的个数
end
disp(p); % 输出 p 的值
可能每次结果不同,本次输出结果是 7 7 7:
【例4】什么时候对称的分块矩阵 M = [ A B B T C ] M=\begin{bmatrix}A&B\\B^T&C\end{bmatrix} M=[ABTBC] 正定?
解: M M M 第二行减去第一行左乘 B T A − 1 B^TA^{-1} BTA−1,得到一个零块,角落里得到舒尔补 S = C − B T A − 1 B S=C-B^TA^{-1}B S=C−BTA−1B: [ I 0 − B T A − 1 I ] [ A B B T C ] = [ A B 0 C − B T A − 1 B ] = [ A B 0 S ] ( 6.5.4 ) \begin{bmatrix}I&0\\-B^TA^{-1}&I\end{bmatrix}\begin{bmatrix}A&B\\B^T&C\end{bmatrix}=\begin{bmatrix}A&B\\0&C-B^TA^{-1}B\end{bmatrix}=\begin{bmatrix}\pmb A&B\\0&\pmb S\end{bmatrix}\kern 15pt(6.5.4) [I−BTA−10I][ABTBC]=[A0BC−BTA−1B]=[A0BS](6.5.4)这两块 A A A 和 S S S 一定要正定。它们的主元就是 M M M 的主元。
【例5】求 − 1 , 2 , − 1 -1,2,-1 −1,2,−1 三对角 n × n n\times n n×n 矩阵 S S S 的特征值。
解: 最好的方法是猜 λ \lambda λ 和 x \boldsymbol x x,然后检验 S x = λ x S\boldsymbol x=\lambda\boldsymbol x Sx=λx。虽说大部分矩阵都无法猜测,但是特殊情况也占了数学的一大部分(纯数学与应用)。
关键信息隐藏在了一个微分方程中,二阶差分矩阵 S S S 就像二阶导数,这些特征值会更容易得到:
特征值 λ 1 , λ 2 , ⋯ 特征函数 y 1 , y 2 , ⋯ d 2 y d x 2 = λ y 且 y ( 0 ) = 0 y ( 1 ) = 0 ( 6.5.5 ) \begin{array}{l}\pmb{特征值\,\lambda_1,\lambda_2,\cdots}\\\pmb{特征函数\,y_1,y_2,\cdots}\end{array}\kern 15pt{\color{blue}\frac{d^2y}{dx^2}=\lambda y\kern 5pt且\kern 5pt\begin{matrix}y(0)=0\\y(1)=0\end{matrix}}\kern 25pt(6.5.5) 特征值λ1,λ2,⋯特征函数y1,y2,⋯dx2d2y=λy且y(0)=0y(1)=0(6.5.5)
尝试 y = sin c x y=\sin cx y=sincx,它的二阶导数是 y ′ ′ = − c 2 sin c x y''=-c^2\sin cx y′′=−c2sincx,假设的 y = sin c x y=\sin cx y=sincx 满足端点条件 y ( 0 ) = 0 = y ( 1 ) y(0)=0=y(1) y(0)=0=y(1),所以式(6.5.5)的特征值是 λ = − c 2 \lambda=-c^2 λ=−c2。
sin 0 = 0 \sin0=0 sin0=0 满足端点条件(这里余弦就被排除了),另一个端点是 x = 1 x=1 x=1 时 y ( 1 ) = sin c = 0 y(1)=\sin c=0 y(1)=sinc=0,则数字 c c c 一定时 k π kπ kπ,它是 π π π 的倍数,则 λ = − k 2 π 2 \lambda=-k^2π^2 λ=−k2π2:$$ 特征值 λ = − k 2 π 2 特征函数 y = sin k π x d 2 d x 2 sin k π x = − k 2 π 2 sin k π x ( 6.5.6 ) \begin{array}{l}\pmb{特征值\,\lambda=-k^2π^2}\\\pmb{特征函数\,y=\sin kπx}\end{array}\kern 15pt{\frac{d^2}{dx^2}\sin kπx=-k^2π^2\sin kπx}\kern 25pt(6.5.6) 特征值λ=−k2π2特征函数y=sinkπxdx2d2sinkπx=−k2π2sinkπx(6.5.6) 现在回到矩阵 S S S,猜它的特征向量。 sin k x \sin kx sinkx 在 n n n 个点 x = h , 2 h , ⋯ , n h x=h,2h,\cdots,nh x=h,2h,⋯,nh 是 0 0 0 到 1 1 1 之间相等的空间点,空间距离 Δ x \Delta x Δx 是 1 / ( n + 1 ) 1/(n+1) 1/(n+1),所以第 n + 1 n+1 n+1 个点有 ( n + 1 ) h = 1 (n+1)h=1 (n+1)h=1, S S S 乘正弦向量 x \boldsymbol x x: S 的特征值是正数 S x = λ k x = ( 2 − 2 cos k π h ) x S 的特征向量是正弦向量 x = ( sin k π h , ⋯ , sin n k π h ) ( 6.5.7 ) {\color{blue}\begin{array}{ll}S\,的特征值是正数&S\boldsymbol x=\lambda_k\boldsymbol x=(2-2\cos kπh)\boldsymbol x\\S\,的特征向量是正弦向量&\boldsymbol x=(\sin kπh,\cdots,\sin nkπh)\end{array}}\kern 15pt(6.5.7) S的特征值是正数S的特征向量是正弦向量Sx=λkx=(2−2coskπh)xx=(sinkπh,⋯,sinnkπh)(6.5.7)
相关文章:

6.5 正定矩阵
一、正定矩阵 这一节关注的是特征值都是正数的对称矩阵。如果对称使得矩阵很重要,那么这个额外的性质(所有的 λ > 0 \lambda>0 λ>0)会使得它更加的特殊。我们所说的特殊并不表示它稀有,特征值都是正数的对称矩阵几乎…...
verilog笔记1
1. 阻塞赋值 阻塞赋值,顾名思义即在一个 always 块中,后面的语句会受到前语句的影响,具体来说就是在同一个always 中,一条阻塞赋值语句如果没有执行结束,那么该语句后面的语句就不能被执行,即被“阻塞”。也…...

游戏引擎学习第81天
仓库:https://gitee.com/mrxiao_com/2d_game_2 或许我们应该尝试在地面上添加一些绘图 在这段时间的工作中,讨论了如何改进地面渲染的问题。虽然之前并没有专注于渲染部分,因为当时主要的工作重心不在这里,但在实现过程中,发现地…...

git系列之revert回滚
1. Git 使用cherry-pick“摘樱桃” step 1: 本地切到远程分支,对齐要对齐的base分支,举例子 localmap git pull git reset --hard localmap 对应的commit idstep 2: 执行cherry-pick命令 git cherry-pick abc123这样就会将远程…...
监控与调试:性能优化的利器 — ShardingSphere
在分布式数据库系统中,监控和调试是确保系统高效运行的关键。ShardingSphere 提供了多种监控和调试工具,帮助开发者实时跟踪和优化性能,识别瓶颈,进行故障排查,从而提升系统的稳定性和响应速度。本文将介绍如何使用 Sh…...
LLVM - 编译器前端 - 理解BNF(巴科斯-诺尔范式)
一:概述 BNF(Backus-Naur Form,巴科斯-诺尔范式)是一种用于描述上下文无关文法的形式语言,广泛应用于定义编程语言、协议和文件格式的语法规则。 下面是一小段类Pascal编程语言,这个编程语言就可以用BNF描述。用BNF描述编程语言的语法规则之后,就可以根据这个规则生成抽…...

服务化架构 IM 系统之应用 MQ
在微服务化系统中,存在三个最核心的组件,分别是 RPC、注册中心和MQ。 在前面的两篇文章(见《服务化架构 IM 系统之应用 RPC》和《服务化架构 IM 系统之应用注册中心》)中,我们站在应用的视角分析了普适性的 RPC 和 注…...

ELF2开发板(飞凌嵌入式)基本使用的搭建
ELF2开发板(飞凌嵌入式) 开箱包裹内容 打开包装,你可以看到以下物品 一个绿联的usb3.0读卡器、sandisk的32g内存卡(太好了)rk3588 4g32g emmc版本ELF2开发板输出为12v 3A的电源适配器(和ipad的充电器外观好像) 图1 外…...

Appium(四)
一、app页面元素定位 1、通过id定位元素: resrouce-id2、通过ClassName定位:classname3、通过AccessibilityId定位:content-desc4、通过AndroidUiAutomator定位5、通过xpath定位xpath、id、class、accessibility id、android uiautomatorUI AutomatorUI自…...

简单的sql注入 buuctf
lovesql 这道题是一个非常简单的sql注入 也就是万能密码 我们只需要注意在输入用户名的地方使用 ’ 将语句提前终止 并且or一个为真的条件 这样整个语句的结果就为真 这就是万能密码的原理 这样我们就得到了密码 然后我们发现这只是密码 于是查看一下字段数 尝试下注入 这里我…...

Ubuntu 24.04 LTS 空闲硬盘挂载到 文件管理器的 other locations
Ubuntu 24.04 LTS 确认硬盘是否被识别 使用 lsblk 查看信息,其中sda这个盘是我找不到的,途中是挂在好的。 分区和格式化硬盘 如果新硬盘没有分区,你需要先分区并格式化它。假设新硬盘为 /dev/sdb,使用 fdisk 或 parted 对硬盘…...
<电子幽灵>开发笔记:BAT基础笔记(一)
BAT脚本基础笔记(一) 介绍 费曼学习法最重要的部分,即把知识教给一个完全不懂的孩子——或者小白。 为了更好的自我学习,也为了让第一次接触某个知识范畴的同学快速入门,我会把我的学习笔记整理成电子幽灵系列。 提示:作为低代码…...

PiliPalaX ( 第三方安卓哔哩哔哩)
PiliPalaX 是一款哔哩哔哩第三方客户端。使用 Flutter 开发,基于PiliPala原版基础上创作出来的X升级版,目前支持Android、IOS客户端。 应用特色 目前着重移动端(Android、iOS)和Pad端,暂时没有适配桌面端、手表端等 https://pan.quark.cn/s/…...

在亚马逊云科技上高效蒸馏低成本、高精度的Llama 3.1 405B模型(上篇)
在2024年的亚马逊云科技re:Invent全球云计算春晚里,亚马逊云科技CEO - Matt Garman介绍了亚马逊云科技的AI模型托管平台Amazon Bedrock上的模型蒸馏服务Model Distillation,令小李哥印象十分深刻。该功能可自动化地为特定场景的知识创建一个蒸馏模型。它…...

Amazon MSK 开启 Public 访问 SASL 配置的方法
1. 开启 MSK Public 1.1 配置 MSK 参数 进入 MSK 控制台页面,点击左侧菜单 Cluster configuration。选择已有配置,或者创建新配置。在配置中添加参数 allow.everyone.if.no.acl.foundfalse修改集群配置,选择到新添加的配置。 1.2 开启 Pu…...
LeetCode_438.找到字符串中所有字母异位词
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s "cbaebabacd", p "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 "cba", 它是 "a…...

一文读懂服务器的HBA卡
什么是 HBA 卡 HBA 卡,全称主机总线适配器(Host Bus Adapter) ,是服务器与存储装置间的关键纽带,承担着输入 / 输出(I/O)处理及物理连接的重任。作为一种电路板或集成电路适配器,HBA…...

Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化
Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化 源数据库Kafka Connect监控测试结果 源数据库 Oracle 19c,本地,CDB数据库主机的I/O带宽为6 GB/s,由此主机上运行的所有数据库共享临时表空间由42个文件组成&#x…...

深度学习 Pytorch 基本优化思想与最小二乘法
在正式开始进行神经网络建模之前,我们还需要掌握pytorch中最核心的基础数学工具——autograd(自动微分)模块。虽然对于任何一个通用的深度学习框架都会提供许多自动优化的算法和现成的loss function,但如果想更深入理解神经网络,对深度学习的…...
C# 实现系统信息监控与获取全解析
在 C# 开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途。比如在系统性能优化工具中,需要实时读取 CPU、GPU 资源信息;在一些特殊的输入记录程序里,可能会涉及到键盘监控;而在图形界面开发中…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...