0
有兩個double變量:司在雙精度
a > 0
b >= 0
這可能是微小的數字。 'a'表示矩陣的奇異值,'b'表示常數。作爲正則化最小二乘解決方案的一部分,有必要計算量:
c = a*a/(a*a + b)
然而,如果確實是小的(矩陣的即小的奇異值),a*a
可能無法在雙精度表示的。我怎樣才能在a,b的給定範圍內以數值穩定的方式計算這個商?
有兩個double變量:司在雙精度
a > 0
b >= 0
這可能是微小的數字。 'a'表示矩陣的奇異值,'b'表示常數。作爲正則化最小二乘解決方案的一部分,有必要計算量:
c = a*a/(a*a + b)
然而,如果確實是小的(矩陣的即小的奇異值),a*a
可能無法在雙精度表示的。我怎樣才能在a,b的給定範圍內以數值穩定的方式計算這個商?
我可以想出的最好的是:
c = 1/(1 + b/a/a)
爲了推導該同等,請注意,1/Ç是(一個^2 + b)/ ç,然後分解分數。這種形式可能在數值上更穩定,因爲它不需要在任何時間點計算a^2。如果b和a都很小,它仍然會失去精度。如果必須處理這種情況,你可能會看看泰勒級數的擴展(可能會或可能不適用於這種情況)。