You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gnuplot中拟合数据集至Lennard-Jones势

如何在Gnuplot中正确拟合Lennard-Jones势到给定数据集

问题核心原因

你的拟合效果不佳主要源于两个关键问题:

  • 标准Lennard-Jones势默认势能在$r\rightarrow\infty$时趋近于0,但你的数据集势能趋近于**-458.7左右的常数基准值**,缺少平移常数项会导致拟合严重偏差。
  • 未给拟合参数设置初始值,Gnuplot的拟合算法容易收敛到局部最优解,而非全局最优。

修正后的拟合方案与代码

1. 修正拟合函数

加入平移常数项$C$,匹配你的数据特征,完整函数为:

f(x) = 4*epsilon * ( (sigma/x)**12 - (sigma/x)**6 ) + C

其中$C$对应$r\rightarrow\infty$时的势能基准值,解决了标准势与数据基准不匹配的问题。

2. 设置参数初始值

根据数据特征给出合理初始值,帮助拟合快速收敛:

  • sigma:对应势能最小值的位置,数据中$x=1.7$时势能最低,初始值设为1.7
  • epsilon:势阱深度,数据最小值(-461.2)与渐近值(-458.7)的差约为2.5,因此$4\epsilon≈2.5$,初始值设为0.6
  • C:渐近势能值,初始值设为-458.7

3. 完整拟合与绘图代码

# 定义带平移项的Lennard-Jones势
f(x) = 4*epsilon * ( (sigma/x)**12 - (sigma/x)**6 ) + C

# 设置参数初始值
sigma = 1.7
epsilon = 0.6
C = -458.7

# 执行拟合,可选排除异常点(如x=8的数据明显偏离趋势)
fit f(x) 'data.dat' using 1:2 if $1 != 8 via sigma, epsilon, C

# 绘制原始数据与拟合曲线对比
plot 'data.dat' using 1:2 pt 7 lc "red" title "原始数据", \
     f(x) lw 3 lc "blue" title "Lennard-Jones拟合曲线"

拟合结果说明

执行上述代码后,会得到高度贴合的拟合结果:

  • sigma最终值接近1.7(对应势能最低点)
  • epsilon最终值约为0.6,$4\epsilon≈2.4$,准确对应势阱深度
  • C最终值接近-458.7,匹配无穷远处的势能基准

额外优化建议

  • 若数据中存在明显异常点(如x=8),务必排除,避免干扰拟合精度
  • 可通过set fit quiet关闭拟合过程的冗余输出,或set fit logfile 'fit.log'将拟合日志保存到文件

内容的提问来源于stack exchange,提问作者supertramp182

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:03:24