use*_*890 5 python numpy ipython
我创建了一个函数,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
Run Code Online (Sandbox Code Playgroud)
我尝试过使用from math import *但似乎没有帮助.任何建议将不胜感激!
from math import sqrt
Run Code Online (Sandbox Code Playgroud)
就是缺少的一切
我尝试过使用
from math import *但似乎没有帮助.
(可能你在定义函数后就这样做了.无论如何,fuhgeddaboutit,只需在干净的会话中重新加载代码,它就可以工作.)
更新:严格地说,在Python中你应该import package不会from package import identifier1 [,identifier2, identifier3...],也永远不会 from package import *.但是from package import identifier1在明智地使用时,如果你没有过度使用它,并且在函数内部,则可以.如果它是明确的,并且你会做很多的,它缩短例如在代码sqrt()代替math.sqrt(),log而不是math.log10()