ЯдроКодаподготовка к экзаменам
Научная библиотека

Загружаем научный разбор

Подготавливаем текст, источники и редакционные примечания без изменения разметки страницы.

Каталог статейМатериал и источники

Сжатый свет и потери: как посчитать бюджет шума на Python

Автор: · Обновлено

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

# Сжатый свет и потери: бюджет шума

В инженерном отчёте можно увидеть «10 дБ сжатия» и принять число за улучшение всего прибора. Но между подготовкой света и измерением находятся оптические элементы, соединения и детектор. У каждого своя эффективность. Чтобы понимать результат, нужно явно указать, где измерен шум и какую величину выражают в децибелах.

Минимальная физическая модель

Квадратуры — две сопряжённые компоненты поля. Сжатие уменьшает неопределённость одной за счёт увеличения другой. Для гауссовских состояний удобны средние и ковариации; негауссовское состояние таким набором полностью не описывается. Теоретическая основа изложена в Gaussian Quantum Information.

Далее используется собственный учебный расчёт для одной квадратуры. Нормируем дисперсию вакуумного шума к единице. Для чистого сжатого вакуума возьмём V = exp(−2r). В модели потерь с эффективностью eta и вакуумом на втором входе светоделителя получим Vout = eta × V + (1 − eta). Эту модель нельзя автоматически переносить на тепловой шум, дрейф фазы или насыщение детектора: для них потребуются дополнительные параметры.

Выполняемый расчёт

Пусть исходная дисперсия равна 0,1, то есть шум по дисперсии на 10 дБ ниже выбранного уровня. Посмотрим, что получится после потерь.

from math import isclose, log10

def measured_variance(variance, efficiency):
    if variance < 0 or not 0 <= efficiency <= 1:
        raise ValueError("invalid variance or efficiency")
    return efficiency * variance + 1 - efficiency

for efficiency in (1.0, 0.9, 0.5):
    variance = measured_variance(0.1, efficiency)
    print(efficiency, round(variance, 3), round(-10 * log10(variance), 2))

assert measured_variance(0.1, 0) == 1
assert isclose(measured_variance(1, 0.9), 1)

Получим дисперсии 0,1; 0,19; 0,55 и уменьшение шума примерно 10; 7,21; 2,60 дБ. Даже в этой простой модели потеря половины света заметно ограничивает наблюдаемое улучшение. Множитель 10 применяется к отношению дисперсий; для отношения соответствующих среднеквадратических амплитуд используется множитель 20. Смешивание двух соглашений создаёт ошибку ещё до запуска эксперимента.

Последовательность элементов

Если модель каждого участка состоит только из таких независимых потерь в вакуум, итоговая эффективность равна произведению эффективностей участков. Для трёх элементов с eta = 0,95 получим около 0,857. На уровне системы это уже не «пять процентов потерь». Сделайте таблицу компонентов и считайте произведение, а не среднее значение.

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

Чего пример не доказывает

Наш код не рассчитывает состояние кота, статистику счёта фотонов или вероятность ошибки оптического классификатора. Он нужен для проверки единиц и интуиции о потерях. По одной дисперсии невозможно восстановить все особенности негауссовского состояния. И тем более нельзя из числа децибел напрямую получить ускорение алгоритма.

Для исследовательской программы стоит добавить тесты предельных случаев: идеальный канал, полная потеря сигнала и вакуум на входе. Затем нужен отдельный тест на композицию двух каналов. Успех таких тестов подтверждает реализацию формулы, но не её применимость к конкретному оборудованию. При сравнении с данными проверяют остатки модели и зависимость ошибки от режима работы.

Где это полезно разработчику

Бюджет шума можно оформить как конфигурацию с именами компонентов, единицами и неопределённостями. Когда эффективность измерена приблизительно, полезнее показать диапазон результата, чем много знаков после запятой. Например, пересчитать модель для нижней и верхней оценки eta и записать обе границы рядом с центральной.

Это собственная схема инженерной работы. Связь таких расчётов с измерительными протоколами обсуждается в Quantum sensing. Для негауссовского продолжения читайте [симуляцию состояния кота](/research/cat-state-simulation-cutoff), а затем возвращайтесь к [основному исследованию](/research/antisqueezed-cat-states-phase-detection).

  • Вещественные числа и округление в Python — Тип float хранит приближённые двоичные представления дробных чисел. Он удобен для измерений, процентов и средних значений, но не обещает точного хранения каждой десятичной дроби.
  • Модули math и random в Python — Команда import загружает его один раз, после чего к функциям обращаются через точку: math.sqrt, random.randint.

Источники

Формат и права

Формат
Авторский разбор

Атрибуция

Авторский русскоязычный разбор ЯдроКода с первичными источниками. Учебные примеры и инженерные предположения отделены от результатов исследований. Не перевод и не перепечатка.

Код, данные и иллюстрации

Таблицы, код и синтетические данные созданы для этого материала. Иллюстрации, код и экспериментальные данные авторов исследований не переносятся.