1、施密特正交化的几何解释
给定一组基α1,α2,...,αn,将其变换成另外一组正交基β1,β2,...,βn,使这两组基等价
施密特正交化方法:
如图红色部分即为投影部分
则蓝色部分向量为
对应两个向量的施密特法则
可见蓝色向量为β2与β1是垂直的
而当向量个数为3时,对应三维空间的几何解释如图
其中绿色的为需要正交的原始基αi(α1是红色的因为α1同时也是β1)
将二维得到的β2平移到坐标原点出后则α3在xoy平面的投影即是
即α3在β1和β2上的投影组成的平行四边形的斜边,则得到的β3就是α3与该投影的向量差,即红色部分的β3,显然可以看出来β1,β2,β3是正交的。
同样可以推广到三维以上的欧氏空间Rm,即施密特正交公式。
2、代码实现
import numpy as np
A = np.array([[1,1,0],[0,1,1],[1,0,1]],dtype=float)
Q = np.zeros_like(A)
m, n = Q.shape
cnt = 0
for a in A.T:
u = np.copy(a)
for i in range(0, cnt):
u -= np.dot(np.dot(Q[:, i].T, a), Q[:, i]) # 减去待求向量在以求向量上的投影
e = u / np.linalg.norm(u) # 归一化
Q[:, cnt] = e
cnt += 1
print(Q)
或者
from scipy import linalg
A = np.array([[1,1,0],[0,1,1],[1,0,1]])
a = linalg.orth(A)
print(np.array(linalg.orth(A),dtype=float))
print(np.dot(A,A.T)-1)
参考:
1、施密特正交化的几何解释
2、自己动手写施密特正交化