用gnuplot拟合指数
我正在尝试将下面的数据与表单相匹配——我最感兴趣的是“c”(我知道c)≈ 1/8,b≈ 3) 但我想从数据中提取所有这些值 公式:用gnuplot拟合指数,gnuplot,exponent,Gnuplot,Exponent,我正在尝试将下面的数据与表单相匹配——我最感兴趣的是“c”(我知道c)≈ 1/8,b≈ 3) 但我想从数据中提取所有这些值 公式: y = a*(x-b)**c Values.txt: # "values.txt" 2.000000e+00 6.058411e-04 2.200000e+00 5.335520e-04 2.400000e+00 3.509583e-03 2.600000e+00 1.655943e-03 2.800000e+00 1.995418
y = a*(x-b)**c
Values.txt:
# "values.txt"
2.000000e+00 6.058411e-04
2.200000e+00 5.335520e-04
2.400000e+00 3.509583e-03
2.600000e+00 1.655943e-03
2.800000e+00 1.995418e-03
3.000000e+00 9.437851e-04
3.200000e+00 5.516159e-04
3.400000e+00 6.765981e-04
3.600000e+00 3.860859e-04
3.800000e+00 2.942881e-04
4.000000e+00 5.039975e-04
4.200000e+00 3.962199e-04
4.400000e+00 4.659717e-04
4.600000e+00 2.892683e-04
4.800000e+00 2.248839e-04
5.000000e+00 2.536980e-04
我已经尝试在gnuplot中使用以下命令,但是没有得到有意义的结果
f(x) = a*(x-b)**c
b = 3
c = 1/8
fit f(x) "values.txt" via a,b,c
有人知道提取这些值的最佳方法吗?如果可能的话,我不想对“b”和“c”进行初步猜测
谢谢,
J拟合函数的主要问题是查找
b
。您可以在log(x-b)
中将方程表示为线性函数,然后拟合即可:
b = 3
f(x) = c0 + c1 * x
fit f(x) "values.txt" using (log($1-b)):(log($2)) via c0, c1
a = exp(c0)
c = c1
如您所见,您需要提供b
,但不需要对其他参数进行初始猜测,因为这是一个简单的线性拟合
现在,我建议您提供一系列
b
值,并检查每个值的拟合效果。gnuplot提供拟合参数中的错误。然后,您可以将总体误差(error\u c0+error\u c1
)绘制为b
的函数,并计算出哪个b
的误差最小。关于最佳b
曲线error\u c0+error\u c1
vsb
应为二次曲线,且在b\u opt
处最小。然后使用此b=b_opt
运行上述代码中的拟合,并获得a
和c
对于指数函数拟合,最好使用对数刻度,如果有多个参数,最好进行初步猜测。