Source From Here
Projection
如上圖, 考慮 向量 b 在 向量 a 上面的投影為 p (p = xa, 向量 p 為 a 向量的常數倍); 而 p 向量加上 e 向量等於 b. 因為 e 向量與 b 向量垂直, 因此:
展開後並移項可以得到:
因此我們可以得到 b 向量在 a 向量上投影的常數 x (p = xa):
因此向量 p 便可以推得為 a 向量上的常數倍:
接著考慮下面簡單範例:
接著便可以利用剛剛得到的公式來使用代碼得到 p 向量:
執行結果如直覺為
p=[1,0] (其實就是 p 向量在 x 上面的分量):
接著思考是否有個投影 vector, 公式 或是 matrix P, 讓向量 b 可以透過它得到某個向量的投影量:
Why Projection? (20:00)
當 Ax = b 沒有解時, 我們能做的便是求近似解! 因此原先方程式會改成 Ax = p (p 為 b 在 column space of A 上的投影), 此時方程式會有解:
因為我們修改了方程式, 因此新方程式的 x 也就不是原先方程式的 x, 因此我們給它帶個帽子:
接下來會有一長串推論, 主要是想知道帶帽子的 x 與 p 向量的特徵:
整理 P 矩陣特性如下:
Least Squares Fitting by A Line
接下來的主題延續問題當 Ax=b 沒有解, 那近似解該怎麼求? 考慮我們有三個點: (1,1), (2,2), (3,2). 如果想找到一條直線能夠穿過這三個點基本上是不可能, 因此只能求 "最接近" 這三個點的一條直線: b = C + Dt
方程式長相如下, 基本上可以很直覺地看出無解:
因此下一章節便要來介紹如何求近似解.
Projection
如上圖, 考慮 向量 b 在 向量 a 上面的投影為 p (p = xa, 向量 p 為 a 向量的常數倍); 而 p 向量加上 e 向量等於 b. 因為 e 向量與 b 向量垂直, 因此:
展開後並移項可以得到:
因此我們可以得到 b 向量在 a 向量上投影的常數 x (p = xa):
因此向量 p 便可以推得為 a 向量上的常數倍:
接著考慮下面簡單範例:
接著便可以利用剛剛得到的公式來使用代碼得到 p 向量:
- require "alg/math/LinearAlgebra"
- LA = LinearAlgebra
- b = Vector.new([1,1])
- a = Vector.new([2,0])
- printf("b:%s\n", b)
- printf("a:%s\n", a)
- p = a*(a.inner(b).to_f/a.inner(a))
- printf("p=:%s\n", p)
接著思考是否有個投影 vector, 公式 或是 matrix P, 讓向量 b 可以透過它得到某個向量的投影量:
Why Projection? (20:00)
當 Ax = b 沒有解時, 我們能做的便是求近似解! 因此原先方程式會改成 Ax = p (p 為 b 在 column space of A 上的投影), 此時方程式會有解:
因為我們修改了方程式, 因此新方程式的 x 也就不是原先方程式的 x, 因此我們給它帶個帽子:
接下來會有一長串推論, 主要是想知道帶帽子的 x 與 p 向量的特徵:
整理 P 矩陣特性如下:
Least Squares Fitting by A Line
接下來的主題延續問題當 Ax=b 沒有解, 那近似解該怎麼求? 考慮我們有三個點: (1,1), (2,2), (3,2). 如果想找到一條直線能夠穿過這三個點基本上是不可能, 因此只能求 "最接近" 這三個點的一條直線: b = C + Dt
方程式長相如下, 基本上可以很直覺地看出無解:
因此下一章節便要來介紹如何求近似解.
沒有留言:
張貼留言