2017-05-05 23 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하지만 음모는 0으로 문제에 관심을 기울이지 않지만 적합은 죽습니다. 왜? – Sergio

답변

4

플롯과 달리 fit은 평가되는 함수가 정의되지 않은 값을 생성하는 점을 무시하지 않습니다. 특별한 경우에, 문제를 재 공식화하고 f(x)*x*xy(x)*x*x에 맞추어 0에서 "특이점"을 제거 할 수 있습니다. 예를 들어

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