施密特正交化
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中的列向量組線性相關(guān),不能正交化!')
else:
? ?print('A中的列向量組線性無關(guān),可以正交化!')
? ?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)
標(biāo)簽: