我有一组正常的数据,电流密度是电压 J(V) 的函数。我的目标是用模型拟合这些数据。问题是我的模型是由超越方程组成的,所以我不能用 J 和 use 来编写函数lmfit
。我的模型如下所示:
请看一下图片
关于我该怎么做的任何想法?
如果我用fsolve
或类似解决系统,我将不得不提供参数,所以我不知道该怎么做。
我也尝试用 解决这个系统Scypy
,但它没有用..
我有一组正常的数据,电流密度是电压 J(V) 的函数。我的目标是用模型拟合这些数据。问题是我的模型是由超越方程组成的,所以我不能用 J 和 use 来编写函数lmfit
。我的模型如下所示:
请看一下图片
关于我该怎么做的任何想法?
如果我用fsolve
或类似解决系统,我将不得不提供参数,所以我不知道该怎么做。
我也尝试用 解决这个系统Scypy
,但它没有用..
我不确定你会找到一种干净、简单的方法来做到这一点——如果你这样做了,请告诉我们。
由于您的函数基本上是指数函数,您可能会发现在模型函数中进行几次迭代会产生稳定、自洽的结果。也就是说,如果值“表现良好”,使得电压降扰动 (Vdn - V) 相当小,那么采用几个循环来达到接近自洽可能就足够了。
再说一次,因为它们是指数的,所以对于 V 的大正值,它们可能会迅速发散。
我认为scipy.optimize.curve_fit
有您正在寻找的东西,我发现本教程对我的案例很有帮助。
你也许可以做这样的事情:
from scipy.optimize import curve_fit
def CurrentDensityFromVoltage(V, RS1, RS12, r, J01, J02):
VD1 = <expression>
VD2 = <expression>
J1 = <expression>
J2 = <expression>
J3 = <expression>
return J1+J2+J3
# coefficients to get CurrentDensity as a function of Voltage
param, _ = curve_fit(CurrentDensityFromVoltage, Voltage, CurrentDensity)
# current density 'cd' for any voltage 'v'
cd = CurrentDensityFromVoltage(v, param[0], param[1], param[2], param[3], param[4])