gpt4 book ai didi

Lennard-Jones 系统中的 Python 力图给出了 TypeError

转载 作者:行者123 更新时间:2023-11-30 22:57:29 26 4
gpt4 key购买 nike

我正在尝试将第 i 个粒子上的力绘制为与 Lennard-Jones 系统中第 j 个粒子(即 xi-xj)的距离的函数。力由下式给出:

enter image description here

其中 sigma 和 epsilon 是两个参数,Xi 是已知量,Xj 是变量。 力从第 i 个粒子指向第 j 个粒子

下面给出了我为此编写的代码。

from pylab import*
from numpy import*

#~~~ ARGON VALUES ~~~~~~~~(in natural units)~~~~~~~~~~~~~~~~
epsilon=0.0122 # depth of potential well
sigma=0.335 # dist of closest approach
xi=0.00
xj=linspace(0.1,1.0,300)

f = 48.0*epsilon*( ((sigma**12.0)/((xi-xj)**13.0)) - ((sigma**6.0)/2.0/((xi-xj)**7.0)) ) * float(xj-xi)/abs(xi-xj)

plot(xj,f,label='force')
legend()
show()

但它给了我以下错误。

f = 48.0*epsilon*( ((sigma**12.0)/((xi-xj)**11.0)) - ((sigma**6.0)/2.0/((xi-xj)**5.0)) ) * float(xj-xi)/abs(xi-xj)
TypeError: only length-1 arrays can be converted to Python scalars

有人可以帮我解决这个问题吗?提前致谢。

最佳答案

错误在于表达式的这一部分:

float(xj-xi)

查看相关question的答案。 Python 内置函数和 Numpy 函数之间似乎存在冲突。

如果你取出“ float ”,它至少会返回。它给出的数字正确吗?

f = 48.0*epsilon*( ((sigma**12.0)/((xi-xj)**11.0)) - ((sigma**6.0)/2.0/((xi-xj)**5.0)) ) * (xj-xi)/abs(xi-xj)

关于Lennard-Jones 系统中的 Python 力图给出了 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36624211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com