Python:将hyp2f1与sympy

时间:2019-05-20 17:18:52

标签: python function sympy mpmath

在Python中,我要使用超几何函数hyp2f1,同时至少保留一个符号参数。但是,有一个TypeError

  

无法从d创建mpf

其中d是超几何函数的(最后一个)参数。

有人问了类似的问题

sympy and mpmath give "TypeError: cannot create mpf" when using the erf() function within solveset()

在遇到错误函数erf的相同问题之后。 提出的解决方案是使用mpmath库而不是sympy库,但是在保持参数符号化的情况下不能使用mpmath。

我还尝试按照sympy文档中的建议一起导入mpmath和sympy:

from sympy.mpmath import *

https://docs.sympy.org/0.7.6/modules/mpmath/functions/hypergeometric.html#common-hypergeometric-series

但这不被接受,因为输出为:

  

ModuleNotFoundError:没有名为`sympy.mpmath'的模块

我的代码是

from sympy import *

d = Symbol('d')

hyp2f1(1,1,1,d)

我希望得到a simplification to 1/(1-d),或者至少希望Python可以'存储'hyp2f1(1,1,1,d)进行符号操作。

我遇到错误

  

TypeError:无法从d创建mpf

最重要的是,在导入了sympy之后,Python无法将hyp2f1与符号参数一起使用。

1 个答案:

答案 0 :(得分:1)

使用SymPy hyper函数:

In [4]: from sympy import hyper, simplify, Symbol                                                                                 

In [5]: d = Symbol('d')                                                                                                           

In [6]: f = hyper([1, 1], [1], d)                                                                                                 

In [7]: f                                                                                                                         
Out[7]: 
 ┌─  ⎛1, 1 │  ⎞
 ├─  ⎜     │ d⎟
2╵ 1 ⎝ 1   │  ⎠

In [8]: simplify(f)                                                                                                               
Out[8]: 
  1  
─────
1 - d