程式扎記: [ RubyAlg ] MIT Linear Algebra, Spring 2005 - Lec15 (Projection)

標籤

2015年1月16日 星期五

[ RubyAlg ] MIT Linear Algebra, Spring 2005 - Lec15 (Projection)


Source From Here


Projection

如上圖, 考慮 向量 b 在 向量 a 上面的投影為 p (p = xa, 向量 p 為 a 向量的常數倍); 而 p 向量加上 e 向量等於 b. 因為 e 向量與 b 向量垂直, 因此:
a^T * e = a^T * (b - xa) = 0

展開後並移項可以得到:
x*a^T*a=a^T*b

因此我們可以得到 b 向量在 a 向量上投影的常數 x (p = xa):


因此向量 p 便可以推得為 a 向量上的常數倍:


接著考慮下面簡單範例:


接著便可以利用剛剛得到的公式來使用代碼得到 p 向量:
  1. require "alg/math/LinearAlgebra"  
  2.   
  3. LA = LinearAlgebra  
  4.   
  5. b = Vector.new([1,1])  
  6. a = Vector.new([2,0])  
  7. printf("b:%s\n", b)  
  8. printf("a:%s\n", a)  
  9. p = a*(a.inner(b).to_f/a.inner(a))  
  10. printf("p=:%s\n", p)  
執行結果如直覺為 p=[1,0] (其實就是 p 向量在 x 上面的分量):
b:[1, 1]
a:[2, 0]
p=:[1.0, 0]

接著思考是否有個投影 vector, 公式 或是 matrix P, 讓向量 b 可以透過它得到某個向量的投影量:


Why Projection? (20:00)
當 Ax = b 沒有解時, 我們能做的便是求近似解! 因此原先方程式會改成 Ax = p (p 為 b 在 column space of A 上的投影), 此時方程式會有解:


因為我們修改了方程式, 因此新方程式的 x 也就不是原先方程式的 x, 因此我們給它帶個帽子:


接下來會有一長串推論, 主要是想知道帶帽子的 x 與 p 向量的特徵:


整理 P 矩陣特性如下:
P^T = P
P^2 = P

Least Squares Fitting by A Line
接下來的主題延續問題當 Ax=b 沒有解, 那近似解該怎麼求? 考慮我們有三個點: (1,1), (2,2), (3,2). 如果想找到一條直線能夠穿過這三個點基本上是不可能, 因此只能求 "最接近" 這三個點的一條直線: b = C + Dt


方程式長相如下, 基本上可以很直覺地看出無解:


因此下一章節便要來介紹如何求近似解.

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!