线性代数 --- Gram-Schmidt, 格拉姆-施密特正交化(上)

2023-10-26

Gram-Schmidt正交化

        在前面的几个最小二乘的文章中,实际上已经看到Gram-Schmidt正交化的影子。在我个人看来,Gram-Schmidt正交化更像是一种最小二乘的简化算法。下面,我会接着上一篇文章中的最后一个例子讲,慢慢引出Gram-Schmidt的想法 ——> 那就是如何“改写”矩阵A中的列向量? 最大程度简化最小二乘的求解过程。

        在上一篇文章的最后一个例子中,给出了和不为0的三个时间点t=(1,3,5)的直线拟合问题b=C+Dt(先不考虑三个时间点所对应的值b)。当时,为了让正规方程A^{T}Ax=A^{T}b更好解,通过把t减去他的均值3,得到T=t-3=(-2,0,2),实现了最小二乘解\hat{x}的快速求解。也就是不再需要机械的通过套用公式\hat{x}=(A^{T}A)^{-1}A^{T}b来计算,而是直接求解简化后的正规方程,就能得到答案,同时也避免了求A^{T}A的逆,这种精度误差较大的运算。下面,我们详细的介绍一下上述过程。

首先,对于三个数据点(t1=1,b1=1),(t2=3,b2=2),(t3=5,b3=4)而言,对应的矩阵A为:

\large A=\begin{bmatrix} 1 &1 \\ 1 &3 \\ 1 &5 \end{bmatrix}

矩阵A的两个列向量的内积不为0,不正交

        \large \large col1=\begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}        \large \large col2=\begin{bmatrix} 1 \\ 3 \\ 5 \end{bmatrix}

\large \large col1^{T}*col2=9

如下图所示:

Matlab code:

close all
clear all

%时间t=[1 3 5]不在0的两侧,A中的两个列向量不正交,生成的A'A不是主对角线左右两边都是0的对角阵
A=[1 1 1;1 3 5]'
b=[1 2 4]'

col1=A(:,1)
col2=A(:,2)

col1'*col2

A'*A

%plot
X=[0,0];
Y=[0,0];
Z=[0,0];
U=[1,1];
V=[1,3];
W=[1,5];

quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)
axis equal
legend('Col1,Col2','Location','northwest')

且b不在A的列空间内,原方程组无解,需要通过最小二乘法来求近似解。套用公式得到\large \hat{x}=(A^{T}A)^{-1}A^{T}b,其中\large A^{T}A\large A^{T}A的逆分别为:

        \large A^{T}A=\begin{bmatrix} 1 &1 &1 \\ 1 &3 & 5 \end{bmatrix} \begin{bmatrix} 1 & 1\\ 1& 3\\ 1& 5 \end{bmatrix} = \begin{bmatrix} 3 & 9\\ 9 & 35 \end{bmatrix}

\large (A^{T}A)^{-1}=\begin{bmatrix} 35/24 & -3/8\\ -3/8 & 1/8 \end{bmatrix}

方程的近似解\large \hat{x}为:

\large \hat{x}=\begin{bmatrix} 1/12\\ 3/4 \end{bmatrix}

套用公式\large p=A\hat{x}=A(A^{T}A)^{-1}A^{T}b,投影p为:

\large p=\begin{bmatrix} 5/6\\ 7/3\\ 23/6 \end{bmatrix}

 ​​​​​


接下来,我们令t=(1,3,5)减去均值,变成了T=(-2,0,2), 矩阵A也变成了:

\large A=\begin{bmatrix} 1 &1 \\ 1 &3 \\ 1 &5 \end{bmatrix} \Rightarrow A=\begin{bmatrix} 1 &-2 \\ 1 &0 \\ 1 &2 \end{bmatrix}

两个列向量的内积为0,矩阵A的两个列向量也从非正交变成了正交

      \large \large col1=\begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}        \large \large col2=\begin{bmatrix} -2 \\ 0 \\ 2 \end{bmatrix}

\large \large col1^{T}*col2=0

如下图所示:  

Matlab code:

%时间t=[-2 0 2]位于0的两侧对称,A中的两个列向量彼此正交,A'A可以生成主对角线左右两边都是0的对角阵
A=[1 1 1;-2 0 2]'

