2014-02-08 2 views
3

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

  • есть ли способ получить точный ответ?
  • Вам нужно использовать sympy для этого или есть другой способ?

Матрицы будут малы (скажем, менее 20 на 20) с целыми значениями. Когда я говорю точные ответы, я имею в виду, например, в the answer of John Habert.

+0

Можете ли вы определить, что вы подразумеваете под точным? И о каких типах матриц мы говорим? Какой размер? –

+0

Я не думаю, что вы можете получить точный ответ во всех случаях, даже для матриц с целыми элементами. – user2357112

ответ

7

Собственные значения algebraic numbers, то есть корни некоторого полинома. Степень этого полинома будет матричной размерностью. Для полиномов до степени 4 вы в принципе способны записывать эти числа как вложенные корни, но помимо того, что вообще нет возможности точно представлять собственные значения. И даже в тех случаях, когда это будет возможно, вы наверняка не хотите, чтобы увидеть точное значение, вот пример для невинно глядя небольшой матрицы:

1

С вашего поста не ясно, будет ли матрица будет эрмитовой. Я не знаю методов для общего случая.

Но! Если матрица эрмитова (симметричная положительно определенная), вы можете избежать вычисления ВСЕХ собственных значений, если вам нужен только самый маленький (который будет положительным). Вы можете использовать обратную итерацию. http://en.wikipedia.org/wiki/Inverse_iteration

Вы можете запустить алгоритм с mu = 0; а затем использовать коэффициенты Рэлея http://en.wikipedia.org/wiki/Rayleigh_quotient_iteration, которые, как правило, дают вам очень быструю конвергенцию. Метод включает в себя решение линейной системы уравнений (или, что то же самое, вычисление обратной матрицы), но если снова матрица эрмитова, вы можете произвести для нее разложение Холецкого, а затем использовать полученные треугольные матрицы для решения систем.

В некоторых случаях метод сходится к некорректному собственному значению (например, рядом с наименьшим).

Кроме того, интересное наблюдение заключается в том, что КРУПНЕЙШИЕ собственные значения матрицы A равны норме этой матрицы (квадратный корень из суммы квадратов ее элементов). МАЛОЕ собственное значение A равно 1, деленное на норму INVERSE of A. Итак, если ваша матрица не очень большая и ее обратная существует, вы можете позволить ей инвертировать ее, а затем просто сделать это и вычислить 1/норму (INV (А)). Это значение будет МАЛОЕ собственное значение A.

+0

Я не численный аналитик, но похоже, что обратная итерация дает численное приближение к собственному значению, а не точное точное значение ОП. И я не думаю, что последний абзац верен: [[1 0] [0 2]] имеет норму √5. Возможно, норма ограничивает собственные значения? – Teepeemm

+0

Да, вы правы, это даст приблизительное значение, возможно, не совсем то, что может понадобиться OP. Matlab дает мне норма = 2 для вашей матрицы. Может быть, это потому, что он вычисляет L2-норму. Вы ссылаетесь на норму Фробениуса, которая представляет собой sqrt (5). Я не был прав, когда сказал, что наибольшее собственное значение равно «квадратному корню из суммы квадратов матричных элементов». Есть на самом деле различные нормы: http://mathworld.wolfram.com/MatrixNorm.html http://mathworld.wolfram.com/FrobeniusNorm.html Спасибо за указание этой неоднозначности. – Lelik

 Смежные вопросы

  • Нет связанных вопросов^_^