-1
아래에 작성된 파이썬 코드가 있습니다. 나에게 방해가되는 것은 배열 rhot
에서 출력으로 얻는 많은 수입니다. val
은 대부분 소수이며,이 작은 숫자는 더 이상 하나의 내가 rhot
에 대한 출력으로 많은 수를 얻고 이유를 알고 있나요 라인왜이 파이썬 코드가 극히 큰 숫자를 생성합니까?
rhot[i, j, k] = (rhot[i, j, k] + val[j, k, l] *
np.exp(-(vlist[i] - velz[j, k, l]) ** 2/(2 * beta)))
에서와 같이 지수 요인에 의해 억제 될 때이 사실 일 수없는 이유는 무엇입니까?
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