我有一些实验数据。因此,我需要拟合以下函数来确定变量之一。此过程中使用了Levenberg–Marquardt 最小二乘算法。
我在 Igor Pro 软件中使用了曲线拟合选项。我定义了新的拟合函数并尝试定义自变量和因变量。 尽管如此,我不知道出现此错误的原因是什么:
"The fitting function returned INF for at least one X variable"
我的功能是:
sin(theta) = -1+2*sqrt(alpha/x)*exp(-beta*(x-alpha)^2)
beta = 1.135e-4;
sin(theta) = [-0.81704 -0.67649 -0.83137 -0.73468 -0.66744 -0.43602 0.45368 0.75802 0.96705 0.99717 ]
x = [72.01 59.99 51.13 45.53 36.15 31.66 30.16 29.01 25.62 23.47 ]
有什么建议可以在这里找到alpha
变量吗?
是否有任何方便的软件或程序用于非线性曲线拟合?
最佳答案
在 gnuplot 中,它看起来像这样。拟合不太好,但这不是 gnuplot 的“错误”,但显然这个数据不能很好地与这个函数拟合。
代码:
### nonlinear curve fitting
reset session
$Data <<EOD
72.01 -0.81704
59.99 -0.67649
51.13 -0.83137
45.53 -0.73468
36.15 -0.66744
31.66 -0.43602
30.16 0.45368
29.01 0.75802
25.62 0.96705
23.47 0.99717
EOD
f(x) = -1+2*sqrt(alpha/x)*exp(-beta*(x-alpha)**2)
# initial guessed values
alpha = 25
beta = 1
set fit nolog results
fit f(x) $Data u 1:2 via alpha,beta
plot $Data u 1:2 w lp pt 7, \
f(x) lc rgb "red"
print sprintf("alpha=%g, beta=%g",alpha,beta)
### end of code
结果:
alpha=25.818, beta=0.0195229
关于matlab - 如何对实验数据进行非线性数据拟合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56514076/