【发布时间】:2021-11-18 02:43:35
【问题描述】:
我有一个距离与能量的列表,我正在尝试使用 scipy.optimize.curve_fit 将其拟合到莫尔斯势。数据为:
距离:[0.7, 0.78, 0.86, 0.94, 1.02, 1.1, 1.18, 1.26]
能量:[-1428.03995379,-1428.13375727,-1428.18294153,-1428.20472839, -1428.20977469、-1428.2047732、-1428.19393863、-1428.17996123]
莫尔斯势为:
def morsePotential(r, D, alpha, r0):
return D * (1 - np.exp(-alpha * (r - r0)))**2
当我这样做时
param, cv = curve_fit(morsePotential, distances, energies, np.array([0.005, 10, 1.0]))
D, alpha, r0 = param
scipy 说它无法估计协方差,并且拟合会产生完全荒谬的输出,例如 D
【问题讨论】:
-
检查您的建模假设。
energies中的值都是 -1428 附近的负值,但定义为morsePotential的函数永远不会是负数,因此您的方法存在根本问题。
标签: scipy curve-fitting