2015-11-06 38 views
0

使用gnuplot多年並遇到許多與用戶相關的問題後,我想我終於知道如何將函數擬合到數據集。 今天我試着裝一個簡單的需要確認:gnuplot不會改變初始擬合值

y = m * x² + b 

功能。但是,gnuplot並沒有改變我的'm'值。但它會將'b'更改爲正確的值。 我有我的數據集上傳,這裏是我gnuplot腳本,我試圖適應,也許有人可以在他的機器上重現這一點,並確認,這不是我的電腦故障,但腳本中的某種錯誤的代碼,或者它甚至可能是一個錯誤(我非常懷疑)。

set xtics 0.000001 
set format x '%10.1E' 
set xrange [0:2E-07] 
#fit 
f(x)=a*(x**2)+b 
a=380812 
b=1 
fit [0:2E-07] f(x) 'GDAMitte1.txt' using ($1+7.6E-06):2 via a,b 

plot 'GDAMitte1.txt' using ($1+7.6E-06):2, f(x) 

我這裏貼的數據集:http://www.heypasteit.com/clip/29LU

我會成爲一個問題的答案很感激,哪怕它只是一個確認,它不適合你的機器上,以及。謝謝。

順便說一句:我設置的初始值幾乎是它適合後的初始值,但它當然不是那麼確切。儘管gnuplot能夠到達何處,但應該足夠好。

+0

您是否使用gnuplot版本<5.0?你的參數大小不一,總會產生問題。檢查'幫助適合技巧'。給f(x)中的一個固定的前因子應該有所幫助。 Gnuplot 5可以通過'set fit prescale'自動對內部參數進行預分頻。 – Karl

+0

我正在使用gnuplot 4.6。我會在明天使用'prescale'命令嘗試使用gnuplot 5.x來完成它並返回。 –

回答

2

這是因爲兩個參數的幅度差別很大,請檢查help fit tips

此時應更換一個功能已在一前因子內置:

f(x) = a *1e5 * (x**2)+b 
a=3.8 # instead of 380000 
b=1 
fit .... 

從gnuplot的版本5.0上,默認情況下在內部prescales所有參數GNUPLOT,所以這個問題與計算殘差應該不再出現對於任何功能,只要你的初始值不會太大。