col1=A(:,1)
col2=A(:,2)

col1'*col2

A'*A

%plot
Q1=[1,-2];
Q2=[1,0];
Q3=[1,2];
hold on
quiver3(X,Y,Z,Q1,Q2,Q3,0,'LineWidth',2)

legend('Col1,Col2','New Col1,New Col2','Location','northwest')

同时,我们还发现,如果矩阵A中的列向量彼此正交,那么 \large A^{T}A就变成了对角阵:

   \large \large A^{T}A=\begin{bmatrix} 1 &1 &1 \\ -2 &0 & 2 \end{bmatrix} \begin{bmatrix} 1 & -2\\ 1& 0\\ 1& 2\end{bmatrix} = \begin{bmatrix} 3 & 0\\ 0 & 8 \end{bmatrix}

 补充:

且对角阵有如下性质:

这就是说,通过这一步对矩阵A的改变,达到了简化了计算近似解\large \hat{x}的目的,同时也简化了投影向量p的计算。因为\large A^{T}A为对角阵,所以我们可以直接写出\large A^{T}A的逆,即,直接取所有对角线元素的倒数:

\large (A^{T}A)^{-1}=\begin{bmatrix} 1/3 & 0\\0 & 1/8 \end{bmatrix}

方程的近似解\large \hat{x},也变成了:

\large \hat{x}=\begin{bmatrix} 7/3\\ 3/4 \end{bmatrix}

套用公式\large p=A\hat{x}=A(A^{T}A)^{-1}A^{T}b,投影p仍然是:

\large p=\begin{bmatrix} 5/6\\ 7/3\\ 23/6 \end{bmatrix}

注意:矩阵A的改变虽然改变了\large \hat{x},但投影p不变。(这说明,对于矩阵A的改变没有A的列空间,即从A=[1 1 1;;1 3 5]'到A=[1 1 1;-2 0 2]',矩阵的A的列空间是一样的。因为,如果对他们进行高斯消元,得到的最简行阶梯矩阵是一样的=[1 0 0,0 1 0]')


        更进一步,如果我们把A中的两个彼此正交的列向量(orthogonal vectors)都变成单位正交向量(orthogonal unit vectors),则\large A^{T}A会从对角阵变成单位矩阵I,\large A^{T}A的逆也变成了单位矩阵

        把矩阵A中已经彼此正交的向量,变成单位正交向量的方法是:把A中的每一个向量进行单位化(也叫归一化),即,该向量除以这个向量自身的长度。

根据向量长度的计算公式,列向量col1的长度为\sqrt{3},col2的长度为\sqrt{8},归一化后有:

 \large \large \large col1=\begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix}\Rightarrow \large col1_{unit}=\begin{bmatrix} 1/\sqrt{3} \\ 1/\sqrt{3} \\ 1/\sqrt{3} \end{bmatrix}

\large \large col2=\begin{bmatrix} -2 \\ 0 \\ 2 \end{bmatrix}\Rightarrow \large col2_{unit}=\begin{bmatrix} -2/\sqrt{8} \\ 0 \\ 2/\sqrt{8} \end{bmatrix}

内积为0,彼此正交: 

\large \large col1_{unit}^{T}*col2_{unit}=0        

如下图所示:     

Matlab code:

%把矩阵A中的两个相互正交的列向量变成单位向量,这样一来,A也变成了标准正交矩阵
Length_Col1 = sqrt(sum(col1.^2));
Length_Col2 = sqrt(sum(col2.^2));
col1_unit=col1./Length_Col1
col2_unit=col2./Length_Col2

A_unit=[col1_unit col2_unit]

% check:对于标准正交矩阵而言,有A'A=I
A_unit'*A_unit

%plot
Q1=[1/Length_Col1,-2/Length_Col2];
Q2=[1/Length_Col1,0/Length_Col2];
Q3=[1/Length_Col1,2/Length_Col2];
hold on
quiver3(X,Y,Z,Q1,Q2,Q3,0,'LineWidth',2)

legend('Col1,Col2','NewCol1,NewCol2','Unit NewCol1,Unit NewCol2','Location','northwest')

