如何在MATLAB中求解行列式?

时间:2009-11-10 18:34:39

标签: matlab matrix symbolic-math determinants

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

M = [omega 1;
     2     omega];

并且您需要求解满足条件omega的{​​{1}}的值。 你是如何在MATLAB中做到这一点的?

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

3 个答案:

答案 0 :(得分:13)

对于矩阵可能是任何事物的一般情况,您可能希望创建矩阵的符号表示,计算行列式,并求解感兴趣的变量。您可以分别使用SYM中的DETSOLVESymbolic 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。上面,我用一个字符串表达式做了。但是,我可以使用SYMSw定义为符号变量,然后像在MATLAB中一样构造矩阵:

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

现在A是一个符号矩阵,就像第一个例子中一样。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

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

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

我会研究简化确定性,找到解决未知数的解算器。