Curve fit 近似曲線函數計算

2014-11-17 8:44 pm
以下是我(x,y)的數據

(0,0)
(24,-0.35)
(48,-0.61)
(72,-1.64)
(168,-3.07)
(336,-4.71)
(504,-9.92)
(672,-14.66)
(840,-15.45)
(1008,-15.96)

我想要的近似的曲線函數為 y = A + B * ln(1 + C * x)

要怎麼利用以上的數據計算出A, B, C的係數?
更新1:

謝謝Lopez的詳細回覆, 但小的不材, 想再請教幾個問題, 1. if 迴圈中的[L1] [L2] [L3] [L4] 是什麼意思呢? 2. 這個方法似乎是從-10~10之間慢慢找出接近的係數, 有沒有一套完整的計算流程是可以直接求得係數的呢??

回答 (2)

2014-11-18 1:42 am
✔ 最佳答案
你的數據是遞減的,但 y = ln(x) 是遞增函數,
所以 B < 0

又 y = ln(x) 之定義域為 x > 0 ,
所以 C > 0
(其實1+Cx > 0 即可, 取C > 0是保險範圍,也可忽略x的影響)

要計算近似曲線的係數,可仿照迴歸係數的計算,
採用最小平方法:
SSE =Σε^2 = Σ( y - yhat )^2

先將係數範圍限縮在 ( -10, 10 ) ,每隔0.1取一點估計,
再繪圖看近似情況是否足夠.
依照以上資訊,利用Excel VBA計算,程式碼如下:


圖片參考:https://s.yimg.com/rk/AC09299269/o/849651405.png

執行結果:

圖片參考:https://s.yimg.com/rk/AC09299269/o/37937409.png


再繪圖觀察近似情況:

圖片參考:https://s.yimg.com/rk/AC09299269/o/71659672.png

(藍色為原始數據,紅色為近似曲線)

以上完整的Excel檔請參考:
http://www.FunP.Net/300202

Ans:
係數取至小數一位時, A = 4.3 , B = - 3.8 , C = 0.1 可得最佳近似.

2014-11-18 13:16:01 補充:
[L1] 表示 L1 儲存格,
所以 [L2] [L3] [L4] 也就是分別表示L2, L3, L4儲存格,
[L1] = A 就是在 L1 儲存格顯示 A值,
所以 L 欄只是用來存放 A,B,C,SSE 的區域.

2014-11-18 13:33:19 補充:
是否有完整的計算流程,我也不知,
雖然在學校有學過數值分析,但因離開學校多年,
早就忘光了,解這題純粹考"直覺"來解.
"數學"與"程式"我都當做工具,哪種容易就用哪種,
這題用數學解很費時,寫程式解不用10分鐘,
所以我才用程式解.

2014-11-18 13:48:30 補充:
若用數學解,你可以試試看以下方法:
SSE = Σ( y - yhat )^2 = Σ( y - A - B*ln(1+C*x) )^2
再分別對 A, B, C 偏微分:
∂SSE / ∂A = ......... = 0 (請自行列出.....的部分)
∂SSE / ∂B = ......... = 0
∂SSE / ∂B = ......... = 0
再試著解出係數A,B,C.
解的過程免不了要計算:
Σx , Σ ln(1+C*x) , Σ y*ln(1+C*x)
計算量大,還是要靠電腦軟體,所以我才捨棄此法.

2014-11-18 13:59:44 補充:
這題在(-10, 10)就找到相當近似的解,
但也許其他組數據在(-10,10)內找不到相當近似的解,
這時"有可能"靠近臨界點,靠近10,或靠近-10,
(我是第一次解這類問題,所以只能大膽猜測)
若靠近臨界點, For 迴圈的上下界就需要再調整,
如何調整只能隨機應變.

2014-11-18 14:13:41 補充:
例如A解出9.9, 則 For 迴圈:
for A = -10 to 10 step 0.1
調整成:
for A = 10 to 100
因為程式計算量大,所以去掉step 0.1,先求出整數解.
2014-11-18 4:06 am
非線性模式用最小平方法, 通常沒有公式解, 比較常用的是
迭代近似.

Lopez 的解法是一種搜尋法, 如果希望有更精確解, 可以該
法找到的解為初值, 再用迭代法得到更精確結果.

話說回來, 所謂 "更精確解" 比粗略搜尋結果, 是否顯著改
善(降低)殘差平方和, 在實務上是重要的.


收錄日期: 2021-05-04 01:55:24
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20141117000015KK01951

檢視 Wayback Machine 備份