Пакет Physics

 

Версия для печати

Примеры применения объектов квантовой механики Maple

Покажем, как пользоваться на рабочем листе Maple математическими конструкциями квантовой механики.

  • restart; with(Physics): Setup(mathematicalnotation = true);

Bra и Ket

В обозначениях Дирака квантовое состояние системы, принадлежащее пространству квантовых состояний, обозначается Ket-вектором (Ket):

  • Ket(u);

Это квантовый аналог непроектируемого вектора евклидова 3D-пространства. Норма самого вектора Ket заранее не установлена и может быть определена путем задания правила для скобок, как показано в примере для скалярного произведения (см. описание команд пакета Vectors, а также пример в разделе Скалярное произведение и соотношение ортогональности). Каждый Ket-вектор можно проектировать на базис состояний-векторов того пространства, к которому он принадлежит. Ket-векторы, из которых образуется базис (по аналогии с единичными 3D-векторами), отличаются от собственно Ket-вектора тем, что они имеют одно или больше квантовых чисел:

  • Ket(v, n);

Кет-векторы с квантовыми числами всегда предполагаются принадлежащими базису квантовых состояний: они ортогональны друг другу, нормированы на 1 и отличаются друг от друга квантовыми числами. Например, ортонормальный базис двумерного пространства квантовых состояний:

  • Ket(v,0), Ket(v,1);

Нет ограничения на количество квантовых чисел, которые может иметь вектор Ket. Вот пример Ket, принадлежащего базису пространства четырех квантовых чисел:

  • Ket(v,j,k,m,n);

Каждому квантовому числу можно сопоставить пространство состояний, поэтому Ket со множеством квантовых чисел представляет состояние в пространстве, образованном как тензорное произведение пространств.

Каждому Ket соответствует Bra, полученный из Ket путем эрмитова сопряжения или команды Dagger (крестик):

  • Ket(u)Ket(v, n)Dagger(%);

  • Dagger(%);

Можно вводить векторы Bra непосредственно, с помощью функции Bra.

  • Ket(u)Ket(v, n)Dagger Bra(v,j,k,m,n);

Пространство векторов Bra системы – дубликат пространства векторов Ket той же системы.

Базисы дискретных и непрерывных состояний

Векторы Ket принадлежат либо дискретному, либо непрерывному пространству квантовых состояний. В пространстве дискретных состояний векторы Ket изменяются дискретно. Следовательно, эти Ket принадлежат дискретным базисам квантовых состояний. Непрерывное пространство – это то, в котором квантовые числа изменяются непрерывно и его векторы Ket принадлежат к непрерывным базисам квантовых состояний.

Если нет явного указания, то векторы Ket считаются принадлежащими дискретному пространству состояний.

В этом примере буква R обозначает пространство непрерывных состояний (команда Setup).

  • Setup(continuous = R);

Векторы Ket непрерывного пространства состояний могут иметь несколько квантовых чисел:

  • Ket(R, x);

  • Ket(R, x,y,z);

  • Dagger(%);

Скалярное произведение и соотношение ортогональности

Между Bra и Ket определено скалярное произведение. Порядок его выполнения задается либо командой dotoperator `.` (оператор-точка) пакета Physics, либо с помощью функции Bracket, причем обе представляют один и тот же объект:

  • Bra(u) . Ket(v);

  • Bracket(Bra(u), Ket(v));

Учтите, что если скалярное произведение только представляется, а не вычисляется (как выше), то результат также выражается с помощью функции Bracket. Краткое обозначение для ввода скалярного произведения с помощью функции Bracket:

  • Bracket(u, v);

При операции Dagger (крестик) , поэтому Bracket становится таким:

  • Dagger(%);

Для Bracket то же получается при применении команды conjugation (сопряжение):

  • conjugate(%);

Два собственных Ket (как выше) могут принадлежать или не принадлежать одному пространству. Чтобы сделать практичным применение векторов Ket, то, в зависимости от задачи, можно с помощью команды Setup задать правило скобок, устанавливающее правило Bracket между ними:

  • Setup(% = f(u,v));

После этого команды оператор-точка (dotoperator `.`) и Bracket знают, как выполнять скалярное произведение:

  • Bracket(u, v);

Ket’ы дискретного базиса состояний удовлетворяют соотношению ортонормированности с дельта-символом Кронекера (KroneckerDelta), и если присутствуют квантовые числа, то правило скобок указывать не надо:

  • %Bracket(Bra(u, n) , Ket(u, m)) = Bra(u, n) . Ket(u, m);

