Решение системы линейных уравнений в неквадратной матрице - PullRequest
6 голосов
/ 25 октября 2011

У меня есть система линейных уравнений, которая составляет матрицу NxM (т.е. неквадратную), которую мне нужно решить - или, по крайней мере, попытка решить, чтобыпоказать, что нет решения для системы.(скорее всего, решения не будет)

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

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

Ответы [ 4 ]

8 голосов
/ 25 октября 2011

Является ли ваша матрица квадратной, это не то, что определяет пространство решения.Это ранг матрицы по сравнению с числом столбцов, которое определяет это (см. теорема о ранге-недействительности ).В общем случае у вас может быть ноль, одно или бесконечное число решений линейной системы уравнений в зависимости от ее ранга и отношения ничтожности.

Однако, чтобы ответить на ваш вопрос, вы можете использовать исключение Гаусса, чтобы найтиранг матрицы и, если это указывает на существование решений, найдите конкретное решение x0 и нулевое пространство Null (A) матрицы.Затем вы можете описать все ваши решения как x = x0 + xn, где xn представляет любой элемент Null (A).Например, если матрица имеет полный ранг, ее нулевое пространство будет пустым, и линейная система будет иметь не более одного решения.Если его ранг также равен числу строк, то у вас есть одно уникальное решение.Если нулевое пространство имеет размерность один, то вашим решением будет линия, которая проходит через x0, любая точка на этой линии удовлетворяет линейным уравнениям.

4 голосов
/ 25 октября 2011

Хорошо, сначала: неквадратная система уравнений может иметь точное решение

[ 1 0 0 ][x] = [1]
[ 0 0 1 ][y]   [1]
         [z] 

явно имеет решение (фактически, оно имеет одномерное семейство решений: x = z = 1). Даже если система переопределена вместо недоопределена , она все равно может иметь решение:

[ 1 0 ][x] = [1]
[ 0 1 ][y]   [1]
[ 1 1 ]      [2]

(х = у = 1). Возможно, вы захотите начать с рассмотрения наименьших квадратов методов решения, которые находят точное решение, если оно существует, и «наилучшего» приближенного решения (в некотором смысле), если его нет.

1 голос
/ 26 ноября 2018

Взятие Ax = b, с А, имеющим m столбцов и n строк.Нам не гарантировано единственное и единственное решение, которое во многих случаях объясняется тем, что у нас на больше уравнений, чем неизвестных (m больше n).Это может быть из-за повторных измерений, которые мы действительно хотим, потому что мы осторожны с влиянием шума.

Если мы заметим, что мы не можем найти решение, которое на самом деле означает, что нет никакого способанайти b, путешествуя по пространству столбца, охватываемому A .(Поскольку x принимает только комбинацию столбцов).

Однако мы можем запросить точку в пространстве, охватываемую A, которая является ближайшей к b.Как мы можем найти такую ​​точку? Прогулка на самолете, ближайший к точке которого можно добраться , - это идти до тех пор, пока вы не окажетесь чуть ниже.Геометрически говоря, это когда наша ось зрения перпендикулярна плоскости.

Теперь это то, что мы можем иметь математическую формулировку.Перпендикулярный вектор напоминает нам об ортогональных проекциях .И это то, что мы собираемся сделать.Самый простой случай говорит нам сделать a.T b.Но мы можем взять всю матрицу A.T b.

. Для нашего уравнения применим преобразование к обеим сторонам : A.T Ax = A.T b.Последний шаг - решить для х, взяв обратное A.T A:

x = (A.T A)^-1 * A.T b

1 голос
/ 26 октября 2011

Рекомендация по методу наименьших квадратов очень хорошая.

Я добавлю, что вы можете попробовать разложение по сингулярным числам (SVD), которое даст вам наилучший возможный ответ и бесплатно предоставит информацию о пустом пространстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...