来自 scipy.optimize 的 curve_fit 不起作用

问题描述

我想用我的原始数据制作拟合曲线,但我收到这样的错误消息:

<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

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)