matplotlib中函数的曲线拟合
我有3个函数: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是数据点之间
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)
,使用更明确的“网格”对于拟合曲线的绘制,因为它使用linspaceV_C_I_lin
。我的问题是:对于拟合曲线的绘制,这两种方法中的哪一种是最佳做法?再次感谢。这两种方法都有效。如果您希望拟合线的步长更密集,请确保数据足够密集,如a答案中的方法。