matplotlib中函数的曲线拟合

matplotlib中函数的曲线拟合,matplotlib,curve-fitting,Matplotlib,Curve Fitting,我有3个函数:E(能量)、p(压力)和H(焓) 给定数据data.dat,包含变量V(体积)和E(能量): 以下脚本将执行以下操作: 1) E与V的曲线拟合 2) 使用def(p)功能计算p(压力) 3) 使用def(H)功能计算H(焓)。(H=E+PV) 4) 使用拟合曲线执行3个绘图:E与p,p与V和H与p 绘制拟合曲线时,我使用了以下方法: 例如,对于E与V曲线: plt.plot(V_C_I_lin, E(V_C_I_lin, *popt_C_I) 其中,V_C_I_lin是数据点之间

我有3个函数:
E
(能量)、
p
(压力)和
H
(焓)

给定数据
data.dat
,包含变量
V
(体积)和
E
(能量):

以下脚本将执行以下操作:

1)
E
V
曲线拟合

2) 使用
def(p)
功能计算
p
(压力)

3) 使用
def(H)
功能计算
H
(焓)。(H=E+PV)

4) 使用拟合曲线执行3个绘图:
E
p
p
V
H
p

绘制拟合曲线时,我使用了以下方法:

例如,对于
E
V
曲线:

plt.plot(V_C_I_lin, E(V_C_I_lin, *popt_C_I)
其中,
V_C_I_lin
是数据点之间的卷空间

这似乎很好:

类似地,对于
p
V
曲线,类似方案:

plt.plot(V_C_I_lin, P(V_C_I_lin, *popt_C_I), color='grey', label='E fit Data' )
plt.plot(xp_C_I, H(V_C_I_lin, *popt_C_I), color='grey', label='H fit Data' )
产生所需的结果:

每个数据点的压力通过脚本保存在文件
/E\u V\u p\u H\u C\u I.dat

然而,对于
H
p
曲线,类似方案:

plt.plot(V_C_I_lin, P(V_C_I_lin, *popt_C_I), color='grey', label='E fit Data' )
plt.plot(xp_C_I, H(V_C_I_lin, *popt_C_I), color='grey', label='H fit Data' )
其中
xp\u C\u I
是一个压力空间,不能产生正确的配合:

为什么在第三种情况下会发生这种情况

代码:


你不能仅仅绘制
H(V)
和一些完全不相关的压力
xp\u C\u I

plt.plot(xp_C_I, H(V_C_I_lin, *popt_C_I), )
相反,您需要根据
p(V)
绘制
H(V)
,以便压力和焓使用完全相同的
V
值:

plt.plot(P(V_C_I_lin, *popt_C_I), H(V_C_I_lin, *popt_C_I), )

非常感谢您指出这一点,我完全同意,现在我可以看到错误在哪里了。我已经检查了
plt.plot(PressureCI,H(VolumeCI,*popt_C_I)
是否产生了有效的拟合,但是拟合曲线将仅在体积的“离散”输入值(
VolumeCI
)下进行评估,而不是
plot(P(V_C_I_lin,*popt_C_I),H(V_C_I__lin,*popt_I)
,使用更明确的“网格”对于拟合曲线的绘制,因为它使用linspace
V_C_I_lin
。我的问题是:对于拟合曲线的绘制,这两种方法中的哪一种是最佳做法?再次感谢。这两种方法都有效。如果您希望拟合线的步长更密集,请确保数据足够密集,如a答案中的方法。