问题描述
我有包含一列数值数据的文件,我想将这些数据拟合到应该描述它们的理论函数中。我想确定数据的功能是:
要拟合的参数是 (n,a) 有没有办法使用八度或 python 将一组数据拟合到定义的函数?
通常我使用 gnuplot 来做,但因为我必须做更多的数据分析,所以我想学习如何用编程语言来做。
谢谢。
解决方法
你绝对可以。有很多可能性,我能想到的最简单的一种方法是使用最小二乘法(假设 n 和 a 是浮点数而不是整数)。或多或少是这样的:
from scipy.optimize import curve_fit
def func(x,n,a):
return x**n / (x**n + a**n)
popt,pcov = curve_fit(func,xdata,ydata)
其中“popt”包含您优化的 n,a 参数。我强烈建议您在以下之后绘制 xdata、ydata 和拟合函数:根据 xdata 上的噪声,ydata 有时 curve_fir 可能会弹道。
https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html
,八度
Octave 有几个拟合函数。只需在 https://octave.sourceforge.io/docs.php 上搜索“适合”这个词。
这是一个看起来与您的问题相关的内容,来自 optim
包:https://octave.sourceforge.io/optim/function/nonlin_curvefit.html