sympy 简化无法识别二项式的平方

Posted

技术标签:

【中文标题】sympy 简化无法识别二项式的平方【英文标题】:sympy simplify cannot recognize square of a binomial 【发布时间】:2021-05-05 17:58:10 【问题描述】:

我有几个表达式,如果简化能够像屏幕截图中那样识别二项式的平方,那么简化将大大改善。

有没有办法让 sympy/simplify 做到这一点?

import sympy as sp
a, b = sp.symbols('a, b', positive=True)
sp.simplify(sp.sqrt(a**2))
test = a + b - sp.sqrt(a**2+b**2+2*a*b)
sp.simplify(test)

【问题讨论】:

贴出代码而不是图片就好了 你可以使用factor(test, deep=True) 感谢@Oscar Benjamin,这完成了这项工作! 【参考方案1】:

--- 这是 0,但 sympy/simplify 无法识别二项式的平方

不,不是,问题不在于同情,而在于你对数学的理解。

a + b - sqrt(a\*\*2 + b\*\*2 + 2\*a\*b)不等于0,它等于(a + b) +- (a + b)或者换句话说;它等于02 * (a + b),这是因为sqrt((a + b)**2) 等于+- (a + b)

+-在这里表示“加号或减号”。

【讨论】:

查看sqrt 的文档:它返回principal value,在正输入的情况下它将是正根。 我认为你错过了 a 和 b 被假定为正的事实

以上是关于sympy 简化无法识别二项式的平方的主要内容,如果未能解决你的问题,请参考以下文章

VSCode 无法识别开玩笑的自定义匹配器

sympy 中的复数:解析欧拉恒等式

vSAN集群 无法识别磁盘处理

ActiveMQ 无法识别 Stomp:传输方案无法识别:[stomp+ssl]

手机USB插入电脑后电脑无法识别

c++程序中,无法识别中文路径怎么办