Кто-нибудь знает модуль scipy/numpy, который позволит соответствовать экспоненциальному распаду данных?
Поиск в Google возвратил несколько сообщений в блоге, например - http://exnumerus.blogspot.com/2010/04/how-to-fit-exponential-decay-example-in.html, но для этого решения требуется, чтобы y-offset было предварительно задано, что не всегда возможно
EDIT:
curve_fit работает, но он может терпеть неудачу довольно жалко без первоначальной догадки для параметров, и это иногда необходимо. Код, с которым я работаю,
#!/usr/bin/env python
import numpy as np
import scipy as sp
import pylab as pl
from scipy.optimize.minpack import curve_fit
x = np.array([ 50., 110., 170., 230., 290., 350., 410., 470.,
530., 590.])
y = np.array([ 3173., 2391., 1726., 1388., 1057., 786., 598.,
443., 339., 263.])
smoothx = np.linspace(x[0], x[-1], 20)
guess_a, guess_b, guess_c = 4000, -0.005, 100
guess = [guess_a, guess_b, guess_c]
exp_decay = lambda x, A, t, y0: A * np.exp(x * t) + y0
params, cov = curve_fit(exp_decay, x, y, p0=guess)
A, t, y0 = params
print "A = %s\nt = %s\ny0 = %s\n" % (A, t, y0)
pl.clf()
best_fit = lambda x: A * np.exp(t * x) + y0
pl.plot(x, y, 'b.')
pl.plot(smoothx, best_fit(smoothx), 'r-')
pl.show()
который работает, но если мы удалим "p0 = guess", он терпит неудачу.