2 回答
TA貢獻1825條經驗 獲得超4個贊
為了簡化描述,我將假設點由復數表示。
您的問題可以這樣表述:
我們有n+1 個點,任意設置為 (0,0) 的點和 n *unknown" 點,你有m 個嘈雜的觀察結果,m比n大(很多) 。
觀察對應于對點i和j之間差異的(輕微)錯誤估計:
Y[k] = X[i] - X[j]
那么,關系集可以表示為:
Y = A X + N
其中X是未知點的向量,向量Y對應于觀測值,A是定義觀測值的矩陣,N代表觀測值的誤差。
第一種方法是 LS(最小二乘)方法。
通過使用 Moore-Penrose 偽逆,我們可以通過以下方式獲得 LS 估計:
X1 = (A^H A)^(-1) A^H Y
其中 A^H 是A的 Hermitian 轉置。由于此處A是實數,因此它對應于A的轉置。這種估計最小化
min norm of (AX - AX1)
另一種方法是假設N是方差為 s2 的加性高斯噪聲。我們可以通過以下方式獲得 MMSE/Wiener 估計:
X2 = (A^H A + s2 I)^(-1) A^H Y
其中 I 是大小為n的單位矩陣。這個估計最小化:
min E (norm (X2 - X)) = min MSE (Mean Square error)
其中E(.)代表統計平均值(期望)。這是一種隨機方法(我們最小化期望),與 LS 方法相反。
有時,我們不能假設噪聲是高斯分布的,或者我們不知道方差。此外,根據矩陣 A 的奇異值,LS 估計可能看起來并不完全穩定。因此,有時會使用第三種方法:
X2 = (A^H A + lambda I)^(-1) A^H Y
其中 lambda 是一個(小的)松弛系數,以避免 LS 方法可能出現的不穩定性。
注意:如果矩陣求逆過于復雜,而且觀察誤差很小,當然可以使用迭代方法來改進估計。
TA貢獻1806條經驗 獲得超5個贊
我不知道這個問題的名字,但是https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html可以找到最小化平方和的解決方案錯誤。
您已經將第一個點固定在原點。您可以堅持認為第二個點位于 x 軸上。然后導致像這樣的點列表:(0, 0), (0, y1), (x2, y2), (x3, y3), ..., (xn, yn)。現在您只需編寫一個函數來獲取[y1, x2, y2, x3, yx, ..., xn, yn]并返回誤差平方和。優化它。該BFGS方法可能是一個不錯的選擇。
添加回答
舉報
