2016-10-20 51 views
2

我想我的數據擬合這條曲線:如何使用GNUplot獲得更好的指數擬合?

f(x) = b + n*exp(-x/u) 
fit f(x) "data1" using 2:3 via b,n,u 

我得到這個配合是不接近理論:

image of bad automatic fit

然後我用的初始參數,從理論和無重新計算適合度,我會得到更好的結果。

如果我重新計算合適,它的第一個循環之後會忽略我的初始參數和返回的第一個結果。

我試了幾件事情。我將FIT_LIMIT減少了20個數量級,但它不會改變任何內容。我也偏重於錯誤的數據,這樣我就可以更加重視前幾個數據點,然後我可以更好地適應,但仍然不好。

這是輸出:

image of output of values

問題:

  1. 這不是很清楚,我的問題是數學還是GNUPLOT只是做的事情錯了,在一些地方停止最低限度或達到某種限制或某些此類事情。我已經忘記了卡方合身作品的一切。

  2. 是否有某種方式來獲得更好的自動貼合,最好解決,包括在我的數據錯誤之前?

回答

3

兩個想法:

  1. 你似乎有相當數量的周圍數據點(0,0),它看起來像文物,可能會影響您的配合。

  2. 嘗試在數域擬合,即:

    f(x) = b + n*exp(-x/u) 
    fit log(f(x)) "data1" using 2:(log($3)) via b,n,u 
    

    這招通常工作如果大值稱霸契合 - 從擬合曲線的偏差權衡對數域少。這似乎並不是你的情況,但可能是在你處理了第1點之後。

2

你認爲什麼基礎是合適的?你需要的不僅僅是你的視覺主觀印象。

這是你的假設功能:

y = b + n*exp(-x/u) 

嘗試安裝此功能:

z = y-b = n*exp(-x/u) 

對兩邊的自然對數:

ln(z) = ln(n*exp(-x/u)) = ln(n) - x/u 

這是一個簡單的線性迴歸因變量x,自變量ln(z),攔截ln(n)和斜率-1/u

問題是您的數據似乎在x = 0時漸近,這會向我建議函數1/x。也許不適合與功能的選擇有關。

你說「理論」。數據代表什麼現象?

+0

謝謝!這確實只是在啓動其餘設置之前轉向櫃檯的文物!我完全錯過了。 – PeterD

+0

聽起來像你應該接受Wrzlprmft的答案,而不是我的。 – duffymo