2009-11-10 102 views
3

举一个简单的例子,假设你有这样的矩阵:如何解决MATLAB中的行列式?

M = [omega 1; 
    2  omega]; 

,你需要解决的omega满足条件det M = 0值。 你如何在MATLAB中做到这一点?

这当然很简单,但我还没有找到功能。

回答

13

对于矩阵可能是任何东西的一般情况,您需要创建矩阵的符号表示,计算行列式,并求解感兴趣的变量。您可以分别做到这一点使用,功能SYMDETSOLVESymbolic 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是一个象征性的矩阵只是因为它是在第一个例子。

+0

我不知道符号矩阵......这很酷。你有我的投票。 – monksy 2009-11-10 18:58:00

+0

史蒂文< - 他说了什么。正是我所希望的...... ftw。 – Rook 2009-11-10 19:27:54

+0

呃,另一个matlabism ......我对此并不满意。我不喜欢那个sym采用字符串而不是矩阵。这可能会导致一些挫折。 – monksy 2009-11-10 19:35:16

0

井确定的是: OM * OM - 1 * 2 = 0

所以,你会得到:OM * OM = 2

的正式定义为:A B; c d] = a d - b c

我会研究简化确定性,并找到求解器来解决未知问题。

+3

是的,很明显。但上面给出的仅仅是一个例子。我的问题没有这样一个微不足道的案例。 – Rook 2009-11-10 18:39:15

2

如果您没有符号工具箱,请使用文件交换中找到的sympoly工具箱。

sympoly omega 
roots(det([omega 1;2 omega])) 
ans = 
     -1.4142 
     1.4142