Как решить определитель в MATLAB? - PullRequest
3 голосов
/ 10 ноября 2009

В качестве простого примера, скажем, у вас есть эта матрица:

M = [omega 1;
     2     omega];

, и вам нужно найти значения omega, которые удовлетворяют условию det M = 0. Как вы делаете это в MATLAB?

Это, конечно, что-то простое, но я еще не нашел функцию.

Ответы [ 3 ]

13 голосов
/ 10 ноября 2009

В общем случае, когда вашей матрицей может быть что угодно, вы захотите создать символическое представление вашей матрицы, вычислить определитель и найти интересующую переменную. Это можно сделать, используя, соответственно, функции SYM , DET и SOLVE из Symbolic Math Toolbox :

>> A = sym('[w 1; 2 w]');  % Create symbolic matrix
>> solve(det(A),'w')       % Solve the equation 'det(A) = 0' for 'w'

ans =

  2^(1/2)
 -2^(1/2)

>> double(ans)             % Convert the symbolic expression to a double

ans =

    1.4142
   -1.4142

Существуют также разные способы создания исходной матрицы A. Выше я сделал это с одним строковым выражением. Однако вместо этого я мог бы использовать SYMS , чтобы определить w как символическую переменную, а затем построить матрицу, как обычно в MATLAB:

syms w
A = [w 1; 2 w];

и теперь A является символической матрицей, как это было в первом примере.

2 голосов
/ 11 ноября 2009

Если у вас нет символического набора инструментов, используйте набор инструментов sympoly , найденный при обмене файлами.

sympoly omega
roots(det([omega 1;2 omega]))
ans =
      -1.4142
       1.4142
0 голосов
/ 10 ноября 2009

Ну, определителем является: ом * ом - 1 * 2 = 0

Итак, вы получите: om * om = 2

Формальное определение: [a b; c d] = a d - b c

Я бы хотел упростить определитель и найти решение для неизвестных.

...