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

Gram-Schmidt正交化过程

        到目前为止,我们都是在反复强调“对于无解的方程组Ax=b而言,如果矩阵A是标准正交矩阵的话,就怎么怎么好了。。。。”。因为,不论是求投影还是计算最小二乘的正规方程,他们都包含了A^{T}A的逆的计算。只有当A为标准正交矩阵Q时,就不再需要计算A^{T}A的逆了,这时Q^{T}Q=I,可以直接求出最优解\hat{x}=Q^{T}b。在实际应用中,为了简化最小二乘的计算,人们会优先把原本不是标准正交矩阵的A,提前变成标准正交矩阵Q。

        本文的目的,正是要介绍这种,可以把任意矩阵A变成标准正交矩阵Q的方法。这个方法是由丹麦数学家Jørgen Pedersen Gram和德国数学家Erhard Schmidt共同发明的,被称为Gram-Schmidt正交化过程(Gram–Schmidt process)。是一种,从一组任意向量出发,构造出一组彼此正交的标准正交基的过程。

Jørgen Pedersen Gram

Erhard Schmidt

Gram-Schmidt process:

        现有一个无解的方程组Ax=b,矩阵A由三个线性无关的列向量a,b,c组成(如下图所示)。则,Gram-Schmidt正交化过程可以简单的归纳为:

        首先,基于列向量a,b,c去构造三个相互正交的列向量A,B,C(这是第一步,这一过程被称为向量的正交化,这是Gram的主要贡献)。构造好以后,我们分别让A,B,C除以他们各自的长度,最终得到我们想要的一组标准正交基q_{1},q_{2},q_{3}(这是第二步,这一过程被称为是向量的归一化,这是schmidt的主要贡献)。最后,令q_{1},q_{2},q_{3}分别为矩阵的三个列向量,得到标准正交矩阵Q。

Part I:正交化

第一步:令向量A等于向量a,得到第一个向量A,确定了第一个方向。

A=a

第二步:因为我要构造的一组正交基是相互正交的,因此,我们的第二个向量B必须垂直于向量A。我们令b减去b在A上的投影向量p_{b},得到b在垂直于A方向上的另一个分量B。事实上,B就是垂直于投影向量p_{b}的误差向量e_{b}

B=b-p_{b}=b-\frac{A^{T}b}{A^{T}A}A

 第三步:用向量c减去c在A和B所张成的子空间(平面)上的投影p_{c},得到垂直于该子空间的另一个分量C。即,垂直于投影向量p_{c}的误差向量e_{c}。新向量C,既垂直于A也垂直于B。

C=c-p_{c}=c-\frac{A^{T}c}{A^{T}A}A-\frac{B^{T}c}{B^{T}B}B

至此,已经完成了向量的正交化。

Part II:归一化

第四步:分别对彼此正交的A,B,C进行归一化,得到向量长度都为1的一组标准正交基q_{1},q_{2},q_{3}

q_{1}=\frac{A}{\left \| A \right \|},\; q_{2}=\frac{B}{\left \| B \right \|},\; q_{3}=\frac{C}{\left \| C \right \|}

至此,已经完成了所有向量的归一化。 

        如果还有d向量的话,则需要从d减去d在已经构造好的向量A,B,C三个方向上的投影(或者说是减去d在A,B,C所张成的空间上的投影),得到垂直于向量A,B,C的另一个分量D。 

        Gram Schmidt正交化过程的核心思想就是:不断的用新的已知向量(例如b),减去这个向量在之前已经构造好的向量(例如A)上的投影分量(例如p_{b}),得到我们要找的垂直分量/正交向量(例如e_{b})。

即:old_vector - projection  = new_vector

Example: 

        最后,我们给出一个Gram Schmidt正交化计算过程的例子,一开始有三个彼此不正交的线性无关向量a,b,c,其中a=[1, -1, 0], b=[2, 0, -2], c=[3, -3, 3],如下图所示:

用Gram schmidt正交化的idea去构建一组包含三个列向量的正交基q1,q2,q3

 q1,q2,q3是一组标准正交基,他们彼此正交且他们的长度都是1,如下图所示:

这是包含中间结果A,B,C的图示,可见q1,q2,q3与A,B,C的方向相同,唯一不同的是A,B,C还没有归一下:

Matlab code:

%% Example of CSDN 
%Original points
X=[0,0,0];
Y=[0,0,0];
Z=[0,0,0];
U=[1,2,3];
V=[-1,0,-3];
W=[0, -2, 3];
quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)
axis equal
legend('a,b,c','Location','northwest')
hold on

%Orthogonal vectors
U=[1,1,1];
V=[-1,1,1];
W=[0,-2,1];
quiver3(X,Y,Z,U,V,W,0,'LineWidth',1)
axis equal
legend('a,b,c','A,B,C','Location','northwest')

%Orthonormal bases
U=[1/sqrt(2),1/sqrt(6),1/sqrt(3)];
V=[-1/sqrt(2),1/sqrt(6),1/sqrt(3)];
W=[0,-2/sqrt(6), 1/sqrt(3)];
quiver3(X,Y,Z,U,V,W,0,'LineWidth',3)
axis equal
legend('a,b,c','A,B,C','q1,q2,q3','Location','northwest')

 (全文完)

作者 --- 松下J27

参考文献(鸣谢):

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

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

3, https://en.wikipedia.org/wiki/J%C3%B8rgen_Pedersen_Gram

4,https://en.wikipedia.org/wiki/Erhard_Schmidt

为了纪念这两个算法的发明者Gram和Schmidt,我在文中补充了这两位杰出数学家的肖像。2023/06/25

格言摘抄:

        慢慢来才是最快的。--- 无名氏

(配图与本文无关)

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

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

松下J27

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值