Как прикинуть на глаз определитель матрицы

С определителем вообще песня та ещё. Народ не понимает, что это не абы какая функция от матрицы, которая что-то там считает через миноры посредством разложения, а показатель порядка великости самой матрицы и чисел, оную составляющих. Если матрица размера \)3\times3\) и числа однозначные, то, например, трудно получить что-то, что превысит (даже при самом плохом раскладе) \( 9\cdot(9\cdot9+9\cdot9)+9\cdot(9\cdot9+9\cdot9)+9\cdot(9\cdot9+9\cdot9) = 4\,374\) — и то я не уверен, что такое вообще возможно, надо тщательно просчитывать. Как примерно прикинуть, чему равен определитель? Надо взять из каждого столбца по самому большому (по модулю) элементу и всех их перемножить — порядок будет одним и тем же. Далее последуют два примера, взятые совершенно от балды, чтобы никто не сомневался, что они случайны.
\[ \begin{vmatrix} -7 & 6 & 5 \\ 9 & 1 & 0 \\ 2 & -8 & 4 \end{vmatrix} = -614,\quad 9\cdot(-8)\cdot5=-360 \]
— очень хорошо, порядок тот же, погрешность всего два раза.
\[ \begin{vmatrix} 3 & -9 & 1 \\ -6 & 5 & -2 \\ -1 & 1 & 3 \end{vmatrix} = -130,\quad -6\cdot(-9)\cdot3=162\]
— тоже очень хорошо, порядок тот же, погрешность ещё меньше.

Чтобы определить эффективность такого «бульварного» способа оценивания определителя, я поставил в MS Excel эксперимент. Генерируется 10 столбцов по 10000 случайных чисел. Это значит, что у нас есть почти 90 000 матриц 2×2, почти 80 матриц размерности 3×3 и т. д. Короче, 10 000 матриц 10×10. Я выполняю следующий эксперимент: сначала считаю определители всех матриц по науке, а затем оцениваю их кустарным методом перемножения максимальных компонент столбцов. Эксперимент асимптотический, далее посмотрим на распределение погрешностей (во сколько раз отличается истинное значение от оценённого). Так как мы рассматриваем отношение, то имеет смысл делить большее на меньшее, так как если просто поделить оценку на истинный определитель, то получится какой-то дальний родственнник \(\frac{1}{x}\), а от 0 до 1 будет практически продублирован в зеркальном отображении под 45° весь тот хвост, который простирается от 1 до +∞.

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

Данные до логической обработки — соотношение истинного определителя матрицы и его оценки в качестве перемноженных максимальных элементов по столбцам, распределение для матриц размерности 5×5:
Unrefined distribution

Хорошо, теперь давайте элементы от 0 до 1 обратим, чтобы была определённость с точным количеством раз разницы. Итак, теперь область определения — \((-\infty;-1]\cup[1;+\infty)\). Качественно ничего почти не изменилось:
Distribution with (-1;1) inversed to the rest of the plane

Видим, что распределение симметрично. Возьмём модуль и построим, наконец, само распределение.

Теперь сделаем самую надёжную оценку. Я не стал сравнивать распределения обращённых элементов от 0 до 1, а просто соотнёс большее с меньшим и теперь оцениваю величину по модулю.
Distribution with (-1;1) inversed, absolute value

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

Отличие оценок определителей матриц размерности 2, 3, 4, 5, раз:
Determinant estimate destribution, 2­­-5 dimensions

Отличие оценок определителей матриц размерности 6­–10, раз:
Determinant estimate destribution, 6-10 dimensions

Странный рост в начале связан с тем, что для удобочитаемости я применял kernel smoothing, а из-за того, что число наблюдений у меня где-то 90 000, а где-то всего 10 000 (и вариация сама по себе масштабнее и непредсказуемее), я применял спецификацию Epanechnikov с шириной окна от 0,1 до 0,3 — оттого и смещение слева, от которого график особо не страдает.

Теперь посмотрим на характеристики распределения, полученные в STATA:

    variable |      mean        sd       p50       p90       p95       p99
-------------+------------------------------------------------------------
       det22 |  2.969683   6.54334  1.376561  4.798915  9.114814  34.51908
       det33 |  3.944484  7.909387  1.728523   7.35587  13.75972  43.38153
       det44 |  4.382632  8.534545  1.955284  8.227311   15.5423   47.9921
       det55 |  4.423578  8.496063   2.08463  7.745087  15.14616  50.08404
       det66 |  4.237461   7.37583  2.251156  7.518971  12.72408  40.39537
       det77 |  4.395704  6.870661  2.538924  8.340541  12.34868  35.15758
       det88 |   5.23148   6.82887  3.111089  10.87696  15.73281  33.49964
       det99 |  7.410074  9.058479  4.291309   16.8345  23.88091  45.32733
     det1010 |  11.45932  13.39037   6.51681  27.97927  39.24973  65.45165
--------------------------------------------------------------------------

Интерпретация: если вы прикидываете, чему равен определитель матрицы 3×3, методом перемножения максимумов по столбцам, то с вероятностью 50 % ошибётесь не более чем в 1,73 раза, с вероятностью 90 % ошибётесь не более чем в 4,8 раза, с вероятностью 95 % (королева вероятностей) ошибётесь не более чем в 9 раз, с вероятностью 99 % ошибётесь не более чем в 34 раза. И так далее. А в среднем ошибётесь в 4 раза.

Мне кажется, что для величин порядка двух тысяч ошибка в 4 раза — это ещё хороший показатель. В этом-то несовершенном мире, попрошу заметить, который создавался не учёными, а природой, обезьянами, дикарями, племенами вояк, крестьянами и т. п., ошибка в 4 раза — это приемлемая точность. Необходимо разрушить мир и создать более научно измеримую систему, но пока у Меня нет на это времени.

P.S. Если кому-то не нравится масштаб наблюдений, пожалуйте отведать на десерт логарифмической оси ординат:
Determinant estimate destribution, 2-5 dimensions, log axis
Determinant estimate destribution, 6-10 dimensions, log axis

P.P.S. Для желающих провести эксперимент самостоятельно:

  1. Excel, генерация случайных чисел, функции МОПРЕД, ЕСЛИ.
  2. Wolfram Mathematica 8,
    det22 = SmoothKernelDistribution[Flatten[Import["C:/Users/admin/Desktop/det22.csv"]], 0.1, "Epanechnikov"]

    (вместо 0,1 можно задать другую ширину окна, вместо "Epanechnikov" можно задать другой метод наложения горба). Внимание, если задать ширину не явно, а, скажем, "SheatherJones", то система виснет при таком числе наблюдений!

  3. Там же:
    Plot[{PDF[det22, x], PDF[det33, x], PDF[det44, x], PDF[det55, x]}, {x, 1, 12}, PlotRange -> {0, 1}, PlotStyle -> {{Blue, Thick}, {Red, Thick}, { Brown, Thick}, { Black, Thick}}, PlotLegend -> {"2\[Times]2", "3\[Times]3", "4\[Times]4", "5\[Times]5"}, LegendShadow -> None, LegendPosition -> {.4, -.25} ]

    или что-то подобное для получения графика;

  4. STATA,
    tabstat det22 det33 det44 det55 det66 det77 det88 det99 det1010, statistics( mean sd p50 p90 p95 p99 ) columns(statistics)

    .

  5. Предлагайте сами!
Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *