#python #scipy
#python #scipy
Вопрос:
Я хочу создать подходящую кривую с моими необработанными данными, но я получаю такие сообщения об ошибках :
<ipython-input-6-47cbf1e1c239>:9: RuntimeWarning: invalid value encountered
in true_divide
return I0*((np.sin(beta)/beta)**2)*(np.cos(gamma))**2
/Users/username/opt/anaconda3/lib/python3.8/site-
packages/scipy/optimize/minpack.py:828: OptimizeWarning: Covariance of the
parameters could not be estimated
warnings.warn('Covariance of the parameters could not be estimated')
Ниже приведен мой код и разброс для необработанных данных:
import numpy as np
from scipy.optimize import curve_fit
import pandas as pd
import matplotlib.pyplot as plt
def sinc(x, b, h, I0, phi):
beta = 0.5 * b * np.sin(x-phi)
gamma = 0.5 * h * np.sin(x-phi)
return I0*((np.sin(beta)/beta)**2)*(np.cos(gamma))**2
data = pd.read_excel('14_laser_doubleslit.xlsx')
display(data)
x = np.array(data.iloc[1:101,0])
y = np.array(data.iloc[1:101,1])
popt, pcov = curve_fit(sinc, x, y)
print(popt)
print(pcov)
plt.scatter(x,y,marker='.')
plt.plot(x,sinc(x,*popt),color='blue',linewidth =2)
plt.show
Комментарии:
1. Пожалуйста, предоставьте образец вашего
x
иy
массивов, чтобы мы могли воспроизвести2. Кроме того, поскольку есть
true_divide
ошибка,I0*((np.sin(beta)/beta)**2)*(np.cos(gamma))**2
я предполагаю, что вы должны указатьbeta
ограничение> 03. @MaxPierini я изменил границы некоторых переменных в качестве вашего комментария, и теперь это работает! Большое спасибо! 🙂