Минимум математики: комплексные числа и нормировка

Собираем математический инструментарий: комплексные амплитуды, модуль, фаза, нормировка.

Нормировка — приведение вектора состояния к единичной длине, чтобы квадраты модулей амплитуд складывались в 1 и читались как вероятности.

Комплексное число за минуту

Комплексное число z = x + y·i имеет действительную часть x и мнимую y, где i — мнимая единица (i^2 = -1). Два понятия нам критичны: модуль |z| = корень из (x^2 + y^2) — «длина», и фаза (аргумент) — угол. Модуль в квадрате даёт вероятность; фаза сама по себе не наблюдаема, но разность фаз между амплитудами управляет интерференцией. В Python всё это уже есть в модуле cmath.

import cmath, math

z = complex(3, 4)
print('модуль |z| =', abs(z))           # 5.0
r, phi = cmath.polar(z)                  # модуль и фаза
print('фаза (рад) =', round(phi, 4))
print('фаза (град) =', round(math.degrees(phi), 2))

# Глобальная фаза: умножение на e^{i*theta} не меняет модуль
theta = math.pi / 3
z2 = z * cmath.exp(1j * theta)
print('модуль после поворота фазы =', round(abs(z2), 4))

Вывод:

модуль |z| = 5.0
фаза (рад) = 0.9273
фаза (град) = 53.13
модуль после поворота фазы = 5.0

Нормировка вектора состояния

Произвольную пару амплитуд (a, b) почти всегда можно сделать корректным состоянием кубита: разделить обе на длину вектора. Тогда |a|^2 + |b|^2 станет равно 1. Это постоянная операция: любые «сырые» амплитуды нормируют перед тем, как трактовать их квадраты как вероятности.

import math

def normalize(a, b):
    norm = math.sqrt(abs(a)**2 + abs(b)**2)
    return a / norm, b / norm

a, b = complex(3, 0), complex(0, 4)   # длина 5
a, b = normalize(a, b)
print('a =', a)
print('b =', b)
print('p0 =', round(abs(a)**2, 4))
print('p1 =', round(abs(b)**2, 4))
print('сумма =', round(abs(a)**2 + abs(b)**2, 4))

Вывод:

a = (0.6+0j)
b = 0.8j
p0 = 0.36
p1 = 0.64
сумма = 1.0

Как работает под капотом

Правило Борна — мост между математикой и опытом: вероятность исхода равна квадрату модуля соответствующей амплитуды. Глобальная фаза (общий множитель e^{i·theta} у всего состояния) физически не наблюдаема — она сокращается при возведении в квадрат модуля. А вот относительная фаза между амплитудами наблюдаема косвенно: она проявляется после гейта Адамара как разная вероятность исходов. Запомните это различие — оно объясняет, почему фазовые гейты вообще что-то делают.

Частые ошибки

  • Забыть нормировать: тогда «вероятности» не сложатся в 1 и всё посыплется.
  • Считать глобальную фазу значимой: она не наблюдаема, наблюдаема лишь разность фаз.
  • Путать модуль и квадрат модуля: вероятность — это |a|^2, а не |a|.

Итог

  • Амплитуда — комплексное число; вероятность — квадрат её модуля (правило Борна).
  • Нормировка делает |a|^2 + |b|^2 = 1.
  • Глобальная фаза не важна, относительная — управляет интерференцией.
Проверьте себя
1. Как из амплитуды a получить вероятность исхода?
AВзять |a|
BВзять |a|^2
CВзять действительную часть a
DВзять фазу a
2. Что делает нормировка вектора состояния?
AОбнуляет мнимые части
BДелает длину вектора равной 1, чтобы |a|^2+|b|^2=1
CМеняет фазу на ноль
DУдваивает амплитуды
3. Какая фаза физически наблюдаема?
AГлобальная фаза всего состояния
BОтносительная фаза между амплитудами
CНикакая
DТолько нулевая фаза