2012-11-13 2 views
3

curve_fit을 사용하여 지수 적용을 시도하면 scipy가 오류를 반환합니다. 내가 뭔가 잘못하고 있는거야? np.exp (-b * t)에서 음수 기호를 제거하면 curve_fit이 작동하지만 반환되는 값은 off입니다. 배열scipy curve_fit이 지수 적용에서 실패합니다

다음
x = np.array([40,45,50,55,60]) 
y = np.array([0.99358851674641158, 0.79779904306220106, 0.60200956937799055, 0.49521531100478472, 0.38842105263157894]) 

내가 함수가 벡터화 계산을 필요로하기 때문에리스트가없는 반면에 당신이 좋은 생각을 NumPy와하는

Traceback (most recent call last): 
     File "asdf.py", line 18, in <module> 
     opt_parms, parm_cov = sp.optimize.curve_fit(model_func, x, y, maxfev=1000) 
     File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 426, in curve_fit 
     res = leastsq(func, p0, args=args, full_output=1, **kw) 
     File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 276, in leastsq 
     m = _check_func('leastsq', 'func', func, x0, args, n)[0] 
     File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 13, in _check_func 
     res = atleast_1d(thefunc(*((x0[:numinputs],) + args))) 
     File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 346, in _general_function 
     return function(xdata, *params) - ydata 
    ValueError: operands could not be broadcast together with shapes (0) (5) 

답변

5

변화 xy :

#!/usr/bin/python                 

import numpy as np                 
import scipy as sp 
from scipy.optimize import curve_fit                                                  
import scipy.optimize as opt               
import matplotlib.pyplot as plt              

x = [40,45,50,55,60]                 
y = [0.99358851674641158, 0.79779904306220106, 0.60200956937799055, 0.49521531100478472, 0.38842105263157894] 

def model_func(t, a, b, c):               
    return a * np.exp(-b * t) + c             

opt_parms, parm_cov = sp.optimize.curve_fit(model_func, x, y, maxfev=1000)   
a,b,c = opt_parms                 
print a,b,c                   
print x                    
print y                    
print model_func(x, a,b,c)   

오류와 함께 실패 알맞은.

+0

아. 바보 나. 감사 – Ben