Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 Как численно решать линейные задачи с нулевым определителем?
Аватара пользователя
Допустим определитель линейной системы нулевой (система конечно очень большая).
Нужно какое-нибудь ненулевое решение, скажем вектор единичной длины.
Есть ли какое-нибудь стандартное численное решение такой задачи?

 Re: Как численно решать линейные задачи с нулевым определителем?
Можно попробовать минимизировать сумму квадратов невязок.

 Re: Как численно решать линейные задачи с нулевым определителем?
Аватара пользователя
Псевдообратная матрица не подходит?
И вроде бы, всё это хорошо реализовано в MatLab'е - можно посмотреть конкретные детали...

 Re: Как численно решать линейные задачи с нулевым определителем?
Аватара пользователя
Сингулярное разложение?
(И вообще - лучше конкретно описать задачу, "рецепта на все случаи жизни" не существует).

 Re: Как численно решать линейные задачи с нулевым определителем?
Аватара пользователя
Евгений Машеров в сообщении #1622085 писал(а):
И вообще - лучше конкретно описать задачу

Для начала - система совместная или нет? Иначе, как понять требование:
DLL в сообщении #1621899 писал(а):
Нужно какое-нибудь ненулевое решение, скажем вектор единичной длины.

 Re: Как численно решать линейные задачи с нулевым определителем?
Аватара пользователя
Да, система совместная.
Правая часть нулевая!

 Re: Как численно решать линейные задачи с нулевым определителем?
DLL в сообщении #1623041 писал(а):
Да, система совместная.
Правая часть нулевая!

Не, это совсем не задача с линейной системой, а задача на поиск нулевых сингулярных чисел и соответсвующих им сингулярных векторов.

Как решать - зависит от того, какая точность Вас интересует и какова размерность задачи.

Например, если Вас $O(N^3)$ вычислительной сложности не напрягает и $O(N^2)$ памяти у Вас имеется, то надо просто посчитать нулевые сингулярные вектора. Тогда решением будет любая линейная комбинация всех правых сингулярных векторов, которые соответсвуют нулевым сингулярным значениям.

Если столько ресурсов нет, то надо смотреть в сторону итерационных алгоритмов Ланцоша и Арнольди, возможно с рестартом. При больших размерностях матриц не забывать, что численно вычисленное скалярное произведение двух очень больших по размерности векторов имеет большую численную ошибку, которая накапливается в таких итерационных методах, если на это не обращать внимание.

Если задача не рыба, не мясо, или матрица не большая, но хочется решать быстро, то надо делать $QR$ c rank-revealing, и использовать верхний недотреугольник для получения решения.

 Re: Как численно решать линейные задачи с нулевым определителем?
Аватара пользователя
И тут ещё интересен вопрос, какими инструментами (библиотеками программ, мат. пакетами) можно пользоваться?

 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group