python中sqrt函数为什么无法定义_未定义全局名称“sqrt”

在尝试运行一个名为potential的Python函数时,遇到了全局名称'sqrt'未定义的错误。函数涉及到numpy数组的处理,包括矩阵操作和距离计算。错误出现在使用'sqrt'进行平方根计算而未导入相应模块。尝试导入math模块并未解决问题。需要检查代码中sqrt函数的导入或使用numpy的sqrt方法来解决此问题。
摘要由CSDN通过智能技术生成

我创建了一个函数potential(x,K,B,N),其中x,K,B是numpy数组,N是一个整数。我试图在iPython中测试该函数,但我一直得到错误"global name 'sqrt' not defined"。

下面是我的代码:def potential(x,K,B,N):

x = x.reshape((3,N),order='F')

U_b = 0.0

for i in xrange(0,N-1):

for j in xrange(i+1,N):

if K[i,j] == 1.0:

U_b += sum((x[:,i]-x[:,j])**2)

U_b = 0.5*U_b

U_a = 0.0

for i in xrange(0,N-2):

for j in xrange(i+1,N-1):

for l in xrange(j+1,N):

if B[i,j,l] == 1.0:

U_a += B[i,j,l]*sum((x[:,i]-x[:,j])*(x[:,j]-x[:,l]))/(sqrt(sum((x[:,i]-x[:,j])**2))*sqrt(sum((x[:,j]-x[:,l])**2)))

U_a = -U_a

U_r = 0.0

d = 0.0

for i in xrange(0,N-1):

for j in xrange(i+1,N):

d = sqrt(sum((x[:,i]-x[:,j])**2))

if d > sqrt(0.2):

U_r += (1.0/6.0)*(1/(d**6))

else:

U_r += -0.2**(-7.0/2.0)*d + (7.0/6.0)*(0.2)**(-3)

return U_b + U_a + U_r

我试过使用from math import *,但这似乎没有帮助。任何建议都将不胜感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值