拟合超越方程

时间:2017-02-23 16:56:10

标签: python curve-fitting lmfit

我有一组正常的数据,电流密度是电压J(V)的函数。我的目标是使用模型拟合这些数据。问题是我的模型由超越方程组成,所以我不能用J来编写函数,例如使用lmfit。我的模型看起来像这样:

请查看图片

关于我如何做到的任何想法?

如果我用fsolve或类似物解决了这个问题,我将不得不提供参数,所以我不知道该怎么做。

我也尝试用Scypy来解决这个问题,但它没有用。

2 个答案:

答案 0 :(得分:0)

我不确定你会找到一个干净,简单的方法 - 如果你这样做,请告诉我们。

由于您的函数基本上是指数,您可能会发现在模型函数中进行一些迭代会产生稳定的,自洽的结果。也就是说,如果值是"表现良好"因此电压降扰动(Vdn-V)相当小,需要几个环来达到接近自洽的可能就足够了。

然后,由于它们是指数,对于V的大的正值,它们可能很快发散。

答案 1 :(得分:0)

我认为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])