作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用 GNUPLOT 拟合一个类似于傅里叶展开的函数。我有 3 个项,其中有许多参数,这些参数应该是整数和实数。
我不知道如何设置一些变量以适应整数
我有类似的东西,其中n1,n2,n3应该是整数,其他参数是实数:
g(x)=(A1*(1+cos(n1*x-b1))+A2*(1+cos(n2*x-b2))+A3*(1+cos(n3*x-b3)))/2
fit g(x) file u ($1+4):(f($2,E_min)) via A1,A2,A3,b1,b2,b3,n1,n2,n3
最佳答案
也许这可能对您的问题过于简单化,但我希望对您有所帮助。假设您有一个这样的文件:
# data.dat
0.000 4.313
10.417 4.868
20.833 5.115
31.250 4.858
41.667 3.942
52.083 3.213
62.500 2.153
72.917 1.403
83.333 0.967
93.750 1.130
104.167 1.439
114.583 2.175
125.000 2.699
135.417 3.319
145.833 3.448
156.250 3.319
166.667 2.884
177.083 2.352
187.500 1.933
197.917 1.530
208.333 1.611
218.750 2.046
229.167 2.375
239.583 2.826
250.000 3.213
您可以执行第一次拟合来查找参数值,然后写入包含这些值的文件并将其传递给第二次拟合命令。
# Function
g(x) = (A1*(1+cos(n1*x-b1))+A2*(1+cos(n2*x-b2))+A3*(1+cos(n3*x-b3)))/2
# Initial values
A1 = 1.0; n1 = 1.0; b1 = 1.0
A2 = 1.5; n2 = 2.0; b2 = 2.0
A3 = 2.0; n3 = 3.0; b3 = 3.0
set fit prescale
# First fit command
fit g(x) "data.dat" u 1:2 via A1,A2,A3, b1,b2,b3, n1,n2,n3
诀窍是将值舍入到您想要的值。
# File to second fit command
set print "parameters.dat"
print sprintf("A1 = %g", A1)
print sprintf("A2 = %g", A2)
print sprintf("A3 = %g", A3)
print sprintf("b1 = %g", b1)
print sprintf("b2 = %g", b2)
print sprintf("b3 = %g", b3)
print sprintf("n1 = %.0f # FIXED", n1)
print sprintf("n2 = %.0f # FIXED", n2)
print sprintf("n3 = %.0f # FIXED", n3)
unset print
parameters.dat
文件如下所示:
A1 = 1.15639
A2 = 1.61595
A3 = 2.45079
b1 = 46.054
b2 = 12.2914
b3 = 65.8431
n1 = 1 # FIXED
n2 = 2 # FIXED
n3 = 3 # FIXED
现在是第二个拟合命令和最终图表:
# Second fit command
fit g(x) "data.dat" u 1:2 via "parameters.dat"
plot "data.dat" u 1:2 w p ls -1 pt 7, g(x) w l lc "red" lw 2
当然现在的参数有点不同。
A1 = 0.901065
A2 = 1.59511
A3 = 2.63525
b1 = 29.8406
b2 = 34.2084
b3 = 60.7824
希望能帮到你。
关于gnuplot - 我想拟合一个带有整数参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58671452/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!