单位化后,矩阵A又变成了矩阵\large A_{new}

\large A=\begin{bmatrix} 1 & 1\\ 1 & 3\\ 1 & 5 \end{bmatrix}\Rightarrow A=\begin{bmatrix} 1 & -2\\ 1 & 0\\ 1 & 2 \end{bmatrix}\Rightarrow A_{new}=\begin{bmatrix} 1/\sqrt{3} & -2/\sqrt{8}\\ 1/\sqrt{3} & 0\\ 1/\sqrt{3} & 2/\sqrt{8} \end{bmatrix}

以及,新的方程A_{new}x_{new}=b:(注意:为了维持原方程组Ax=b中的A变成\large A_{new}后,方程左右两边保持不变,原方程中的x也要改,变成x_{new}=\sqrt{3}C+\sqrt{8}D)

 \large \large A_{new}x_{new}=\begin{bmatrix} 1/\sqrt{3} &-2/\sqrt{8} \\ 1/\sqrt{3} &0 \\ 1/\sqrt{3}&2/\sqrt{8} \end{bmatrix} \begin{bmatrix} \sqrt{3}C\\ \sqrt{8}D \end{bmatrix}=b

现在,基于这个新矩阵\large A_{new}生成正规方程\large A_{new}^{T}A_{new}x_{new}=A_{new}^{T}b,右边\large A_{new}^{T}A_{new}的计算结果就是单位矩阵I:

\large \large A_{new}^{T}A_{new}=\begin{bmatrix} 1/\sqrt{3} &1/\sqrt{3} &1/\sqrt{3} \\ -2/\sqrt{8}&0 & 2/\sqrt{8} \end{bmatrix} \begin{bmatrix} 1/\sqrt{3} & -2/\sqrt{8}\\ 1/\sqrt{3}& 0\\ 1/\sqrt{3}& 2/\sqrt{8}\end{bmatrix} = \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}

正规方程左边A_{new}^{T}b

\large \large A_{new}^{T}b=\begin{bmatrix} 1/\sqrt{3} &1/\sqrt{3} &1/\sqrt{3} \\ -2/\sqrt{8}&0 & 2/\sqrt{8} \end{bmatrix} \begin{bmatrix} 1\\ 2\\ 4\end{bmatrix} = \begin{bmatrix} 7/\sqrt{3} \\ 6/\sqrt{8} \end{bmatrix}

也就是说,当矩阵A中的列向量变成单位正交向量后,极大的简化了近似解\large \hat{x}的计算。因为\large A_{new}^{T}A_{new}为单位矩阵,使得原来的正规方程变成了:

\large \large 1,Ax=b\Rightarrow A_{new}x_{new}=b

\large \large 2,A_{new}x_{new}=b\Rightarrow A_{new}^{T}A_{new}x_{new}=A_{new}^{T}b

\large 3,Ix_{new}=A_{new}^{T}b \Rightarrow x_{new}=A_{new}^{T}b

与此同时,近似解\large \hat{x}的计算公式也被极大地简化了:

\large \hat{x}_{new}=(A_{new}^{T}A_{new})^{-1}A_{new}^{T}b=(I)^{-1}A_{new}^{T}b=IA_{new}^{T}b=A_{new}^{T}b

最终得到的答案和之前一样:

\large \large \sqrt{3}\hat{C}=7/\sqrt{3}\Rightarrow \hat{C}=7/3

\large \sqrt{8}\hat{D}=6/\sqrt{8}\Rightarrow \hat{D}=3/4

\large \hat{x}=\begin{bmatrix} 7/3\\ 3/4 \end{bmatrix}

      在本例中,归一化后的两个相互正交的单位列向量\large col1_{new}=(1/\sqrt{3},1/\sqrt{3},1/\sqrt{3})\large col2_{new}=(-2/\sqrt{8},0,2/\sqrt{8})是一组标准正交基

Matlab code:

%% 用简化后的公式计算正规方程的解
%x=Q'b
x=A_unit'*b

x_new=[x(1)/Length_Col1; x(2)/Length_Col2]

%P=QQ'
P=A_unit*A_unit'

%projection p=QQ'b
p=P*b

标准正交基(Orthonormal Bases)

