Пакет Physics

 

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

Квантовые операторы, собственные функции, собственные значения и коммутаторы

Используйте команду Setup, чтобы сказать системе, что буква B представляет квантовые операторы:

  • Setup(op = B);


Учтите, что после ввода команды

  • Setup(mathematicalnotation = true);

расширенный набор символов показывает некоммутирующие (noncommutative) объекты разными цветами. Изменить цвет можно в Setup. Поскольку теперь B – квантовый оператор, то – это собственный вектор четырех операторов: и , соответственно с собственными значениями m, n, x, y, например:

  • B[2] . Ket(B, m,n,x,y);

Квантовые операторы могут быть также евклидовыми 3D-векторами. Для этого необходимо загрузить подпакет Vectors пакета Physics:

  • with(Vectors);

Зададим теперь векторы и как квантовые операторы (для затирания прежнего определения квантовых операторов используйте опцию 'redo').

  • Setup(op = {L_, r_, p_, x,y,z, px, py, pz, Lx, Ly, Lz},
    redo);

Определим как оператор углового момента и зададим правила коммутации для компонент и .

  • L_ := r_ &x p_;

  • r_ := x*_i + y*_j + z*_k;

  • p_ := px*_i + py*_j + pz*_k;

Векторные расчеты с некоммутирующими компонентами сохраняют и . Это достигается соответственно симметризацией и антисимметризацией каждого из этих произведений; например, вот компоненты вдоль оси x:

  • _i . L_;

Чтобы ввести правила коммутации между каждыми компонентами и , следует написать эти коммутаторы и ввести весь их набор в Setup. Если их много, как в данном примере, следует использовать Matrix и функцию с индексами. Введите основную информацию как процедуру: C представляет коммутатор компонент векторов и :

  • C := (a_, i, b_, j) -> %Commutator(Component(a_, i),
    Component(b_, j));

Задание i и j от 1 до 3 обозначает компоненты и , а алгебра задается как набор:

  • algebra := (i, j) -> (
    C(r_, i, p_, j) = I*KroneckerDelta[i,j],
    C(r_, i, r_, j) = 0,
    C(p_, i, p_, j) = 0);

Тогда все коммутаторы между каждой из компонент и можно сконструировать одним вызовом Matrix:

  • Matrix(3, 3, algebra);

Передав эту Matrix в Setup, задаем набор алгебраических правил:

  • Setup(%);

Например, зададим набор величин и -компонент :

  • Lx := _i . L_;

  • Ly := _j . L_;

  • Lz := _k . L_;

Проверим алгебру коммутаторов для этих компонент :

  • Commutator(Lx, Ly) = I * Lz;

  • Commutator(Lz, Lx) = I * Ly;

  • Commutator(Ly, Lz) = I * Lx;

Эти выражения – правильные.

Другими часто используемыми операторами являются операторы рождения и уничтожения (Annihilation и Creation): они добавляют или убирают одно из значений квантового числа. Эти операторы удобны для работы с многочастичными векторными состояниями. В этом контексте квантовые числа называются числами заполнения.

Следующее выражение конструирует пару операторов уничтожения/рождения, действующих на базис А, состоящий только из одного квантового числа.

  • am := Annihilation(A);

  • ap := Creation(A);

Операторы Annihilation и Creation действуют на векторы Ket дискретного базиса, и предполагается, что получается «нижнее» состояние, когда квантовое число = 0 (часто встречающийся термин «вакуум» – это Ket с числом заполнения = 0, который представляет состояние «нет частиц»).

  • am . Ket(A, n);

  • am . %;

  • ap . Ket(A, n);

  • ap . %;

Commutator операторов и получается автоматически при конструировании (обратите внимание на использование инертной формы коммутатора %Commutator):

  • %Commutator(am, ap);

  • value(%);

Чтобы указать, что составляющие базис векторы Ket – это фермионы, используйте переменную anticommutative для обозначения базиса; добавляя префикс anticommutative к переменой, используйте Setup:

  • Setup(anticommutativeprefix = Theta);

  • type(Theta, anticommutative);

  • Ket(Theta);

Сконструируем теперь операторы Annihilation и Creation, действующие на базис. Примените notation = explicit, чтобы операторы действовали явно на базис и квантовые числа:

  • Am := Annihilation(Theta, notation = explicit);

  • Ap := Creation(Theta, notation = explicit);

AntiCommutator этих операторов удовлетворяет соотношению:

  • %AntiCommutator(Am, Ap);

  • value(%);

Согласно принципу запрета Паули в состоянии фермиона может быть только одна квантовая частица, поэтому начинаем с вакуума:

  • Ket(Theta, 0);

  • Ap . %;

  • Ap . %;

  • Am . %%;

И именно так: оператор уничтожения, действуя на вакуум, возвращает 0:

  • Am . %;

Коммутационное соотношение подразумевает, что

  • restart; with(Physics); Setup(math = true);

Рассмотрим две сопряженных наблюдаемых величины Q, P и соответствующие эрмитовы операторы, удовлетворяющие .

  • macro(h = `ℏ`):
  • Setup(Hermitian = {Q,P}, %Commutator(Q,P) = I*h);

Пусть система с Q и P находится в некотором состоянии , нормированном на 1, и пусть есть состояние по умолчанию для расчета Brackets:

  • Setup(%Bracket(psi, psi) = 1, bracketbasis = psi);

Средние значения операторов Q и P в состоянии задаются как

  • Qm := Bracket(Q);

(Кратко – для Bracket(psi, Q, psi) после задания базиса (bracketbasis) для ψ.)

  • Pm := Bracket(P);

Введем эрмитов оператор Δ и обозначим Δ(Q) и Δ(P) операторы, представляющие отклонения от средних значений и .

  • Setup(her = Delta);

  • DQ := Delta(Q) = Q – Bracket(Q);

  • DP := Delta(P) = P – Bracket(P);

Значение Commutator между Δ(Q) и Δ(P) – это следствие значения Commutator между Q и P, и поэтому его можно вычислить, переписав отклонения через Q и P:

  • %Commutator(Delta(Q), Delta(P));

  • eval(%, {DQ, DP});

  • value(%);

Считая этот результат алгебраическим правилом, расчеты можно вести непосредственно с Δ(Q) и Δ(P):

  • Setup(%%% = %);

Чтобы показать, что подразумевает , рассмотрим действие этих операторов отклонения Δ(Q) и Δ(P) на состояние системы и сконструируем с ним новый Ket, содержащий вещественный параметр λ:

  • Ket(Psi, lambda) := (Delta(Q) + I*lambda*Delta(P)) .
    Ket(psi);

Квадрат нормы – это:

  • Dagger(%) . %;

Примените Simplify к этой норме, учитывая коммутаторы и то, что λ – вещественная:

  • Setup(alg, quiet);

  • Simplify(%%) assuming lambda::real;

Это полином второй степени по λ, его дискриминант отрицателен или = 0:

  • discrim(%, lambda) ≤ 0;

Выделяя , получаем нижнюю границу для .

  • isolate(%, h^2)/4;

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