自己动手写施密特正交化

    xiaoxiao2021-03-25  123

    import numpy as np A = np.array([[1,1,0],[0,1,1],[1,0,1]],dtype=float) Q = np.zeros_like(A) m = shape(Q)[0] n = shape(Q)[1] 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 以上是自己写的,也可以调用scipy from scipy import linalg A = np.array([[1,1,0],[0,1,1],[1,0,1]]) a = linalg.orth(A) print array(linalg.orth(A),dtype=float) print dot(A,A.T)-1施密特正交化的原理就不在此赘述了,可以自己从网上找一些线性代数的教材看一看,并且自己动手做一下,就可以理解了
    转载请注明原文地址: https://ju.6miu.com/read-14330.html

    最新回复(0)