Sympy自定义函数

3 投票
1 回答
3076 浏览
提问于 2025-04-18 14:00

我注意到,像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)

撰写回答