bob*_*nto 3 python numpy curve-fitting scipy
我需要拟合一个函数
z(u,v) = C u v^p
Run Code Online (Sandbox Code Playgroud)
也就是说,我有一个二维数据集,我要找到两个参数,C和p。numpy 或 scipy 中是否有可以直接执行此操作的内容?我查看了 scipy.optimize.leastsq,但我不清楚我将如何在这里使用它。
def f(x,u,v,z_data):
C = x[0]
p = x[1]
modelled_z = C*u*v**p
diffs = modelled_z - z_data
return diffs.flatten() # it expects a 1D array out.
# it doesn't matter that it's conceptually 2D, provided flatten it consistently
result = scipy.optimize.leastsq(f,[1.0,1.0], # initial guess at starting point
args = (u,v,z_data) # alternatively you can do this with closure variables in f if you like
)
# result is the best fit point
Run Code Online (Sandbox Code Playgroud)
对于您的特定功能,您可能可以做得更好 - 例如,对于任何给定的值,p都有一个最佳值C可以通过直接的线性代数确定。