使用python中的复杂函数拟合数据

时间:2018-12-09 19:10:02

标签: python scipy curve-fitting least-squares data-fitting

我有一些要与模型拟合的数据

这是我代码的相关部分

path='D:/ParPhy/2-BESIII15_new.dat'
data = pd.read_table(path,header=None)
y=np.array(data[1])
x=np.array(data[0]**(1/2))
s=x**2
def F_w(s,alpha,m_p,gamma_p):
    P_s=1+alpha*s
    A=-m_p**2
    B=complex(s-m_p**2,m_p*gamma_p)
    return abs(P_s*A/B)**2
popt, pcov = curve_fit(F_w, x, y)

并且我不断收到类型错误:

  

“仅将长度为1的数组可以转换为Python标量”,关于F_w中的“文件“ D:/ PYTHON / Particle Physics / fit_2.py”,第31行, B = complex(s-m_p ** 2,m_p * gamma_p)“

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

函数complex收到一个标量,您正在传递一个numpy数组。您必须像这样将complex函数应用于数组的每个元素:

B = np.zeros(m_p.size, dtype=np.complex)
for i in range(m_p.size):
    B[i] = complex(x[i], y[i])
相关问题