首页 > 解决方案 > Sympy:包含平方根的多项式的因式分解

问题描述

我试图简化(或在这种情况下分解)包含平方根的多项式。考虑以下简单示例:

import sympy as sp

x, y = sp.symbols('x,y', real=True, positive=True)

sp.factor( sp.expand( (x**(1/2) + y**(1/2))**2 )  )

我预计这factor()将基本上取消expand(). 然而,情况并非如此,因为factor()根本无法将扩展表达式分解回其原始形式。

有没有办法分解或简化这些表达式?

标签: pythonsympy

解决方案


如果你sqrt(x)asqrt(y)替换b它,然后恢复原来的表达式,你会得到这个结果。SymPy 没有这样做(我想),因为有很多方法x可以重写符号。

>>> from sympy import Dummy, sqrt, expand, factor
>>> from sympy.abc import x, y
>>> z = factor( expand( (sqrt(x) + sqrt(y))**2 )  )
>>> a,b=Dummy(),Dummy()
>>> factor(z.subs(sqrt(x),a).subs(sqrt(y),b)).xreplace({a:sqrt(x),b:sqrt(y)})
(sqrt(x) + sqrt(y))**2

推荐阅读