用gnuplot拟合指数

时间:2015-01-22 12:51:37

标签: gnuplot exponent

我试图将下面的数据放到表格中 - 我最感兴趣的是'c'(我知道c≈1/ 8,b≈3)但是想从数据中提取所有这些值。 / p>

公式:

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'和amp;的初步猜测。 'c'如果可能的话。

谢谢, Ĵ

1 个答案:

答案 0 :(得分:3)

拟合功能的主要问题是找到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_c0 + error_c1)绘制为b的函数,并找出错误最小的b。关于最佳b曲线error_c0 + error_c1b应该是二次的,并且最小值为b_opt。然后使用此b = b_opt运行上面代码中的拟合,并获取ac