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)
或者换句话说;它等于0
或2 * (a + b)
,这是因为sqrt((a + b)**2)
等于+- (a + b)
。
+-
在这里表示“加号或减号”。
【讨论】:
查看sqrt
的文档:它返回principal value,在正输入的情况下它将是正根。
我认为你错过了 a 和 b 被假定为正的事实以上是关于sympy 简化无法识别二项式的平方的主要内容,如果未能解决你的问题,请参考以下文章