global name 'sqrt' nicht definiert

Ich habe eine Funktion, die potential(x,K,B,N), wo x,K,B sind numpy arrays und N ist eine ganze Zahl. Ich versuche zu testen, die Funktion in iPython aber ich erhalte die Fehlermeldung "global name 'sqrt' not defined".

Hier ist ein Blick auf meinen code:

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

Ich habe versucht, mit from math import * aber das scheint nicht zu helfen. Irgendwelche Vorschläge würde sehr geschätzt werden!

InformationsquelleAutor user3758890 | 2014-06-20

Schreibe einen Kommentar