3

作为一个简单的例子,假设你有这个矩阵:

M = [omega 1;
     2     omega];

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

这肯定很简单,但我还没有找到这个功能。

4

3 回答 3

13

对于矩阵可以是任何东西的一般情况,您需要创建矩阵的符号表示,计算行列式并求解感兴趣的变量。您可以分别使用Symbolic Math Toolbox中的函数SYMDETSOLVE来做到这一点:

>> 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是一个符号矩阵。

于 2009-11-10T18:44:16.607 回答
2

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

sympoly omega
roots(det([omega 1;2 omega]))
ans =
      -1.4142
       1.4142
于 2009-11-11T11:44:30.140 回答
0

那么确定的是:om * om - 1*2 = 0

所以你会得到: om*om = 2

正式定义是: [ab ; cd] = a d - b c

我会考虑简化确定的,并找到一个求解器来求解未知数。

于 2009-11-10T18:38:10.217 回答