Математические байки – Telegram
Математические байки
4.3K subscribers
1.44K photos
15 videos
27 files
914 links
Рассказы про разную математику.

Архив: http://dev.mccme.ru/~merzon/mirror/mathtabletalks/
Download Telegram
Кстати — бывают ведь ещё нетипичные случаи. Если матрица A оказывается скалярной, это означает, что каждый вектор для неё собственный. И это значит, что все четыре прямые лежат на одном гиперболоиде.
А если преобразование A это жорданова клетка — матрица вида (c, 1 \\ 0, c) — то собственный вектор у него только один. И это отвечает случаю, когда четвёртая прямая касается гиперболоида (но не лежит на нём).
И из этой конфигурации можно сделать такую забавную задачу: пусть в пространстве заданы четыре попарно скрещивающиеся прямые, и пусть одна из них касается гиперболоида, проходящего через три другие, но не лежит на нём. Докажите, что тогда _любая_ из этих прямых касается гиперболоида, проходящего через три другие.
Вот такой сюжет; ну и на этом я на сегодня хочу прекратить дозволенные речи.
Две короткие истории про "как посчитать".
Допустим, мы хотим диагонализовать матрицу A размера 2x2 — и ищем её собственные вектора.
Вот мы нашли собственные значения, λ_1 и λ_2...
... и собираемся решить две системы, чтобы найти собственные вектора. А надо ли это делать?
Нет!
Ведь (A-λ_1*Id)(A-λ_2*Id)=0 (aka теорема Гамильтона-Кэли).
Значит, собственный вектор с собственным значением λ_1 можно прочитать в (любом) столбце матрицы A-λ_2*Id. И наоборот, собственный вектор с собственным значением λ_2 — в любом столбце матрицы A-λ_1*Id.
С матрицами 3x3 такое тоже можно применять, но тут уже вопрос, что кому проще: перемножить две матрицы (A-λ_1*Id)(A-λ_2*Id), чтобы в столбце прочитать собственный вектор, или решить систему (A-λ_3*Id) v =0.

(Помнится, этому трюку нас в своё время научил И. А. Дынников. Давно это было!)
Второй трюк — а что, если мы хотим посчитать какую-то функцию от матрицы (скажем, сотую степень, или экспоненту) в исходном базисе. И матрица опять маленькая, 2x2 или 3x3.
Можно, конечно, найдя собственные значения, найти потом собственные вектора, вычислить функцию в собственном базисе (допустим, все собственные значения некратные — так что матрица диагонализуется — и тогда просто поэлементно применить к собственным значениям на диагонали), потом вернуться в исходный (включая обращение матрицы перехода и умножение матриц)...
Но можно — проще!
Пусть мы хотим найти F(A), где F — многочлен.
Поделим F(x) с остатком на характеристический многочлен P(x)=П_j (x-λ_j) матрицы A:
F(x)=P(x)Q(x)+R(x).
Но P(A)=0 (опять теорема Гамильтона-Кэли), значит, F(A)=R(A).
При этом остаток R(x) — штука "простая"; скажем, для матрицы размера 2x2 это просто линейный многочлен, R(x)=ax+b, и
F(A)=R(A)=a*A+b*Id.
Для матрицы 3x3 — многочлен второй степени, так что R(A) посчитать тоже не очень сложно, знать бы только R(x) как многочлен. Но вот как его найти?
А очень просто: если мы делим многочлен F с остатком на P, то значения остатка в корнях P совпадают со значениями F.
Поэтому остаток от деления F на P с некратными корнями — это единственный многочлен степени <= deg P -1, у которого в корнях те же значения, что и у F.
Иными словами — интерполяционный многочлен Лагранжа.
И вот получается алгоритм вычисления F(A): сначала построить интеполяционный многочлен R(x) по известным значениям F(λ_j) в корнях P(x) — собственных значениях λ_j. И потом подставить туда A.

Для матрицы A размера 2x2, нахождение R(x) это проведение прямой по двум точкам, что совсем быстро.
Для матрицы размера 3x3 — работы чуть больше (возвести A в квадрат, найти квадратный трёхчлен по трём значениям), но тоже вполне обозримо.