Во-первых, это задание, которое я поставил, поэтому мне нужны только указатели, и я ограничен использованием следующих библиотек: NumPy, SciPy и MatPlotLib.
Нам дали файл txt, который включает данные x и y для резонансного эксперимента и должен соответствовать как гауссовой, так и лоренцевской аппроксимации. В данный момент я работаю над гауссовской подгонкой и пытался следовать коду, изложенному в предыдущем вопросе, в качестве основы для моего собственного кода. (Гаусс подходит для Python)
from numpy import *
from matplotlib import *
import matplotlib.pyplot as plt ##Import Libraries
import pylab
from scipy.optimize import curve_fit
####################################
energy,intensity=numpy.loadtxt('resonance_data.txt',unpack=True)
print energy
print intensity ##Load in text file and print the arrays
#####################################
n = size(energy)
mean = 30.7
sigma = 10
intensity0 = 45
def gaus(energy,intensity0,energy0,sigma):
return intensity0*exp(-(energy-energy0)**2/(sigma**2))
popt,pcov = curve_fit(gaus,energy,intensity,p0=[45,mean,sigma])
plt.plot(energy,intensity,'o')
plt.xlabel('Energy/eV')
plt.ylabel('Intensity')
plt.title('Plot of Intensity against Energy') ##Plot raw data along with axis labels and title
plt.plot(energy,gaus(energy,*popt))
plt.show()
Что возвращает следующий график
Если я сохраняю выражения для среднего и сигмы, как в опубликованном URL-адресе, кривая соответствует горизонтальной линии, поэтому я предполагаю, что проблема заключается в том, что кривая не сходится или что-то в этом роде.
Я немного новичок, поэтому любые указатели полезны :)
Спасибо
ОБНОВЛЕНИЕ: мне удалось улучшить гауссовскую подгонку и заставить работать лоренцев, и даже (я думаю) удалось вычислить сумму остатков в каждом случае.
Здоровья, ребята!
Еще раз спасибо ребята