我想做的基本上是让sympy告诉我它的一些内置函数背后的确切数学公式,因为我在命名约定方面一直很吃力,我想检查一下我是否使用了应该使用的函数。
例如,我的情况是内置贝塞尔函数jn
:根据维基百科,j0(x(=sin(x(/x,我倾向于同意手工求解简单的情况微分方程
但是,当我询问sympy是否为jn(0, x)-sin(x)/x==0
时,查询返回False
运行simplify
只会占用时间,我不知道还能做什么,因为factor
和expand
最多将x移动为一个公约数,而evalf
则以另一个内置函数的形式返回函数。
由于高阶函数往往比这复杂得多,所以找出哪些内置函数与我想要的相对应会非常有用
如果有任何可能有所帮助的资源链接,我将不胜感激。
使用python3.10.6,sympy 1.9,在Kubuntu 22.04 上运行
您可以使用内置的help()
函数来读取与给定SymPy对象关联的文档,也可以浏览文档。
通过阅读help(jn)
的文档,我们可以找到描述和一些示例,其中一个示例指出了您想要实现的目标:
print(expand_func(jn(0, x)))
# out: sin(x)/x
编辑:回顾您的问题,您使用了:jn(0, x)-sin(x)/x==0
。SymPy有两种相等性测试:
- 使用
==
运算符执行的结构等式:您要求SymPy比较表达式树。显然,jn(0, x)-sin(x)/x
在结构上不同于0
,因为在这个阶段jn(0, x)
还不是";展开"> - 数学等式:一般来说,如果
expr1 - expr2
等于0,那么两个表达式在数学上是等价的。因此,在上面的例子中,我们可以写:expand_func(jn(0, x)) - sin(x)/x
,它将导致0。或者,我们可以使用equals()
方法:expand_func(jn(0, x)).equals(sin(x) / x)
,它将返回True。请阅读有关equals
的文档,以更好地了解其怪癖