首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用scipy.optimize.curve_fit成功地将数据拟合到莫尔斯电势?

如何使用scipy.optimize.curve_fit成功地将数据拟合到莫尔斯电势?
EN

Stack Overflow用户
提问于 2021-09-24 21:44:44
回答 1查看 77关注 0票数 0

我有一个距离与能量的列表,我正试着用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

摩尔斯电势是:

代码语言:javascript
复制
def morsePotential(r, D, alpha, r0):
    return D * (1 - np.exp(-alpha * (r - r0)))**2

当我这样做的时候

代码语言:javascript
复制
param, cv = curve_fit(morsePotential, distances, energies, np.array([0.005, 10, 1.0]))
D, alpha, r0 = param

scipy表示,它无法估计协方差,拟合会产生完全荒谬的输出,例如D << 0,这对此势没有任何意义,其中D是能量井的深度。我也很难将这些数据拟合到谐波电位,这甚至更令人担忧。我如何才能将curve_fit推向正确的方向?现在,它要么返回无意义的值,要么完全失败。

EN

回答 1

Stack Overflow用户

发布于 2021-09-25 15:54:27

正如Warren Weckesser已经指出的,函数y (r ) =D* (1 - np.exp(-alpha *(r-r0)**2对于正确拟合给定的数据并不方便。

当然,最好的方法是从物理上考虑找到一个更好的模型。另一方面,下面提出的函数仅来自数学调整。这是第二个最佳的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69321374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档