拟合超越方程

Fitting with Transcendental equation

我有一组正常的数据,电流密度是电压 J(V) 的函数。我的目标是将这些数据与模型相匹配。问题是我的模型是由超越方程组成的,所以我不能根据 J 编写函数并使用 lmfit,例如。我的模型如下所示:

请看图

有什么办法可以做到吗?

如果我用fsolve或类似的方法解决系统问题,我将不得不提供参数,所以我不知道该怎么做。

我也试过用Scypy解决系统问题,但是没用..

我不确定您是否会找到干净、简单的方法来执行此操作 - 如果您找到了,请告诉我们。

由于您的函数基本上是指数函数,您可能会发现在模型函数中进行几次迭代会产生稳定、自洽的结果。也就是说,如果值为 "well behaved",那么压降扰动 (Vdn - V) 相当小,那么采用几个循环来达到接近自洽可能就足够了。

然后,由于它们是指数函数,对于较大的正值 V,它们可能会迅速发散。

我认为 scipy.optimize.curve_fit 有你要找的东西,我发现 this tutorial 对我的情况有帮助。

你或许可以这样做:

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])