自己动手写施密特正交化

来源:互联网 发布:防伪码生成算法php 编辑:程序博客网 时间:2024/06/18 17:02
[python] view plain copy
  1. import numpy as np  
  2. A = np.array([[1,1,0],[0,1,1],[1,0,1]],dtype=float)  
  3. Q = np.zeros_like(A)  
  4. m = shape(Q)[0]  
  5. n = shape(Q)[1]  
  6. cnt = 0  
  7. for a in A.T:  
  8.     u = np.copy(a)  
  9.     for i in range(0, cnt):  
  10.         u -= np.dot(np.dot(Q[:, i].T, a), Q[:, i]) # 减去待求向量在以求向量上的投影  
  11.     e = u / np.linalg.norm(u)  # 归一化  
  12.     Q[:, cnt] = e  
  13.     cnt += 1  
  14. print Q  
以上是自己写的,也可以调用scipy
[python] view plain copy
  1. from scipy import linalg  
  2. A = np.array([[1,1,0],[0,1,1],[1,0,1]])  
  3. a = linalg.orth(A)  
  4. print array(linalg.orth(A),dtype=float)  
  5. print dot(A,A.T)-1  

施密特正交化的原理就不在此赘述了,可以自己从网上找一些线性代数的教材看一看,并且自己动手做一下,就可以理解了

http://blog.csdn.net/panghaomingme/article/details/60963918

原创粉丝点击