2017-05-05 61 views
0

如何使用f(x) = A*(sin(b*x)/(b*x))**2來擬合數據?Gnuplot。奇函數擬合A *(sin(b * x)/(b * x))** 2

的Data.dat文件內容爲:

-3.7 0.020505941 
    -3.6 0.015109903 
    -3.5 0.010044806 
    -3.4 0.005648897 
    -3.3 0.002285005 
    -3.2 0.000332768 
    -3.1 0.000179912 
    -3 0.002212762 
    -2.9 0.006806212 
    -2.8 0.014313401 
    -2.7 0.025055358 
    -2.6 0.039310897 
    -2.5 0.057307025 
    -2.4 0.079210158 
    -2.3 0.105118386 
    -2.2 0.135055049 
    -2.1 0.168963812 
    -2 0.206705453 
    -1.9 0.24805647 
    -1.8 0.292709632 
    -1.7 0.340276504 
    -1.6 0.390291948 
    -1.5 0.442220555 
    -1.4 0.495464883 
    -1.3 0.549375371 
    -1.2 0.603261707 
    -1.1 0.65640542 
    -1 0.708073418 
    -0.9 0.757532157 
    -0.8 0.804062127 
    -0.7 0.846972303 
    -0.6 0.88561423 
    -0.5 0.919395388 
    -0.4 0.947791533 
    -0.3 0.970357695 
    -0.2 0.986737575 
    -0.1 0.996671108 
    0 1 
    0.1 0.996671108 
    0.2 0.986737575 
    0.3 0.970357695 
    0.4 0.947791533 
    0.5 0.919395388 
    0.6 0.88561423 
    0.7 0.846972303 
    0.8 0.804062127 
    0.9 0.757532157 
    1 0.708073418 
    1.1 0.65640542 
    1.2 0.603261707 
    1.3 0.549375371 
    1.4 0.495464883 
    1.5 0.442220555 
    1.6 0.390291948 
    1.7 0.340276504 
    1.8 0.292709632 
    1.9 0.24805647 
    2 0.206705453 
    2.1 0.168963812 
    2.2 0.135055049 
    2.3 0.105118386 
    2.4 0.079210158 
    2.5 0.057307025 
    2.6 0.039310897 
    2.7 0.025055358 
    2.8 0.014313401 
    2.9 0.006806212 
    3 0.002212762 
    3.1 0.000179912 
    3.2 0.000332768 
    3.3 0.002285005 
    3.4 0.005648897 
    3.5 0.010044806 
    3.6 0.015109903 
    3.7 0.020505941 
    3.8 0.025925906 

我下面接頭代碼:

f(x) = A*(sin(b*x)/(b*x))**2; 
A = 1; 
b = 1; 
fit f(x) "data.dat" u 1:2 via A,b; 
plot [x=-3:3] f(x); 

我得到了功能評估過程中出現錯誤未定義值。

+0

那麼,'F(0)'是未定義的,是嗎? –

+0

是的,你完全正確。 – Sergio

+0

@Zachary Vance但情節不注意零問題,但適合死亡。爲什麼? – Sergio

回答

4

我想,與繪圖不同,擬合不會忽略被評估函數產生未定義值的點。在你的具體情況下,你可能會重新解決問題,並將f(x)*x*x改爲y(x)*x*x,以便將「奇點」消除爲零。例如:

set terminal pngcairo 
set output 'fig.png' 

f(x) = A*(sin(b*x)/(b*x))**2; 
g(x) = A*(sin(b*x)/(b))**2; 

fit g(x) 'data.dat' u 1:($2*$1*$1) via A, b; 

plot \ 
    g(x)/(x*x) t 'fit', \ 
    'data.dat' w p t 'points' 

這產生: enter image description here

相關問題