现在,我们给出关于标准正交基Orthonormal的正式定义:

        如果一组列向量\large q_{1},q_{2},...q_{n},他们满足彼此之间的内积为0(正交性),且,他们的长度都为1(归一化)。则,我们把这样的一组列向量称为标准正交基Orthonomal。同时,我们也把由标准正交基组成的矩阵用大写的英文字母Q来表示。

        对于标准正交基而言,一个最常见的例子就是x-y二维坐标系。x轴和y轴不仅相互垂直,坐标轴上的每一个刻度都是该轴所对应的单位向量的长度的倍数(如果用q1=(1,0)表示x轴的单位向量,用q2=(0,1)表示y轴的单位向量的话)。q1和q2共同组成了一个2x2矩阵Q,这是一个2x2的单位矩阵。

        对于n维空间,同样有n个坐标轴e1,e2,....en,他们也是一组标准正交基,且他们所组成的矩阵Q也是一个单位阵。

标准正交矩阵(Orthogonal Matrices)

我们把用标准正交基q1,q2...qn所组成的矩阵称为标准正交矩阵Q,Q可以是方阵也可以不是方阵。且,\large Q^{T}Q=I

如果标准正交矩阵Q是一个方阵的话,则有:

\large \large Q^{T}Q=QQ^{T}=I\; and\; Q^{T}=Q^{-1}

也就是说,如果方阵Q是一个标准正交矩阵,则方阵Q的转置就是Q的逆矩阵。

例:任何置换矩阵P(permutation)都是一个标准正交矩阵。

         上图的两个置换矩阵,分别交换了(x,y,z)的位置和交换了(x,y)的位置。因为,这两个置换矩阵P的列向量都是单位向量,且彼此两两正交。所以也是标准正交矩阵。

        最后,在这里补充一条标准正交矩阵Q的又一条重要性质,即,用一个标准正交矩阵Q去乘一个任意向量都不会改变这个向量的长度。(书上上,这一性质还挺重要的,只是我暂时没发现)

标准正交矩阵的投影与最小二乘

        对于一个mxn的矩阵A,如果矩阵A中的列向量都彼此正交,且向量长度都是1。则A是一个标准正交矩阵。若方程组Ax=b无解,则需要根据最小二乘的计算公式分别计算\large \hat{x}=(A^{T}A)^{-1}A^{T}b\large p=A\hat{x}=A(A^{T}A)^{-1}A^{T}b。但如果A是标准正交矩阵Q的话,或者说,如果我们预先把原本不是标准正交矩阵的矩阵A变成标准正交矩阵Q的话,就能极大的简化最小二乘的计算。如下图所示,下图中横线处都是原来需要计算的部分,因为标准正交矩阵的性质,都变成了单位矩阵I,等同于不再需要计算了。

也就是说,如果我们能够在计算任意矩阵A的最小二乘解之前,预先把A改造成标准正交矩阵Q,则能够带来以下的一些计算上的简化与便利。:

第一:他极大地简化了正规方程的表达式,同时,直接给出了最小二乘解。

\large \large A^{T}A\hat{x}=A^{T}b\Rightarrow Q^{T}Q\hat{x}=Q^{T}b\Rightarrow \hat{x}=Q^{T}b(正规方程)

第二:他简化了所有包含\large A^{T}A的计算,同时,更重要的是他也避免了求\large A^{T}A的逆。

\large \large p=A(A^{T}A)^{-1}A^{T}b\Rightarrow p=Q(Q^{T}Q)^{-1}Q^{T}b \Rightarrow p=QQ^{T}b(投影)

 \large \large P=A(A^{T}A)^{-1}A^{T}\Rightarrow P=Q(Q^{T}Q)^{-1}Q^{T} \Rightarrow P=QQ^{T}(投影矩阵)


        标准正交矩阵Q所带来的影响,并不仅仅体现在简化计算公式上,在投影的几何表示上也有相应的体现。当A为正交矩阵Q时,向量的投影(\large p=QQ^{T}b)可写成在每一个列向量上的投影的和的形式:

 其中:

