2009-11-10 97 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