【问题标题】:Sympy: Factorization of polynomials containing square rootsSympy:包含平方根的多项式的因式分解
【发布时间】:2020-05-10 19:16:13
【问题描述】:

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

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() 根本无法将扩展表达式分解回其原始形式。

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

【问题讨论】:

    标签: python sympy


    【解决方案1】:

    如果您将sqrt(x) 替换为a,将sqrt(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
    

    【讨论】:

    • 谢谢,这确实是解决该问题的一种可能方法。虽然,它似乎仅限于使用 sqrt(x) 定义平方根的情况,并且似乎无法扩展到更一般的情况,即使用 x**(a/b)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多