그래서 NumPy의 선형 대수 루틴을 사용하여 몇 가지 기본적인 전산 양자 역학을 수행합니다. 나는이 증가하는 순서로 에너지를 정렬하려면, 내가 매트릭스, 해밀 토니안이, 그리고 지금의 고유 값과 고유 벡터 2 차원 배열과 함께 배열 정렬
import numpy as np
from numpy import linalg as la
hamiltonian = np.zeros((N, N)) # N is some constant I have defined
# fill up hamiltonian here
energies, states = la.eig(hamiltonian)
을 원하는 말, 나는 그들과 함께 상태를 정렬 할 수 있습니다. 예를 들어, 내가하는 일 :
groundStateEnergy = min(energies)
groundStateIndex = np.where(energies == groundStateEnergy)
groundState = states[groundStateIndex, :]
필자는 기저 상태 (가장 낮은 고유 값을 갖는 고유 벡터)를 올바르게 플롯합니다. 그러나, 나는 이런 식으로 뭔가하려고하면 : 같은 방법으로 음모를 꾸미고
energies, states = zip(*sorted(zip(energies, states)))
또는
energies, states = zip(*sorted(zip(energies, states), key = lambda pair:pair[0])))
더 이상 내가 만 행함으로써, 에너지와 함께 상태를 정렬 할 수있는 방법을 올바른 state.So을 나타내는를 ? (즉, 상태의 각 행을 에너지의 값과 연관시키고, 행의 순서가 에너지 값의 정렬 된 순서와 일치하도록 행을 다시 배열하고자 함)
당신은 아마 [numpy.argsort] (HTTP를 확인해야합니다. scipy.org/doc/numpy/reference/generated/numpy.argsort.html) – goncalopp
'numpy.argsort (energies)'의 표시를 사용하여'states' 배열을 정렬합니다. –
그래서 numpy.argsort (에너지)에서 인덱스를 얻은 후에는 어떻게 그것들을 사용하는 상태의 행만 재정렬 할 수 있습니까? –