Sympy自定义功能

时间:2014-07-20 06:34:56

标签: python sympy

我注意到,没有像sech(x)和csch(x)这样的函数。

有没有办法快速将它们定义为1 / cosh(x)和1 / sinh(x)?

另外,如何将arccos视为acos?

我正在使用解析器,所以'cos(pi / 2)'被正确解析。但我希望以类似的方式解析'arccos(pi / 2)'。

1 个答案:

答案 0 :(得分:3)

您可以定义完成所需行为的功能。

import sympy

def sech(x):
    return sympy.cosh(x)**(-1)
# sympy.sech = sech

def csch(x):
    return sympy.sinh(x)**(-1)
# sympy.csch = csch

arccos = sympy.acos

最初,我展示了将它们附加到您导入sympy时使​​用的符号的行(现在已注释掉)。这是一个名为monkey patching的坏习惯,会干扰sympy的任何更新,这些更新可能会使用这些名称或其他可能在代码中的其他位置修补sympy的人。它还会让人们阅读您的代码时认为这些属性是原始sympy包的一部分。

y = sympy.symbols('y')
print sech(y)
print csch(y)
print arccos(y)