如何在python中拟合两项指数?

时间:2015-05-20 17:34:38

标签: python exponential

我需要在等式a*exp(b*x)+c*exp(d*x)之后使用两项指数拟合一些数据。在matlab中,将polyfit中的1更改为2就可以轻松地从单项指数变为两项。我还没有找到一个简单的解决方案,在python中做到这一点,并想知道是否有一个?我尝试使用curve_fit,但它给了我很多麻烦,在搜索互联网后,我仍然没有找到任何有用的东西。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:3)

是的,您可以使用$('#slideshow .pager a').on('click', function(e){ e.preventDefault(); var i = $(this).parent().index(); $('#slideshow div').fadeOut(); $('#slideshow div:eq(' + i + ')').fadeIn(1000); }); 中的curve_fit以下是您的特定适合功能的示例。

scipy

enter image description here

答案 1 :(得分:1)

您可以使用leastsq执行此操作。类似的东西:

from numpy import log, exp
from scipy.optimize.minpack import leastsq

## regression function
def _exp(a, b, c, d):
    """
    Exponential function y = a * exp(b * x) + c * exp(d * x)
    """
    return lambda x: a * exp(b * x) + c * exp(d * x)

## interpolation
def interpolate(x, df, fun=_exp):
    """
    Interpolate Y from X based on df, a dataframe with columns 'x' and 'y'.
    """
    resid = lambda p, x, y: y - fun(*p)(x)
    ls = leastsq(resid, [1.0, 1.0, 1.0, 1.0], args=(df['x'], df['y']))
    a, b, c, d = ls[0]
    y = fun(a, b, c, d)(x)
    return y