二维拟合与python

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,但我不清楚我将如何在这里使用它。

Dav*_*idW 6

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可以通过直接的线性代数确定。