用gnuplot拟合sinc函数

用gnuplot拟合sinc函数,gnuplot,Gnuplot,我正在尝试将sinc函数与gnuplot配合使用,但失败时显示以下消息: 'Undefined value during function evaluation'. 首先,我的数据: 27 9.3 27.2 9.3 27.8 9.3 29 9.4 32 9.5 34 9.6 34.2 9.7 34.4 9.7 34.6 9.8 34.8 10.1 35 10.9 35.2 12.9 35.4 1

我正在尝试将sinc函数与gnuplot配合使用,但失败时显示以下消息:

'Undefined value during function evaluation'. 
首先,我的数据:

27      9.3
27.2    9.3
27.8    9.3
29      9.4
32      9.5
34      9.6
34.2    9.7
34.4    9.7
34.6    9.8
34.8    10.1
35      10.9
35.2    12.9
35.4    16.1
35.6    21.1
35.8    26.5
36      31.8
36.2    34.7
36.4    36.6
36.6    36.3
36.8    32.3
37      26.4
37.2    20.6
37.4    15.4
37.6    11.6
37.8    9.9
38      9.6
38.5    10
39      9.5
39.5    9.5
40      9.6
我在Gnuplot中尝试做的是:

sinc(x)=sin(pi*x)/pi/x
f(x)=a*(sinc((b*(x-c))))**2+d
fit f(x) '4_temp.txt' via a,b,c,d
我将a、b、c、d设置为接近所需的值(见图),但不适合

有人能帮忙吗? 提前谢谢


我可以重现您的错误消息。您正在尝试安装
sin(x)/x
函数。对于
x=0
,您将得到
0/0
,尽管gnuplot在
plot sin(x)/x
方面没有问题,但显然,fitting在这方面有问题。 只有添加一点偏移量,例如
1e-9
,它似乎才起作用,并且会找到一些合理的参数。 正如@Ethan所说,您需要选择一些起始值,这些值不应该离最终值太远。 您将获得拟合值:

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a               = 27.5271          +/- 0.2822       (1.025%)
b               = 0.608263         +/- 0.006576     (1.081%)
c               = 36.3954          +/- 0.00657      (0.01805%)
d               = 9.21346          +/- 0.127        (1.379%)
代码:

### fitting type of sin(x)/x function
reset session

$Data <<EOD
27     9.3
27.2    9.3
27.8    9.3
29      9.4
32      9.5
34      9.6
34.2    9.7
34.4    9.7
34.6    9.8
34.8    10.1
35      10.9
35.2    12.9
35.4    16.1
35.6    21.1
35.8    26.5
36      31.8
36.2    34.7
36.4    36.6
36.6    36.3
36.8    32.3
37      26.4
37.2    20.6
37.4    15.4
37.6    11.6
37.8    9.9
38      9.6
38.5    10
39      9.5
39.5    9.5
40      9.6
EOD

a=25
b=1
c=36
d=10

sinc(x)=sin(pi*x)/pi/(x)
f(x)=a*(sinc((b*(x-c+1e-9))))**2+d
set fit nolog
fit f(x) $Data via a,b,c,d

plot $Data u 1:2 w p pt 7, f(x) w l lc rgb "red"
### end of code
sin(x)/x函数的拟合类型 重置会话
$Data我可以重现您的错误消息。您正在尝试安装
sin(x)/x
函数。对于
x=0
,您将得到
0/0
,尽管gnuplot在
plot sin(x)/x
方面没有问题,但显然,fitting在这方面有问题。 只有添加一点偏移量,例如
1e-9
,它似乎才起作用,并且会找到一些合理的参数。 正如@Ethan所说,您需要选择一些起始值,这些值不应该离最终值太远。 您将获得拟合值:

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a               = 27.5271          +/- 0.2822       (1.025%)
b               = 0.608263         +/- 0.006576     (1.081%)
c               = 36.3954          +/- 0.00657      (0.01805%)
d               = 9.21346          +/- 0.127        (1.379%)
代码:

### fitting type of sin(x)/x function
reset session

$Data <<EOD
27     9.3
27.2    9.3
27.8    9.3
29      9.4
32      9.5
34      9.6
34.2    9.7
34.4    9.7
34.6    9.8
34.8    10.1
35      10.9
35.2    12.9
35.4    16.1
35.6    21.1
35.8    26.5
36      31.8
36.2    34.7
36.4    36.6
36.6    36.3
36.8    32.3
37      26.4
37.2    20.6
37.4    15.4
37.6    11.6
37.8    9.9
38      9.6
38.5    10
39      9.5
39.5    9.5
40      9.6
EOD

a=25
b=1
c=36
d=10

sinc(x)=sin(pi*x)/pi/(x)
f(x)=a*(sinc((b*(x-c+1e-9))))**2+d
set fit nolog
fit f(x) $Data via a,b,c,d

plot $Data u 1:2 w p pt 7, f(x) w l lc rgb "red"
### end of code
sin(x)/x函数的拟合类型 重置会话
$Data您提供了a、b、c、d的起始值吗?您提供了a、b、c、d的起始值吗?谢谢!!这对我帮助很大!我提供了接近最终值的起始值,但仍然不合适。补偿解决了这个问题。再次感谢你!谢谢theozh!!这对我帮助很大!我提供了接近最终值的起始值,但仍然不合适。补偿解决了这个问题。再次感谢你!