2014-01-14 3 views
3

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

Если я попробую метод, такой как: Solving a simultaneous equation through code , это дает мне тривиальные решения ([0,0]), так как u = 0 и v = 0, в случае собственных векторов.

например. если моя матрица MAT = [[3,2], [2,1]], т.е. a = 3, b = 2, c = 2 и d = 1, u = 0 и v = 0, уравнения, предложенные в приведенной ссылке y = (v - uc/a)/(d - bc/a) и x = (uc/a - bc/a * y)/c, будет приравниваться к решению [0,0], т.е. тривиальное решение.

Кроме того, это, казалось бы, дает ответ, но я не могу создать пример, который согласуется с уравнениями на: http://www.math.harvard.edu/archive/21b_fall_04/exhibits/2dmatrices/index.html

также, кажется, не охватывает все случаи, что о случае, когда б и c не равны нулю?

+0

Можете ли вы привести конкретный пример, где вы получите нулевые ценные собственные векторы? –

+1

Если оба они отличны от нуля, то оба вектора векторов одинаковы, не так ли? Вы это проверили? – dvvrd

ответ

3

Для случая матрицы 2x2 существует простое аналитическое решение.

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

+0

Но как насчет случая, когда и b, и c не равны нулю, что тогда? – bluefocs

+0

этот случай относится к первому случаю ссылки, а 'c' не равен нулю. Или к 2-му, с 'b' не равным нулю. – gg349

0

Как только у вас есть собственные значения, собственные векторы легко получить.

Я бы рекомендовал итеративный метод, например, Jacobi, если ваша матрица симметрична.

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