Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 原子间最小距离_Python_Scipy_Scipy Optimize - Fatal编程技术网

Python 原子间最小距离

Python 原子间最小距离,python,scipy,scipy-optimize,Python,Scipy,Scipy Optimize,我想用Lennard-Jones势计算两个原子之间的最小距离。 我想使用的公式是: V(r) = C12/r^12 - C6/r^6 where C12 = 1 and C6 = 10 下面已经给出了包含变量的函数构造,本例的解应为0.764724 我的想法是使用“最小”函数,但我完全不知道如何使用它。甚至在阅读了SciPy手册之后。 我该怎么开始 import numpy as np from scipy.optimize import minimize, leastsq, least_sq

我想用Lennard-Jones势计算两个原子之间的最小距离。 我想使用的公式是:

V(r) = C12/r^12 - C6/r^6 where C12 = 1 and C6 = 10
下面已经给出了包含变量的函数构造,本例的解应为0.764724

我的想法是使用“最小”函数,但我完全不知道如何使用它。甚至在阅读了SciPy手册之后。 我该怎么开始

import numpy as np
from scipy.optimize import minimize, leastsq, least_squares, curve_fit

def get_minimum_energy_distance(C12, C6):
   my code

您需要做的第一件事是定义函数以优化:

def f(r, C12=1, C6=10):
    return (C12/r**12) - (C6/r**6)
最后,我们调用scipy的
minimize
,传入我们定义的函数。我们还需要传入与最小y对应的r位置的猜测,我选择了r=1.5:

from scipy.optimize import minimize

res = minimize(f,1.5)

#      fun: -24.999999999999936
#  hess_inv: array([[0.00032439]])
#       jac: array([2.38418579e-06])
#   message: 'Optimization terminated successfully.'
#      nfev: 36
#       nit: 4
#      njev: 12
#    status: 0
#   success: True
#         x: array([0.76472448])

res['x']

# array([0.76472448])

这是你的结果。我建议阅读,熟悉一些优化参数,然后玩一玩,看看该方法如何响应x0(r值对应于最小y)的不同初始猜测。

太好了,非常感谢much@riejuhatza考虑接受这个答案,因为它帮助你解决这个问题,请看: