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

Matlab中符号方程等式的检验

  •  1
  • Shin  · 技术社区  · 8 年前

    如何检查符号eq1是否等于Matlab中的符号eq2:

    syms a x y
    eq1 = a*(x+y)
    eq2 = a*x + a*y
    
    2 回复  |  直到 8 年前
        1
  •  4
  •   gnovice    8 年前

    你可以用 simplify 那么在差异上 logical 要测试它是否等于0:

    eqAreEqual = logical(simplify(eq1-eq2) == 0);
    

    你也可以使用 简化 在每个和 isequal 用于比较:

    eqAreEqual = isequal(simplify(eq1), simplify(eq2));
    

    例如:

    >> syms a x y
    >> eq1 = a*(x+y);
    >> eq2 = a*x + a*y;
    >> eqAreEqual = logical(simplify(eq1-eq2) == 0)
    
    eqAreEqual =
    
      logical
    
       1  % True!
    
    >> eqAreEqual = isequal(simplify(eq1), simplify(eq2))
    
    eqAreEqual =
    
      logical
    
       1  % Also true!
    
        2
  •  2
  •   horchler    8 年前

    对于符号数学和Matlab R2012a+,通常最好使用 isAlways 检查等式或不等式是否成立。以你为例,

    isAlways(eq1==eq2)
    

    返回逻辑 true ( 1 ). 这个 isAlways公司 logical(simplify(2*x >= x)) .