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
以上是自己寫的,也可以呼叫scipyfrom 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
施密特正交化的原理就不在此贅述了,可以自己從網上找一些線性代數的教材看一看,並且自己動手做一下,就可以理解了 施密特正交化
對於一組向量,有時候我們需要對其進行正交化處理,也就是說,該組向量中任意兩個向量都是互相垂直的。那麼,要怎麼做呢?假設只有兩個向量,vec v 0 和 vec v 1 正交化的幾何示意圖如下所示。假設正交化之後的向量為 vec w 0 和 vec w 1 那麼由圖可知,可得 vec w 0 vec ...
列正交化 施密特正交化方法
a1 1 1 0 0 a2 1 0 1 0 a3 1 0 0 1 a a1 a2 a3 u a m,n size u y u y 1 y 1 norm y 1 for k 2 n y k u k endfor k 2 n for j k n y j y j y k 1 y j y k 1 endp1...
向量的施密特正交化
先看乙個例子 設三個向量分別為 1 2 3 1,1,0 t 1,0,1 t 1,1,1 t 那麼對 1 2 正交化 1 2 1 1 1,0 t 2 2,1 1,1 1 1,0 1 t 1 1 0 1 1 01 1 1 1 0 0 1,1,0 t 1 0,1 t 12 1 1,0 t 12 1 1,2...