代码之家  ›  专栏  ›  技术社区  ›  Rook

如何在matlab中求解行列式?

  •  3
  • Rook  · 技术社区  · 15 年前

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

    M = [omega 1;
         2     omega];
    

    你需要解出 omega 满足条件的 det M = 0 . 如何在matlab中实现这一点?

    这肯定是很简单的事情,但我还没有找到它的功能。

    3 回复  |  直到 7 年前
        1
  •  13
  •   gnovice    15 年前

    对于矩阵可以是任何事物的一般情况,您需要创建矩阵的符号表示、计算行列式和求解感兴趣的变量。您可以分别使用函数 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];
    

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

        2
  •  2
  •   user85109    15 年前

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

    sympoly omega
    roots(det([omega 1;2 omega]))
    ans =
          -1.4142
           1.4142
    
        3
  •  0
  •   monksy    15 年前

    好吧,决定是: om*om-1*2=0

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

    形式定义为:【a b;c d】=a D-B C

    我将致力于简化确定性,并找到一个解算器来解未知数。