Как создать словарь векторов, вызываемых по значению и индексуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как создать словарь векторов, вызываемых по значению и индексу

Сообщение Anonymous »

Я хотел бы создать словарь или список под названием Fock_states, к которому я мог бы добавлять различные векторы. Различные векторы будут обозначаться индексом j, который указывает, какому значению частоты соответствует состояние Фока из диапазона частот ω = np.array([ω_0, ω_1, ω_2]), где ω_j принимают на некоторых заданных значениях и их числе Фока n, которое определяет, сколько фотонов находится в этом частотном режиме. Так, например, один из базисных векторов, который я хочу определить, — это Fock_state_12 = np.array([2,0,0]), который представляет собой состояние Фока, которое кодирует «2 фотона в частотном режиме ω_0». В общем, я хочу иметь вызываемые объекты Fock state_nj, которые кодируют «n фотонов в частотном режиме ω_j» и иметь возможность вызывать их по их индексам. Сначала я попробовал что-то вроде этого:

Код: Выделить всё

Fock_states = []

ω = np.array([0, 2.5, 5])
ψ = np.zeros(len(ω))

def update_ψ(J,N):
ψ[J] += N

n_max = 10

for j in range(0, len(ω)):
for n in range(1, n_max+1):
update_ψ(j,n)
Fock_states.append(ψ)

Но это, очевидно, не сбрасывает ψ, чтобы создавать новый вектор для каждого запуска цикла, а вместо этого просто постоянно обновляет один и тот же вектор и возвращает Fock_states = [[55,55, 55,55], [55,55,55,55],...,[55,55,55,55]]
Я думал, что исправление будет так же просто, как добавить новую строку:

Код: Выделить всё

Fock_states = []

ω = np.array([0, 2.5, 5])
ψ = np.zeros(len(ω))

def update_ψ(J,N):
ψ[J] += N

n_max = 10

for j in range(0, len(ω)):
for n in range(1, n_max+1):
update_ψ(j,n)
Fock_states.append(ψ)
update_ψ(j,-n)

Но это возвращает массив списков, заполненных нулями.
Будем благодарны за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/786 ... -and-index
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»