我试图估算非线性方程的参数:
y(x1, x2) = x1 / A + Bx1 + Cx2
使用this question答案中概述的方法,但是没有找到关于如何将多个自变量适当地传递给曲线拟合函数的文档。在
具体来说,我试图根据植物的密度(x1)和竞争对手的密度(x2)来估算植物生物量(y)。关于植物密度和植物生物量之间的关系,我有三个指数方程(形式为y=a[1-exp(-b*x1)]),三种竞争密度的参数值不同:
^{pr2}$因此,我想按照以下思路编写代码:
def model_func(self, x_vals, A, B, C):
return x_vals[0] / (A + B * x_vals[0] + C * x_vals[1])
def fit_nonlinear(self, d, y):
opt_parms, parm_cov = sp.optimize.curve_fit(self.model_func, [x1, x2], y, p0 = (0.2, 0.004, 0.007), maxfev=10000)
A, B, C = opt_parms
return A, B, C
但是,我没有找到任何文档来说明如何格式化参数y(传递给fit_nonlinear
)来捕捉x值的二维性质(the documentation for curve_fit状态y应该是一个N长度的序列)。我试图用curve_fit
实现吗?在
根据您上面的评论,您需要考虑使用矩阵的平面版本。如果从X1和X2矩阵中取同一个元素,则这对值具有相应的y值。这里有一个最小的例子
相关问题 更多 >
编程相关推荐