【问题标题】:Fitting data with a complex function in python用python中的复杂函数拟合数据
【发布时间】:2019-05-10 18:23:41
【问题描述】:

我有一些数据正在尝试拟合模型

这是我的代码的相关部分

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 标量”关于“文件”D:/PYTHON/Particle Physics/fit_2.py”,第 31 行,在 F_w B=complex(s-m_p** 2,m_p*gamma_p)"

任何帮助将不胜感激。

【问题讨论】:

  • complex 是一个 python 函数,它接受 2 个数字并返回一个复数。 Numpy 数组等效为 np.array([1,2,3]) + 1j * np.array([3,4,5])

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


【解决方案1】:

函数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])

【讨论】:

    猜你喜欢
    • 2019-03-25
    • 2018-10-16
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多