\large a_{1}a_{1}^{T}=\begin{bmatrix} 1 & 0 & . &.& 0\\ 0 & 0 & .&. & .\\ . & . & . & .& .\\ .& . & . & . &. \\ 0& .&. & . &0 \end{bmatrix}

        

\large a_{2}a_{2}^{T}=\begin{bmatrix} 0 & 0 & . &.& 0\\ 0 & 1 & .&. & .\\ . & . & . & .& .\\ .& . & . & . &. \\ 0& .&. & . &0 \end{bmatrix}

依此类推。。。

\large a_{n}a_{n}^{T}=\begin{bmatrix} 0 & 0 & . &.& 0\\ 0 & 0 & .&. & .\\ . & . & . & .& .\\ .& . & . & . &. \\ 0& .&. & . &1 \end{bmatrix}

        

令b=(b1,b2,...,bn),则有:

\large a_{1}a_{1}^{T}b=\begin{bmatrix} 1 & 0 & . &.& 0\\ 0 & 0 & .&. & .\\ . & . & . & .& .\\ .& . & . & . &. \\ 0& .&. & . &0 \end{bmatrix}\begin{bmatrix} b1\\ b2\\ .\\ .\\ bn\\ \end{bmatrix}=\begin{bmatrix} b1\\ 0\\ .\\ .\\ 0\\ \end{bmatrix}

        

\large a_{2}a_{2}^{T}b=\begin{bmatrix} 1 & 0 & . &.& 0\\ 0 & 0 & .&. & .\\ . & . & . & .& .\\ .& . & . & . &. \\ 0& .&. & . &0 \end{bmatrix}\begin{bmatrix} b1\\ b2\\ .\\ .\\ bn\\ \end{bmatrix}=\begin{bmatrix} 0\\ b2\\ .\\ .\\ 0\\ \end{bmatrix}

 依此类推。。。

\large a_{n}a_{n}^{T}b=\begin{bmatrix} 1 & 0 & . &.& 0\\ 0 & 0 & .&. & .\\ . & . & . & .& .\\ .& . & . & . &. \\ 0& .&. & . &0 \end{bmatrix}\begin{bmatrix} b1\\ b2\\ .\\ .\\ bn\\ \end{bmatrix}=\begin{bmatrix} 0\\ 0\\ .\\ .\\ bn\\ \end{bmatrix}

用几何图像来表示就是:

也就是说,向量b在A所张成的列空间上的投影p等于,b在每个坐标轴上的投影的和。

        此外,当A为标准正交矩阵时(当A为方阵时,m=n),A中的列向量可以张满整个\large R^{n}。A中的每个列向量,实际上就是n维正交坐标系中的每个轴所对应的单位向量。对于\large R^{n}中的任意一个向量b,b在A的列空间内,所以可以写成Ax=b的形式,x中的每个元素都是A中各列所对应的权重。当A为Q时,我们把Qx=b写成如下形式:

 

q1,q2,...,qn分别表示n维坐标系中的每个坐标轴上的单位向量,这样一来,上式所表示的就是,在n维直角坐标系中,任意一个向量b等于,他在q1轴,q2轴,。。。qn轴上分量的和。

例如:

\large \large Qx\; \begin{bmatrix} 1 &0 &0 \\ 0 & 1 &0 \\ 0 &0 & 1 \end{bmatrix}\begin{bmatrix} x\\ y\\ z \end{bmatrix}=\begin{bmatrix} x\\ y\\ z \end{bmatrix}\; b

当x=1.5,y=1,z=2时有。

小结:

1,        给定的mxn方程组 Ax=b 无解

2,        左右两边同时乘以\large A^{T},得到正规方程\large A^{T}A\hat{x}=A^{T}b

3,        求解正规方程,得到\large \hat{x}=(A^{T}A)^{-1}A^{T}b

4,        若A是一个标准正交矩阵Q,则改Ax=b为Qx=b

5,        左右两边同时乘以\large Q^{T},得到新的正规方程\large Q^{T}Q\hat{x}=Q^{T}b

6,        \large Q^{T}Q=I极大的简化了原来\large \hat{x}=(A^{T}A)^{-1}A^{T}b计算,得到\large \hat{x}=Q^{T}b

7,        与此同时,也简化了投影p的计算,得到\large p=QQ^{T}b


 (全文完)

