在MATLAB中分解因子符号表达式(和的平方)

时间:2016-02-10 01:12:47

标签: matlab symbolic-math

如果我从以下符号表达开始:

simplify

然后运行factor(或>> simplify(a^2 + 2*a*b + b^2) (a + b)^2 ),我得到了预期的结果:

>> simplify(a^2 + 2*a*b + b^2 + 1)

a^2 + 2*a*b + b^2 + 1

现在,当我运行相同的示例,但添加另一个术语时,不会发生因式分析:

(a + b)^2 + 1

如何让这些函数返回此表达式的更实用版本('Steps')?我已尝试使用这些函数的所有明显选项(如'IgnoreAnalyticConstraints'ax^2 - 2*ax*bx + bx^2 + ay^2 - 2*ay*by + by^2等),但无济于事。

上下文:我有一个表达式(ax - bx)^2 + (ay - by)^2,我需要将其转换回r^2,以便可以将其正确地视为{{1}}。我知道我可以使用一些钝的替换规则,但对于这么简单的事情,我觉得我错过了一个明显的“非黑客”解决方案。

1 个答案:

答案 0 :(得分:1)

您可以分别在这两个条款上运行simplify

simplify(ax^2 - 2*ax*bx + bx^2) + simplify(ay^2 - 2*ay*by + by^2)

似乎你已经知道应该如何简化它。

另外,您最终希望将其写为r^2。对于所有二阶表达式,这通常是不可能的,所以不要试图找到一般解决方案。