在python中计算表达式的符号平方根(带参数)?

时间:2015-03-21 09:31:06

标签: python math symbolic-math

是否可以在python中计算表达式的平方根? 例如,平方根:(a^4 - 8a^2 -16a + 16)

当然结果将是a,而不是数值。 我读到了math.sqrt()并尝试这样做,但是pycharm坚持认为我会为一个值赋值。

import math
a = 16
b = math.sqrt(a**4 - 8*(a**2) -16*a +16 )
print b

这段代码有效,但我不想分配到一个,我想要一个表达式作为结果。

2 个答案:

答案 0 :(得分:3)

好吧,我假设您想要的是采用代数表达式,并通过对其中的部分进行分解来简化它。是吗?

您可以使用sympy来解决这个问题,但我注意到(据我所知)您的示例没有更简单的答案!这是一个可以工作的例子:

>>> from sympy import Symbol, factor
>>> a = Symbol("a")
>>> factor(a**4 - 8*a**3 + 20*a**2 - 16*a + 4)
(a**2 - 4*a + 2)**2

但是,我不认为你的例子有任何因素。它实际上是您需要解决的问题的实例,还是只是问题形状的一般示例?

答案 1 :(得分:0)

Python内部有很多电池,但其巨大的标准库不包含任何符号代数模块。 因此,如果要进行符号计算,则必须使用外部模块,例如SymPy(已建议)或数学系统,例如SageMath

你能做些什么"标准" Python是定义一个函数,它将a作为参数并返回表达式的相应值:

def f(a):
    import math
    return math.sqrt(a**4 - 8*(a**2) -16*a +16)

根据您的应用程序,这可能就足够了。