作者 --- 松下J27

参考文献(鸣谢):

1,Introduction to Linear Algebra,Fifth Edition - Gilbert Strang

2,线性代数及其应用,候自新,南开大学出版社 1990

3,Linear Algebra and Its Applications, Second Edition, Gilbert Strang, 1980

4,Linear Algebra and Its Applications, Fourth Edition, Gilbert Strang, 2005

增加了插图和对应的matlab代码,2023/05/24

对全文进行了大量的修改。2023/06/25

(配图与本文无关)

版权声明:文中的部分图片,文字或者其他素材,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线性代数 --- Gram-Schmidt, 格拉姆-施密特正交化(上) 的相关文章

  • 矩阵论——正交向量

    向量正交 向量 u u u与向量 v v v正交 u
  • 17. 线性代数 - 矩阵的逆

    文章目录 矩阵的转置 矩阵的逆 Hi 您好 我是茶桁 我们已经学习过很多关于矩阵的知识点 今天依然还是矩阵的相关知识 我们来学一个相关操作 矩阵的转置 更重要的是我们需要认识 矩阵的逆 矩阵的转置 关于矩阵的转置 咱们导论课里有提到过 转置
  • 生成一定相关性的二元正态分布

    生成一定相关性的二元正态分布 摘要 二元正态分布 二元正态分布概率密度函数 二元正态分布随机数的生成 程序实现 多元正态分布的情况 生成服从 N
  • Open3D(C++) 根据索引提取点云

    目录 一 功能概述 1 主要函数 2 源码 二 代码实现 三 结果展示 本文由CSDN点云侠原创 原文链接 爬虫网站自重 把自己当个人 一 功能概述 1 主要函数 std shared ptr
  • 矩阵、行列式

    矩阵 行列式差异 矩阵 行列式 运算结果 可看成一个表格 可看成一个数 行列数 可以不等 必须相等 两个矩阵 或行列式 相等 每个元素对应相等 结果相等即可 相加 各对应元素相加 一行 或列 元素相加 数乘矩阵 常数k乘每个元素 常数k乘一
  • 叉积的意义

    我们知道 向量的叉积可以帮助我们求出一个和已知两个向量构成的平面相互垂直的另一个向量 例如求法向量 而且一般来说 都是求三维空间的向量的叉积 下面我们要讨论的就是各种 为什么如此 考虑两个相互不平行的三维向量 它们的叉积 以行列式形式来表示
  • 第一章----行列式知识点汇总

    目录 线性代数 1 来自b站网课截屏 本人亲自截屏作为笔记 在这里供大家学习分享 需要线性代数全部内容请通过传送门自行下载 第一章 行列式 1 1行列式的定义 二阶行列式的定义 排列与逆序 排列 逆序 定理1 1 1 一个对换 奇偶排列改变
  • 【线性代数】第一章 1.3逆矩阵

    上一篇 1 2 高斯消元法与矩阵的初等变换 目录 一 逆矩阵的概念与性质 二 用行初等变换求逆矩阵 一 逆矩阵的概念与性质 前面我们定义了矩阵的加法 减法和乘法三种运算 自然的 欲在矩阵中引入类似于除法的概念 其关键在于引入类似于倒数的概念
  • 线性代数-----行列式的性质

    行列式的性质 设 D a 11
  • 【线性代数】向量组的线性相关性

    文章目录 向量组及其线性组合 一 向量 二 线性表示 1 线性组合的定义 2 线性表示的定义 3 线性表示的充要条件 三 向量组等价 1 向量组等价定义 2 向量组线性表示的充要条件 3 向量组等价的充要条件 4 向量组线性表示的必要条件
  • 使用克拉默法则进行三点定圆(三维)

    目录 1 三维圆 2 python代码 3 计算结果 本文由CSDN点云侠原创 爬虫网站请自重 1 三维圆 已知不共线的三个点 设其坐标为 x 1 y 1
  • 抖音seo矩阵系统源码搭建开发详解

    抖音SEO矩阵系统是一个用于提高抖音视频在搜索引擎排名的工具 如果你想开发自己的抖音SEO矩阵系统 以下是详细的步骤 开发步骤详解 确定你需要的功能和算法 抖音SEO矩阵系统包含很多功能 比如关键词研究 内容优化 链接建设 社交媒体营销等
  • 【MATLAB】字符串的处理及矩阵的初步学习

    欢迎访问我的个人网站 reality2ideal xyz 内容在CSDN和个人网站上同步更新 字符串处理 字符串矩阵 gt gt ch 123456 qwerty ch 2 6 char 数组 123456 qwerty 字符串矩阵的列数要
  • [ C语言练习题 5 ] 矩阵转置(将矩阵的行列互换得到的新矩阵)

    题目来源 矩阵转置 牛客题霸 牛客网 描述 KiKi有一个矩阵 他想知道转置后的矩阵 将矩阵的行列互换得到的新矩阵称为转置矩阵 请编程帮他解答 输入描述 第一行包含两个整数n和m 表示一个矩阵包含n行m列 用空格分隔 1 n 10 1 m
  • Game101现代计算机图形学作业1

    Game101现代计算机图形学作业1 一 作业描述 二 解决方法 一 模型变换 二 投影变换 绕任意轴旋转 三 总结 四 参考和引用 一 作业描述 给定三维下三个点 v 0 2 0 0
  • lyapunov直接法

    文章目录 定义6 6 Lyapunov第一定理 Lyapunov第二定理 用于刻画渐进稳定 内积分析 定义6 6 Lyapunov第一定理 假设 A C A subset C A C是闭的 如果存在A的邻域D和满足下面两条件的连续函数
  • matlab 计算点云中值

    目录 一 概述 1 算法概述 2 主要函数 二 代码示例 三 结果展示 四 参数解析 输入参数 输出参数 五 参考链接 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 概述
  • 第一章 函数 极限 连续

    第一章 函数 极限 连续 第一节 函数 一 函数的概念及常见函数 1 函数概念 函数的两个基本要素 对应关系 定义域 判断两函数相等 从函数的两基本要素入手 即两函数的对应关系 表达式 定义域相同 对 于 任 意 x
  • Herriott池的建模

    摘要 在气体光谱学中 为了获得足够灵敏的吸收测量 通常要求具有较长的光程长度 充气体积包裹在反射镜之间的多通道单元是满足这一要求的一种方式 同时在途中控制光束发散 避免了对超大设备的需求 Herriott单元是这种系统的一个例子 其特点是使
  • MIT_线性代数笔记:复习二

    目录 第二单元主要内容 例题 第二单元主要内容 正交矩阵 Q 用矩阵形式描述正交性质 投影矩阵 P 最小二乘法 在方程无解时求 最优解 Gram Schmidt 正交化 从任意一组基得到标准正交基 策略是从向量 中减去投影到其它向量方向的分

