scipy.special.expn (n, x) для комплексных значений? - PullRequest
0 голосов
/ 18 февраля 2019

Я хочу оценить численно этот интеграл

http://mathworld.wolfram.com/En-Function.html

, который, похоже, реализован в Python с использованием Scipy.В частности, с

https://scipy.github.io/devdocs/generated/scipy.special.expn.html#scipy.special.expn

Я хочу оценить эту функцию для чисто комплексных значений (z = i * x, где x - действительное число), но, похоже, это не работает.Знаете ли вы, как можно решить?

from scipy import special
print special.expn(2, 1j)

Я получаю:

"" "ufunc 'expn' не поддерживается для типов ввода, и входы не могут быть безопасно приведены к любомуподдерживаемые типы в соответствии с правилом приведения «безопасно» «» «

Знаете ли вы, как можно решить?Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Используйте exp1 вместо expn (см. документы ):

Экспоненциальный интеграл E_1 комплексного аргумента z

Образец:

import scipy.special as special
special.exp1(1+1j)
>>(0.0002816244519814326-0.17932453503935886j)
0 голосов
/ 19 февраля 2019

Если вы не возражаете против дополнительной зависимости, вы можете использовать функцию expint в mpmath.Он обрабатывает сложные аргументы:

In [153]: import mpmath

In [154]: mpmath.mp.prec = 100

In [155]: mpmath.expint(2, 1j)
Out[155]: mpc(real='-0.084410950559573886889031770373614', imag='-0.50406706190692837198985611774113')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...