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) из чисел с плавающей точкой, дающий значение интеграла и оценку погрешности.