我正在尝试使用LMFit软件包获得二阶2D多项式函数(D(I,V))的二维拟合。我需要确定D(I,V)的系数值,以便可以确定非理想二极管模型的参数。
D(I,V)= d1 * V + i1 * I + d1i1 * V * I + d2 * V ^ 2 + i2 * I ^ 2
此处包含到方程式图片的链接:Equation D(I,V)
I和V是实验电流和电压数据。
参数d2和i2必须为负。我已经阅读了有关不等式约束https://lmfit.github.io/lmfit-py/constraints.html#using-inequality-constraints的LMFit文档,但是由于我不知道将d2和i2的最大值设置为什么值,因此无法实现d2,i2 <0的不等式。
D(I,V)的模型是:
def D_2d(vi_mesh, d1, i1, d1i1, d2, i2): # unpack 1D list into 2D x and y coordinates (v, i) = vi_mesh # make 2D integral difference function matrix D = (i1 * i) + (d1 * v) + (d1i1 * v * i) + (i2 * i ** 2) + (d2 * v ** 2) # flatten the 2D matrix into 1D return np.ravel(D)
拟合度是使用:
# Initial guesses for the DIF function coefficients guess_vals = [1, -1, 1, -1, -1] # Fit model to DIF function lmfit_result = lmfit_model.fit( np.ravel(DIF), vi_mesh=vi_mesh, d1=Parameter("d1", value=guess_vals[0], vary=True), i1=Parameter("i1", value=guess_vals[1], vary=True), d1i1=Parameter( "d1i1", value=guess_vals[2], expr="sqrt(1 + (4*d2*i2))", vary=True ), d2=Parameter("d2", value=guess_vals[3], vary=True), i2=Parameter("i2", value=guess_vals[4], vary=True), )
我如何将d2和i2约束为负?
我正在尝试使用LMFit软件包获得二阶2D多项式函数(D(I,V))的二维拟合。我需要确定D(I,V)的系数值,以便可以...
嗯,你可以做