施密特正交化
import numpy as np
A=np.mat([[1,3 ,-2],
[1,3 ,0],
[1,-1,6],
[1,-1,8]])
if np.linalg.matrix_rank(A)<A.shape[1]:
print('A中的列向量组线性相关,不能正交化!')
else:
print('A中的列向量组线性无关,可以正交化!')
a=[A[:,i] for i in range(A.shape[1])]
def b(i):
if i==0:return a[0]
else:
return a[i]-sum(float(a[i].T*b(k)/(b(k).T*b(k)))*b(k) for k in range(i))
B=b(0)
for i in range(1,A.shape[1]):B=np.column_stack((B,b(i)))
print(B)