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