Минимум математики: комплексные числа и нормировка
Собираем математический инструментарий: комплексные амплитуды, модуль, фаза, нормировка.
Нормировка — приведение вектора состояния к единичной длине, чтобы квадраты модулей амплитуд складывались в 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.
- Глобальная фаза не важна, относительная — управляет интерференцией.