Ich versuche, das Minimum eines Arrays zu finden und es zu drucken. Einfach richtig? Scheinbar nicht. Mein Code:Unerwartete Ausgabe beim Drucken eines Arrays
array = generateAtoms(num)
arrayPoints, vArraySum = moveMolecule(array, numSteps=steps)
plotSetUp(arrayPoints)
#print vArraySum
print min(vArraySum), " kJ/mol is the minimum potential achieved"
Ich erwarte meine Antwort im Bereich von -0,19. Wenn ich die obige Druckanweisung nicht drucke, beträgt meine Ausgabe ungefähr 9.000.000 kJ/mol. Wenn ich es drucke, ist meine Druckanweisung wie erwartet. Hier
ist ein Beispiel für vArraySum
(wenn ich den Druck ausgeführt werden):
[88824.74221919772, 18198.301666484836, 3531.2537391848105, 3531.2537391848105,
3531.2537391848105, 16.432760713742276, -0.09559319207145775, -0.09559319207145775,
-0.19379982167330503, -0.19379982167330503, -0.19379982167330503, -0.19379982167330503,
-0.19379982167330503, -0.19379982167330503, -0.19379982167330503, -0.19379982167330503,
-0.19379982167330503, -0.19379982167330503, -0.19379982167330503, -0.19379982167330503]
Wie wird meine Ausgabe zu ändern, wenn ich „beobachten“ (Drücken Sie verwenden)? Ich bin völlig am Ende. Hinzu kommt, dass die 9-Millionen-Zahl jedes Mal nicht die gleiche Zahl ist, sondern jedes Mal etwa 9 Millionen.
Edit2:
def moveMolecule(array, numSteps):
# Moves molecules in random directions by adding random array
# Will not move points if potential of system increases
points = []
vArray = []
vArraySum = []
progress = 0
points.append(array)
for i in range(numSteps):
addArray = np.random.uniform(low=-0.2, high=0.2, size=(num,3))
if sumV(np.add(array, addArray)) < sumV(array):
array = np.add(array, addArray)
else:
array = array
points.append(array)
vArray.append(vArrays(array))
vArraySum.append(sumV(array))
# Updates progress bar
progress = updateProgressBar(progress, i, numSteps)
plotV(points, vArray)
return points, vArraySum
Edit3:
def functionV(r):
# Function to calculate LJ potential
return ((4 * _e) * (((_d/r) ** 12) - ((_d/r) ** 6)))
def sumV(array):
# Uses NN search to calculate sum of potential of system
V = []
# Performs NN search to collect nearby radii
points = NNSearchSetUp(array)
radius = NNSearch(points)
# Calculate potential for NNs
for r in radius:
V.append(functionV(r))
return sum(V)
Können Sie weitere Informationen über Ihre Eingabe und die Logik hinter Ihrem Code hinzufügen, auch Sie erwartete Ausgabe? Eigentlich sehe ich nichts falsch in Ihrem Code. –
Kann nicht reproduziert werden. – TigerhawkT3
"Bitte lassen Sie mich wissen, wenn Sie weitere Informationen hinzufügen möchten". Wie wäre es mit den Funktionen, die Ihr Code verwendet? Wie können Sie erwarten, dass jemand weiß, warum 'generateAtoms()', 'moveMolecule' und/oder' plotSetUp' nicht wie erwartet funktionieren, wenn Sie diese Definitionen geheim halten? Bitte geben Sie ein [MCVE]. –