Сегодня решил наконец взяться за домашку по численным методам. Открыл задание, смотрю написано численные методы решения СЛАУ. Меня это сразу спугнуло зачем решать СЛАУ численно когда есть Гаусс. Но ещё больше меня спугнули сами методы: 1) Метод итерации; 2) Метод простой итерации; 3) Метод Зейделя (стационарный); 4) Метод Зейделя (нестационарный). Я сильно удивился тому насколько просто и тупо выглядят эти методы. Закодил я всё это минут за 10 но ни один метод не сходится, т. е. сходится только на совсем тупых системах и то не всегда. Может мне кто-нибудь объяснить что это всё вообще такое и когда и почему это должно сходиться?
Можно поискать что-нибудь про всякие числа обусловленности
(это все было довольно давно, так что я вполне могу ошибаться)
Извини за банальность ответа - а точно закодил все верно или в литературе не всё до конца описано.
Если память не подводит - для численного решения иногда надо изменять исходную матрицу.
На самом деле, если у тебя есть система АX = B, то мы ее должны привести к нужному виду, а именно x = Gx + H
при этом метод будет сходиться, если норма матрицы меньше 1 (достаточное условие), либо если все собственные числа меньше 1 (критерий).
как мы будем сводить систему к такому виду? Самый простой способ это что-то типа такого.
Ax = B
умножим левую и правую часть на АT (слева), и введем следующие обозначения C = AT * A, D = AT * B
Тогда мы имеем систему CX = D. Разделим левую и правую часть на || C || . (при этом из норм можно брать как евклидову, так и кубическую, так и октаэдрическую). Про матрицу С мы можем сказать, что она положительно определенная (как композиция сопряженных операторов), тогда все ее собственные значения больше нуля. Теперь, вспомним теорему о том, что любое собственное значения не превосходит по модулю нормы матрицы, запишем систему в виде QX = H, где Q = C / || C ||, H = C / || C ||. Тогда у матрицы Q все собственные значения меньше 1.
Прибавим к левой и правой части X : X + QX = X + H
X = (Q – E ) X + H
Тогда про матрицу Q - E мы можем сказать, что все ее собственные значения по модулю не больше 1, чего мы и добивались. Недостаток этого метода в том, что при большом числе обусловленности матрицы, у нас будет очень медленная сходимость. В качестве хорошего метода сведения системы к нужному виду можно вспомнить неявное LU разложение, но этот подход не стоит времени, которое на него будет затрачиваться.
В реальных контестах чаще всего хватает Гаусса с выбором максимального элемента, а метод простых итераций можно применять, к примеру, когда у нас есть задача (чаще всего это будет на тервер), где в итоге нужно решить систему AX = X, при этом все элементы матрицы А меньше 1 и больше либо равны 0. Тогда, у нас выполняется достаточное условие сходимости, и мы можем возвести матрицу в достаточно высокую степень, и умножить на любое начальное ненулевое приближение для того, чтобы получить ответ.
(Хотел дать ссылку на методичку по курсу "Методы вычислений", но, к сожалению, она есть только на закрытом ресурсе и не гуглится.)
Там должно быть много всего.