Sympy自定义函数
我注意到,像sech(x)和csch(x)这样的函数并不存在。
有没有什么简单的方法可以把它们定义为1/cosh(x)和1/sinh(x)呢?
另外,我想让sympy把arccos当作acos来处理,应该怎么做呢?
我在使用解析器,所以'cos(pi/2)'可以正确解析。但我希望'arccos(pi/2)'也能以类似的方式被解析。
1 个回答
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时使用的符号关联起来。这是一种不好的习惯,叫做猴子补丁,它会影响到你对sympy
的任何更新,因为这些更新可能会使用到那些名字,或者其他人可能在代码的其他地方对sympy
进行了猴子补丁。这样会让阅读你代码的人误以为那些属性是原本就属于sympy
包的一部分。
y = sympy.symbols('y')
print sech(y)
print csch(y)
print arccos(y)