随机推荐

  • Java使用DES加密解密

    一 DES算法 DES Data Encryption Standard 数据加密标准 它是由IBM公司研制的一种对称密码算法 DES是一个分组加密算法 典型的DES以64位分组对数据加密 加密和解密用的是用一个算法 总长度64位 8字节
  • Spring:基于xml文件的控制反转(ioc)

    1 环境搭建 导入spring使用最基本的坐标
  • VMware Workstation 不可恢复错误: (vmx)

    errors VMware Workstation 不可恢复错误 vmx Exception 0xc0000006 disk error while paging has occurred 日志文件位于 K vmware centos vm
  • 运用决策表设计测试用例

    逻辑关系 逻辑关系 logic relationship 即 依赖关系 在项目管理中 指表示两个活动 前导活动和后续活动 中一个活动的变更将会影响到另一个活动的关系 强制依赖关系 所做工作中固有的依赖关系 可自由处理的依赖关系 由项目队伍确
  • MyBatis:尝试解决Spring Boot集成MyBatis 懒加载时序列化失败的三种方法以及原因FAIL_ON_EMPTY_BEANS

    MyBatis 解决No serializer found for class org apache ibatis executor loader javassist JavassistProxyFactory EnhancedResult
  • python3 Flask 简单入门(MVC模板类)

    跟上一篇文章一样的内容 Flask默认支持的模板是jinja2 jinja2简单实用 1 在Jinja2模板中 我们用 name 表示一个需要替换的变量 很多时候 还需要循环 条件判断等指令语句 在Jinja2中 用 表示指令 2 循环输出
  • win10 装黑苹果 完整教程

    一 材料准备 1 虚拟机软件VMware 2 适用于Windows版本的VMware解锁安装Mac OS的补丁 3 Mac OS X 10 10的黑苹果镜像 以上材料我都为你贴心地准备齐了 在我的云盘获取 链接 https pan baid
  • VUE3+Element-Plus form表单封装

    VUE3 Element Plus form表单封装 新建form组件页面 创建index vue 新建form组件页面 在components中创建新组件 将需要的form表单中常用的UI组件引入 vue3创建组件和vue2中多少有点区别
  • 大学《数据库原理与技术》复习题(二)

    数据库复习题 一 选择题 1 B 是按照一定的数据模型组织的 长期存储在计算机内 可为多个用户共享的数据的集合 A 数据库系统 B 数据库 C 关系数据库 D 数据库管理系统 2 数据库系统的基础是 A 数据结构 B 数据库管理系统 C 操
  • LVGL V8

    本文适用于LVGL V8版本 LVGL simulator vs2019 官方工程 lv sim visual studio 使用注意事项 1 将官方工程从github上下载下来 最好使用git 将整个工程clone下来 因为工程内部有依赖
  • c++坑人

    大家好 我是LCR 今天为大家带来的是c 中的弹窗病毒 当然你也可以把它理解为坑人代码 如果喜欢这篇文章 可以给我点一个赞吗 代码解释 system是c语言库里面自带的一个函数 start的原本意思为 跳转 后面本应接网址 当你的后面为空时
  • 多功能翻译工具:全球翻译、润色和摘要生成

    openai translator openai translator Stars 18 1k License AGPL 3 0 这个项目是一个多功能翻译工具 由 OpenAI 提供支持 可以进行全球单词翻译 单词润色和摘要生成等操作 提供
  • python项目导出依赖包requirements.txt文件

    只导出当前项目依赖包 注意 使用 pip freeze gt requirements txt 会导出大量无用的文件 包括很多个包信息 其实这里是把你当前 python 环境的所有包的相关信息导出来了 如果我们只需导出当前项目所需的依赖包
  • 如何创建线程,多线程下又如何上锁保护公共资源?

    目录 一 创建线程几种方法 1 继承thread类 重写run方法 2 实现runnable接口 重写run方法 3 使用匿名类 或 lamda表达式 让代码更简洁 4 Callable 接口 5 使用线程池创建线程 二 多线程下 需要上锁
  • canvas画布合成

  • windows自动颁发证书

    首先去配置组策略 计算机配置 windows设置 安全设置 公钥策略 证书注册策略和证书服务客户端 不需要勾选禁用用户配置注册策略服务器 用户配置也这样配置 最后进入证书管理器 找到证书模板 右键证书管理 看见一个计算机 去右键 安全这里允
  • 虚拟内存笔记

    虚拟内存 为什么要有虚拟内存 有些进程实际需要的内存很大 超过物理内存的容量 比如一个几十G的游戏 要运行在内存为8G的计算机上 由于多道程序设计 主存是同时可以存放多个进程的逻辑及数据的 这就使得每个进程可用的物理内存更加稀缺 不可能无限
  • [1194]GitLab在web端合并分支

    文章目录 gitlab 在 web 端合并分支 1 1 发起合并操作 1 2 选择源分支和目标分支 1 3 输入合并备注 1 4 合并检查 1 5 完成合并 1 6 查看提交记录 修改的文件及内容 gitlab 在 web 端合并分支 1
  • 概率密度估计(Probability Density Estimation)--Part3:混合模型

    目录 引入 求解方法 MLE法 Clustering E M EM EM算法 大概的说明 较为详细的说明 高斯混合中的
  • 线性代数 --- Gram-Schmidt, 格拉姆-施密特正交化(上)

    Gram Schmidt正交化 在前面的几个最小二乘的文章中 实际上已经看到Gram Schmidt正交化的影子 在我个人看来 Gram Schmidt正交化更像是一种最小二乘的简化算法 下面 我会接着上一篇文章中的最后一个例子讲 慢慢引出