Matlab - Почему существует так много методов решения систем линейных уравнений?
Это может звучать как простой вопрос, но мне интересно, почему существует так много различных встроенных методов Matlab для решения систем линейных уравнений. Я прошел через все определения: Bicg, Bicgstab, Bicgstabl, Cgs, Gmres, Lsqr, Minres, Pcg, Qmr, Symmlq, Tfqmr, и, хотя есть некоторые различия, кажется, все делают одно и то же?
Является ли конкретная цель для этого? Являются ли некоторые более точными / более быстрыми и т. Д. Для конкретных систем уравнений?
Спасибо
1 ответ
Системы линейных уравнений возникают из огромного разнообразия задач реального файла, например, из математических моделей физических явлений, таких как механическое поведение деформируемых твердых тел, анализ напряжений и токов в электрических цепях и т. Д. Проблема заключается в том, что каждый класс проблем приводит к матрицам со специфическими свойствами. Некоторые плохо обусловлены, некоторые очень большие (миллионы строк / столбцов), некоторые положительно определены, а другие нет; некоторые матрицы симметричны, некоторые нет; некоторые матрицы являются квадратными, другие могут быть прямоугольными (например, для переопределенных систем) и т. д. Часто случается, что некоторые решатели (например, реализованные в MATLAB) хороши для некоторых классов задач, но "плохо "для других, например: скорость сходимости может быть плохой, или матрица слишком велика, и поэтому она не может быть полностью сохранена в оперативной памяти и т. д. Поэтому пользователь должен выполнить серию численных экспериментов, пробуя различные методы для своего класса задач, чтобы найти метод, наиболее подходящий для его / ее случая, т.е. самый быстрый, самый точный, самый надежный и т. д. Вот почему ему / ей предоставляется широкий выбор методов решения для экспериментов.