B T*_*B T 8 matlab symbolic-math
如果我从以下符号表达式开始:
a^2 + 2*a*b + b^2
Run Code Online (Sandbox Code Playgroud)
然后运行simplify(或factor),我得到预期的结果:
>> simplify(a^2 + 2*a*b + b^2)
(a + b)^2
Run Code Online (Sandbox Code Playgroud)
现在,当我运行相同的示例,但添加另一个术语时,不会发生因式分解:
>> simplify(a^2 + 2*a*b + b^2 + 1)
a^2 + 2*a*b + b^2 + 1
Run Code Online (Sandbox Code Playgroud)
如何让这些函数返回这个表达式((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.我知道我可以使用一些钝的替换规则,但对于这么简单的事情,我觉得我错过了一个明显的"非黑客"解决方案.
您可以simplify分别运行这两个术语。
simplify(ax^2 - 2*ax*bx + bx^2) + simplify(ay^2 - 2*ay*by + by^2)
Run Code Online (Sandbox Code Playgroud)
看来你已经知道应该如何简化它了。
另外,您最终希望将其写为r^2. 这通常不适用于所有二阶表达式,因此不必费心寻找通用解决方案。