определить, когда собственное значение матрицы положительно в Matlab

Я пытаюсь найти такое значение K, что следующая матрица имеет любое собственное значение с положительной действительной частью, но я продолжаю получать ерунду. Какой лучший способ сделать это?

K = 0;
A = [  0 1 0; 0 0 1; -K -2 -3];

while K < 10
    e = eig(A);
    A = [  0 1 0; 0 0 1; -K -2 -3 ];
        if any(real(e)) > 0
            K
            break;
        end
    K = K + 1/100;    
end

person garserdt216    schedule 28.03.2016    source источник
comment
Если вы не пытаетесь реализовать алгоритм поиска (которого в приведенном вами коде в основном нет), я бы сказал, что вам нужно вычислить характеристический полином и вывести значение (или диапазон) K из дискриминант кубического   -  person TroyHaskin    schedule 28.03.2016


Ответы (1)


Развивая комментарий @TroyHaskin, вот решение, использующее характеристический полином вашего вышеуказанного вопроса.

Обратите внимание, что приведенный выше характеристический многочлен имеет вид

-x^3 - 3x^2 - 2x - K

решено здесь. Играя с приведенным выше уравнением и roots в Matlab, достаточно легко найти решение, удовлетворяющее вашему ограничению.

>> roots([-1, -3, -2, 0])

ans =

     0
    -2
    -1

>> roots([-1, -3, -2, 1])

ans =

  -1.6624 + 0.5623i
  -1.6624 - 0.5623i
   0.3247 + 0.0000i

Что показывает, что для K=1 у вас есть собственное значение со строго положительной действительной частью.

person mgilbert    schedule 28.03.2016