用 python 中的复杂函数拟合数据
Fitting data with a complex function in python
我有一些数据正试图用模型拟合
这是我的代码的相关部分
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)
而且我一直收到类型错误:
"only length-1 arrays can be converted to Python scalars" about "File "D:/PYTHON/Particle Physics/fit_2.py", line 31, in F_w B=complex(s-m_p**2,m_p*gamma_p)"
如有任何帮助,我们将不胜感激。
函数 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])
我有一些数据正试图用模型拟合
这是我的代码的相关部分
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)
而且我一直收到类型错误:
"only length-1 arrays can be converted to Python scalars" about "File "D:/PYTHON/Particle Physics/fit_2.py", line 31, in F_w B=complex(s-m_p**2,m_p*gamma_p)"
如有任何帮助,我们将不胜感激。
函数 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])