Примеры применения объектов квантовой механики Maple
Покажем, как пользоваться на рабочем листе Maple математическими конструкциями квантовой механики.
- restart; with(Physics): Setup(mathematicalnotation = true);
В обозначениях Дирака квантовое состояние системы, принадлежащее пространству квантовых состояний, обозначается 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));