У меня есть код python, который написан ниже. Меня беспокоит большое количество, которое я получаю как вывод в массиве rhot
. Это не может быть правдой, как val
в основном малое число, и эти небольшие числа дополнительно подавлены экспоненциальным множителем, как в линииПочему этот код python создает чрезвычайно большие числа?
rhot[i, j, k] = (rhot[i, j, k] + val[j, k, l] *
np.exp(-(vlist[i] - velz[j, k, l]) ** 2/(2 * beta)))
знает ли один, почему я получаю большое количество как выход для rhot
?
import numpy as np
import random
n = 6
val = np.empty((n, n, n)) # produces n*n*n empty matrix
for i in range(0, n - 1):
for j in range(0, n - 1):
for k in range(0, n - 1):
val[i, j, k] = random.lognormvariate(0, 1)
# produces lognormal random numbers with mean 1 and standard deviation 1
velz = np.empty((n, n, n))
for i in range(0, n - 1):
for j in range(0, n - 1):
for k in range(0, n - 1):
velz[i, j, k] = random.normalvariate(0, 1)
# produces normal random numbers with mean 1 and standard deviation 1
vmax = np.amax(velz) # maximum of flat velz array
vmin = np.amin(velz) # minimum
vlist = np.linspace(vmin, vmax, n)
# print(velz)
# print(val)
# print (vlist)
beta = 0.2
rhot = np.empty((n, n, n))
for i in range(0, n - 1): # index of velocity
for j in range(0, n - 1):
for k in range(0, n - 1):
for l in range(0, n - 1): # z index
rhot[i, j, k] = (rhot[i, j, k] + val[j, k, l] *
np.exp(-(vlist[i] - velz[j, k, l]) ** 2/(2 * beta))) # sums over 3rd dimension l, and stores the sum.
print(rhot)
Почему вы не исследовать это самостоятельно? Просто напечатайте каждый термин, когда большое значение выскочит и продолжит отслеживание ... – Julien
Я сделал это, и это последняя строка, где на первый взгляд стоит rhot [i, j, k], из-за чего возникают большие числа. Но этот термин явно не должен давать больших чисел из-за экспоненциального фактора подавления (отрицательный член внутри экспоненты должен действительно делать экспоненциальным всегда меньше 1). – konstant
Ну, как я сказал, если он «должен», но нет, тогда проверьте промежуточные результаты ... – Julien