Симметризация матрицы — это шаг, на котором из произвольной квадратной матрицы X получают симметричную матрицу, пригодную для спектрального анализа и модели Вигнера.

Стандартная операция в NumPy:

A = X + X.T

После этого:

A гарантированно симметрична
A[i, j] = A[j, i]
– структура вне диагонали становится парной

Почему симметризация делается именно так:

  1. Минимальная и детерминированная операция
    Не вводит новой случайности, только перераспределяет существующую.
  2. Сохранение независимости до симметрии
    Пары элементов (i, j) и (j, i) объединяются в одну симметричную пару.
  3. Совместимость с теорией Вигнера
    Симметричность — ключевое требование, иначе спектр не имеет нужных свойств.

Покомпонентно:

– для i ≠ j:

A[i, j] = X[i, j] + X[j, i]

сумма двух независимых случайных величин

– для диагонали:

A[i, i] = 2 * X[i, i]

Важный момент про масштаб:

Симметризация меняет дисперсию элементов:

– вне диагонали дисперсия удваивается
– диагональ усиливается в 2 раза

Поэтому симметризация всегда идёт вместе с нормировкой, обычно:

W = (X + X.T) / np.sqrt(2 * n)

Альтернативный, но эквивалентный по смыслу вариант:

W = (X + X.T) / 2

Этот вариант используют, если нужно только обеспечить симметрию, а не контролировать спектральный масштаб.

Коротко:
симметризация — это операция X + X.T, которая делает матрицу симметричной, но одновременно меняет масштаб элементов, поэтому в модели Вигнера она обязательно сопровождается нормировкой.