scipy.integrate — Численное интегрирование¶
Подмодуль scipy.integrate предоставляет процедуры численного интегрирования для вещественнозначных функций одной переменной. Алгоритмы не портированы из scipy.integrate CPython, а основаны на эталонной реализации с https://www.genivia.com/qthsh.html.
Численное интегрирование лучше всего работает при включённой арифметике float64. С арифметикой float32 процедуры по-прежнему работают, но с пониженной точностью. Требуемый допуск погрешности можно задать через именованный аргумент eps; по умолчанию используется значение etolerance, заданное на этапе компиляции (1e-14 для fp64, 1e-8 для fp32). Комплексные числа не поддерживаются.
Функции¶
- scipy.integrate.quad(f: Callable[[float], float], a: float, b: float, *, order: int = 5, eps: float = etolerance) tuple[float, float]¶
Интегрирует f от a до b с помощью адаптивной квадратуры Гаусса-Кронрода (G10, K21). Это рекомендуемый интегратор общего назначения.
- Параметры:
f – вызываемый объект, принимающий одно значение
floatи возвращающийfloat.a – нижний предел интегрирования.
b – верхний предел интегрирования.
order – порядок интегрирования (по умолчанию
5).eps – допуск погрешности (по умолчанию
etolerance).
- Результат:
2-кортеж
(result, error)из чисел с плавающей точкой, дающий значение интеграла и оценку погрешности.
- scipy.integrate.romberg(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float¶
Интегрирует f от a до b методом Ромберга — формулой Ньютона-Котеса, которая вычисляет подынтегральную функцию в равноотстоящих точках. Лучше всего подходит для подынтегральных функций с непрерывными производными. Обратите внимание, что
scipy.integrate.rombergв CPython объявлен устаревшим начиная с SciPy 1.12.0; для нового кода предпочтительнееquad().- Параметры:
f – вызываемый объект, принимающий одно значение
floatи возвращающийfloat.a – нижний предел интегрирования.
b – верхний предел интегрирования.
steps – число шагов (по умолчанию
100).eps – допуск погрешности (по умолчанию
etolerance).
- Результат:
значение интеграла как
float.
- scipy.integrate.simpson(f: Callable[[float], float], a: float, b: float, *, steps: int = 100, eps: float = etolerance) float¶
Интегрирует f от a до b с помощью адаптивного правила Симпсона. В отличие от
scipy.integrate.simpsonиз CPython, эта функция принимает вызываемый объект и выбирает шаг выборки внутренне, а не принимает массив заранее вычисленных значений функции.- Параметры:
f – вызываемый объект, принимающий одно значение
floatи возвращающийfloat.a – нижний предел интегрирования.
b – верхний предел интегрирования.
steps – число шагов (по умолчанию
100).eps – допуск погрешности (по умолчанию
etolerance).
- Результат:
значение интеграла как
float.
- scipy.integrate.tanhsinh(f: Callable[[float], float], a: float, b: float, *, levels: int = 6, eps: float = etolerance) tuple[float, float]¶
Интегрирует f от a до b с помощью семейства квадратур Tanh-Sinh, Sinh-Sinh и Exp-Sinh (двойной экспоненциальной). Это процедура для случаев, когда подынтегральная функция имеет особенности или бесконечные производные на концах интервала, и это единственная процедура в этом подмодуле, которая принимает бесконечные пределы интегрирования (например,
-np.inf,np.inf).- Параметры:
f – вызываемый объект, принимающий одно значение
floatи возвращающийfloat.a – нижний предел интегрирования; может быть
-np.inf.b – верхний предел интегрирования; может быть
np.inf.levels – число уровней уточнения (по умолчанию
6).eps – допуск погрешности (по умолчанию
etolerance).
- Результат:
2-кортеж
(result, error)из чисел с плавающей точкой, дающий значение интеграла и оценку погрешности.