2016-10-26 2 views
0
def model(A, x, mu, sigma): 
return A*exp(-((x-mu)**2)/(2*sigma**2)) 
from scipy.optimize import curve_fit 
mu=np.mean(d_spacing_2) 
sigma=np.std(d_spacing_2) 
f=intensity_2 
x=d_spacing_2 
popt, pcov = curve_fit(model, A, x, mu, sigma) 

TypeError: модель() недостающую 2 необходимые позиционные аргументы: 'мю' и 'сигма'curve_fit() с помощью Python

ответ

1

Вы используете curve_fit совершенно неправильно. Здесь работают пример с помощью curve_fit и некоторого дополнительного черчения:

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.optimize import curve_fit 
def func(x, a, b, c): 
    return a * np.exp(-b * x) + c 

xdata = np.linspace(0, 4, 50) 
y = func(xdata, 2.5, 1.3, 0.5) 
ydata = y + 0.2 * np.random.normal(size=len(xdata)) 

popt, pcov = curve_fit(func, xdata, ydata,p0=[2,1,1]) 

plt.ion() 
plt.plot(xdata,ydata,'o') 
xplot = np.linspace(0,4,100) 
plt.plot(xplot,func(xplot,*popt)) 

Первого входной аргумент curve_fit является функцией второй рентгеновских значений данных и третьего значения у. Обычно вы также должны использовать необязательный входной аргумент p0, который является исходным предположением для решения.

+0

что делает XData = np.linspace (0, 4, 50) у = FUNC (XData, 2.5, 1.3, 0.5) ydata = у + 0,2 * np.random.normal (размер = Len (XData)) имею в виду? –

+0

Он просто создает искусственные (случайно сгенерированные) данные. Вы можете посмотреть, что каждая функция делает с помощью (np.linspace), например. – Jannick

Смежные вопросы