【问题标题】:Python: symbolic use of hyp2f1 with sympyPython:hyp2f1 与 sympy 的符号使用
【发布时间】:2019-10-07 02:15:04
【问题描述】:

在 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: cannot create mpf from d

底线是,导入 sympy 后,Python 不能将 hyp2f1 与符号参数一起使用。

【问题讨论】:

标签: python function sympy mpmath


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多