✔ 最佳答案
你的數據是遞減的,但 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,先求出整數解.