我创建了一个功能,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 *
尝试,但似乎并没有帮助。任何建议将不胜感激!
难道我们一直在使用功能前需要{}进口?在R中,即使你不使用其他软件包,你仍然有一些内置的函数可以使用,只需先用{import}输入{sqrt}即可。 – alphabetagamma
@Phdaml:sqrt不是Python中的内建函数,不像R.因此,在Python中,您需要'import math'或'from math import sqrt' – smci