scipy.special.sici#
-
scipy.special.sici(x, выход=None) =
'sici'> # Интегралы синуса и косинуса.
Интегральный синус
\[\int_0^x \frac{\sin{t}}{t}dt\]и косинусный интеграл равен
\[\gamma + \log(x) + \int_0^x \frac{\cos{t} - 1}{t}dt\]где \(\gamma\) является постоянной Эйлера и \(\log\) является главной ветвью логарифма [1].
- Параметры:
- xarray_like
Вещественные или комплексные точки, в которых вычисляются синус и косинус интегралы.
- выходкортеж ndarray, опционально
Опциональные выходные массивы для результатов функции
- Возвращает:
- siскаляр или ndarray
Интегральный синус в
x- ciскаляр или ndarray
Косинусный интеграл в
x
Смотрите также
Примечания
Для вещественных аргументов с
x < 0,ciявляется вещественной частью косинусного интеграла. Для таких точекci(x)иci(x + 0j)отличаются на множитель1j*pi.Для вещественных аргументов функция вычисляется вызовом Cephes’ [2] sici процедура. Для комплексных аргументов алгоритм основан на [3] si и ci функций.
Ссылки
[1] (1,2)Milton Abramowitz and Irene A. Stegun, eds. Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables. New York: Dover, 1972. (См. Section 5.2.)
[2]Библиотека математических функций Cephes, http://www.netlib.org/cephes/
[3]Fredrik Johansson и другие. «mpmath: библиотека Python для арифметики с плавающей запятой произвольной точности» (Версия 0.19) http://mpmath.org/
Примеры
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from scipy.special import sici, exp1
siciпринимает вещественный или комплексный ввод:>>> sici(2.5) (1.7785201734438267, 0.2858711963653835) >>> sici(2.5 + 3j) ((4.505735874563953+0.06863305018999577j), (0.0793644206906966-2.935510262937543j))
Для z в правой полуплоскости интегралы синуса и косинуса связаны с экспоненциальным интегралом E1 (реализованным в SciPy как
scipy.special.exp1) с помощьюSi(z) = (E1(i*z) - E1(-i*z))/2i + pi/2
Ci(z) = -(E1(i*z) + E1(-i*z))/2
См. [1] (уравнения 5.2.21 и 5.2.23).
Мы можем проверить эти соотношения:
>>> z = 2 - 3j >>> sici(z) ((4.54751388956229-1.3991965806460565j), (1.408292501520851+2.9836177420296055j))
>>> (exp1(1j*z) - exp1(-1j*z))/2j + np.pi/2 # Same as sine integral (4.54751388956229-1.3991965806460565j)
>>> -(exp1(1j*z) + exp1(-1j*z))/2 # Same as cosine integral (1.408292501520851+2.9836177420296055j)
Построить графики функций, вычисленных на вещественной оси; пунктирные горизонтальные линии находятся на pi/2 и -pi/2:
>>> x = np.linspace(-16, 16, 150) >>> si, ci = sici(x)
>>> fig, ax = plt.subplots() >>> ax.plot(x, si, label='Si(x)') >>> ax.plot(x, ci, '--', label='Ci(x)') >>> ax.legend(shadow=True, framealpha=1, loc='upper left') >>> ax.set_xlabel('x') >>> ax.set_title('Sine and Cosine Integrals') >>> ax.axhline(np.pi/2, linestyle=':', alpha=0.5, color='k') >>> ax.axhline(-np.pi/2, linestyle=':', alpha=0.5, color='k') >>> ax.grid(True) >>> plt.show()