Я пытаюсь найти минимальный массив и распечатать его. Легко ли? Очевидно нет. Мой код:Неожиданный вывод при печати массива
array = generateAtoms(num)
arrayPoints, vArraySum = moveMolecule(array, numSteps=steps)
plotSetUp(arrayPoints)
#print vArraySum
print min(vArraySum), " kJ/mol is the minimum potential achieved"
Ожидаю, что мой ответ будет в диапазоне -0.19. Если я не печатаю заявление печати выше, мой выход составляет около 9 000 000 кДж/моль. Если я его распечатаю, моя заявка на печать будет такой, как ожидалось.
Вот пример vArraySum
(если я запускаю печать):
[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]
Как меняется мой выходной, когда я «наблюдать» (используя печать)? У меня полная потеря. Чтобы добавить, 9-миллионное число не является одинаковым числом каждый раз, но составляет около 9 миллионов каждый раз.
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)
Можете ли вы добавить дополнительную информацию о своем вводе и логике вашего кода, а также ожидаемый результат? На самом деле я не вижу ничего плохого в вашем коде. –
Невозможно воспроизвести. – TigerhawkT3
«Пожалуйста, дайте мне знать, если есть какая-либо другая информация, которую вы хотели бы добавить». Как насчет функций, которые использует ваш код? Как вы ожидаете, что кто-нибудь узнает, почему 'generateAtoms()', 'moveMolecule' и/или' plotSetUp' не работает, как вы ожидаете, когда вы держите эти определения в секрете? Пожалуйста, дайте [mcve]. –