Найти матрицу, которая дает тот же результат при умножении на постоянную или другую матрицу - PullRequest
3 голосов
/ 09 февраля 2012

У меня проблема типа A*x=lambda*x, где A порядка d*d, x порядка d*c и лямбда-константа. A и lambda известны, а матрица x неизвестна. Есть ли способ решить эту проблему в Matlab ?? (Как и собственные значения, но x - это матрица d*c вместо вектора).

Ответы [ 3 ]

2 голосов
/ 09 февраля 2012

Если я вас правильно понял, не обязательно будет никаких решений для x.Если A*x=lambda*x, то любой столбец y из x удовлетворяет A*y=lambda*y, поэтому столбцы x являются просто собственными векторами A, соответствующими собственному значению lambda, и любые решения будут, только еслиlambda на самом деле является собственным значением.

Из документации :

[V, D] = eig (A) создает матрицы собственных значений (D) и собственные векторы (V) матрицы A, так что A * V = V * D.Матрица D - это каноническая форма A - диагональная матрица с собственными значениями A на главной диагонали.Матрица V является модальной матрицей - ее столбцы являются собственными векторами A.

Вы можете использовать это, чтобы проверить, является ли lambda собственным значением, и найти любые соответствующие собственные векторы.

0 голосов
/ 10 февраля 2012

Это на самом деле тривиально.Ваше требование состоит в том, что A * X = лямбда * X, где X - массив.По сути, посмотрите, что происходит для одного столбца X. Если существует массив X, то верно, что

A * X (:, i) = лямбда * X (:, i)

И это должно быть верно для ТОГО ЖЕ значения лямбды для всех столбцов X. По сути, это означает, что X (:, i) является собственным вектором A с соответствующим собственным лямбда-значением.Что еще более важно, это означает, что КАЖДЫЙ столбец X имеет то же собственное значение, что и любой другой столбец.

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

Попробуйте это на практике.Я выберу некоторую простую матрицу A.

>> A = [2 3;3 2];
>> [V,D] = eig(A)
V =
     -0.70711      0.70711
      0.70711      0.70711
D =
           -1            0
            0            5

Второй столбец V - собственный вектор с собственным значением 5. Мы можем произвольно масштабировать собственный вектор по любой константе.Теперь выберите вектор vec и создайте матрицу с реплицированными столбцами.

>> vec = [1;1];
>> A*[vec,vec,vec]
ans =
     5     5     5
     5     5     5

Это никого не должно удивлять.

0 голосов
/ 09 февраля 2012

Вы можете преобразовать эту проблему. Запишите x как вектор с помощью x (:) (имеет размер d * c x 1). Тогда A можно переписать в матрицу d * c x d * c, которая имеет c версий A по диагонали.

Теперь это простая проблема собственных значений.

...