Python: символическое использование hyp2f1 с sympy - PullRequest
0 голосов
/ 20 мая 2019

В Python я хочу использовать гипергеометрическую функцию hyp2f1, сохраняя хотя бы один символический аргумент.Однако существует ошибка TypeError

, которая не может создать mpf из d

, где d - это (последний) аргумент гипергеометрической функции.

Кто-то спросиланалогичный вопрос

sympy и mpmath дают "TypeError: не может создать mpf" при использовании функции erf () в solveset ()

после возникновения той же проблемы сфункция ошибки erf.Предложенное решение состояло в том, чтобы использовать библиотеку mpmath вместо библиотеки sympy, но mpmath нельзя использовать, сохраняя аргументы символическими.

Я также попытался импортировать mpmath и sympy вместе, как предложено в документации 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)

Я надеялся получить упрощение до 1 / (1-d) или, по крайней мере, надеялся, что Python может «хранить» hyp2f1 (1,1,1, d) для символических манипуляций.

Я получаю ошибку

TypeError: не могу создать mpf из d

Суть в том,с импортированным sympy Python не может использовать hyp2f1 с символическими аргументами.

1 Ответ

1 голос
/ 27 мая 2019

Используйте функцию 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
...