Учтите, что выше применена инертная форма Bracket.

Иногда бывает полезно представлять математические операции
без их реального исполнения.
Для этого используется префикс % к команде.

Для выполнения инертной операции примените value:

  • value(%);

Вычислите результат двойного применения того, что выше при m = n:

  • eval(%%, m = n);

Bracket для состояний-векторов, зависящих от множества квантовых номеров, дает произведения символов Кронекера. Краткое обозначение функции Bracket тоже работает в присутствии квантовых чисел (чтобы избежать типографских ошибок, удобно визуально группировать такие объекты, оставляя или нет пробелы после запятых).

  • Bracket(u, i,j,k, u, n,m,l);

Ket’ы непрерывного базиса состояний удовлетворяют соотношению ортонормированности для функции Дирака (Dirac) (вспомним, что командой Setup буква R назначена в качестве обозначения непрерывного пространства):

  • Bracket(R, x, R, y);

  • %Bracket(R, x,y,z, R, a,b,c):
    % = value(%);

Трехмерную функцию Дирака выше можно разложить с помощью expand:

  • expand(%);

Соотношение совместности, разложение по базису (проекторы)

Каждый Ket пространства состояний может быть разложен по базису этого пространства. Осуществляющий разложение оператор называется Projector. Для конструирования проекторов необходима информация о размерности базиса. Ее можно указать непосредственно для команды Projector или установить в Setup. Команда выглядит так:

  • Setup(basisdim, cont);

По умолчанию непрерывный базис предполагается от –∞ до ∞. Поэтому, чтобы вычислить его Projector, достаточно информации об R:

  • P[R] := Projector(Ket(R, x,y,z));

  • {Ket(R, x,y,z)};

Выражение PR для проектора также называется соотношением совместности (closure relation). Если при этом справедливо соотношение ортонормированности , то наборы Ket , содержащие все возможные значения x, y и z, образуют базис, и поэтому любая имеет единственное разложение по .

Учтите, что скалярное произведение PR с самим собой равно ему же:

  • P[R] . P[R];

Следующий проектор – для базиса, обозначенного u, причем заранее неизвестно, является ли он непрерывным. По умолчанию, если ничего неизвестно об обозначении базиса, он предполагается относящимся к дискретному пространству состояний. Размерность базиса задается непосредственно в Projector.

  • P[u] := Projector(Ket(u, n), dimension = N);

Задаваемая в Projector информация автоматически передается системе, поэтому ее не надо задавать заново.

  • Setup(quantumbasisdimension, quantumcontinuousbasis);

Для изменения – см. опцию redo в Setup. Чтобы вычислить скалярное произведение векторов Ket, принадлежащих к базису других векторов Ket одного и того же пространства, следует определить правило для скобок (bracket rule):

  • %Bracket(Bra(R, x,y,z), Ket(psi)) = psi(x, y, z);

  • Setup(%);

Теперь Bracket и оператор `.` пакета Physics знают, как вычислять операции отношения:

  • Bracket(Bra(R, a,b,c), Ket(psi));

  • P[R] . Ket(psi);

  • Bra(psi) . P[R];

  • Bra(psi) . P[R] . Ket(psi);

Это правило скобок для скалярного произведения вектора состояний дискретного базиса u и :

  • %Bracket(Bra(u, n), Ket(psi)) = psi(n);

  • Setup(%);

Правило для , которое разрешает проектировать на базис u эквивалентно вставке проектора между и . Учтите, что использованы правила отложенного расчета, т. е. окружающие Bracket операции выполняются в следующих строках:

  • ' Bracket(psi, P[u], psi) ';

  • %;

Ket может иметь свои квантовые числа, связанные с разными типами пространств. В следующем примере векторы Ket из базиса, обозначенного буквой В, имеют квантовые числа, два из которых – В3 и В4 – связаны с непрерывными пространствами, причем размерности пространства каждого квантового числа разные:

  • Setup(quantumcontinuousbasis = {B[3], B[4]},
    quantumbasisdimension =
    {B[1] = -1/2..1/2, B[2] = 0..N, B[3] = -a..a, B[4] =
    -infinity..infinity});

Вот проектор на базис B:

  • Projector(Ket(B, n,m, x,y));