В этом руководстве по Python мы узнаем о «Scipy Integrate», где мы узнаем, как использовать метод интеграции для решения проблем интеграции.
Подмодуль Scipy scipy.integrate содержит множество методов для решения задач, связанных с интеграцией или дифференциальными уравнениями в Python. Он имеет предопределенную функцию и метод для решения математических задач интегрирования или дифференциальных уравнений.
Чтобы узнать доступные методы интеграции в этом подмодуле, используйте приведенный ниже код.
from scipy import integrate print(help(integrate))
В приведенном выше выводе, когда мы прокручиваем его, показаны все методы, методы и функции интегрирования или дифференциального программирования в этом модуле.
Правило TrapeZoid
Правило TrapeZoid — это метод интегрирования, который оценивает площадь под кривой путем деления общей площади на меньшую трапецию. Он интегрирует заданную функцию y(x) на основе указанной оси.
Синтаксис:
scipy.integrate.trapezoid(y, x=None, dx=1.0, axis=- 1)
Где параметры:
- y (array_data): представляет массив, который мы хотим интегрировать в качестве входных данных.
- x (array_data): используется для указания точек выборки, которые относятся к значениям y.
- dx (скаляр): используется для указания пространства между точками выборки, когда x не используется.
- axis (int): определяет, по какой оси мы хотим выполнить интегрирование.
Метод trapezoid() возвращает значение ловушки типа float, которое является аппроксимированным целочисленным значением.
Давайте рассмотрим пример, выполнив следующие шаги в Python.
Импортируйте необходимые библиотеки.
from scipy.integrate import trapezoid
Создайте значения массива, представляющие данные y, и передайте их методу.
trapezoid([5,8,10])
Выходные данные показывают значение интегрирования 15,5 с применением правила трапеций.
Метод simpson()
В Scipy есть метод simpson(), который вычисляет приблизительное значение интеграла. Этот метод существует в подмодуле scipy.integrate.
Синтаксис его использования в Python приведен ниже.
scipy.integrate.simpson(y, x=None, dx=1.0, axis=- 1, even='avg')
Где параметры:
- y (array_data): представляет массив, который мы хотим интегрировать в качестве входных данных.
- x (array_data): используется для указания точек выборки, которые относятся к значениям y.
- dx (скаляр): используется для указания пространства между точками выборки, когда x не используется.
- axis (int): определяет, по какой оси мы хотим выполнить интегрирование.
- even (строка): используется для указания правила трапеций в среднем двух результатов, первого и последнего интервала.
Давайте рассмотрим пример, используя следующие шаги.
Импортируйте необходимый модуль, как показано ниже.
import numpy as np from scipy.integrate import simpson
Создайте массив данных и точек выборки, используя приведенный ниже код.
array_data = np.arange(5,15) sample_pnt = np.arange(5,15)
Используйте приведенный ниже код Python для расчета интегрирования с помощью метода simpson().
simpson(array_data,sample_pnt)
Метод quad()
В Scipy есть метод quad() в подмодуле scipy.integrate, который вычисляет определенный интеграл заданной функции от бесконечного интервала от a до b в Python.
Синтаксис:
scipy.integrate.quad(func, a, b, args=(), full_output=0)
Где параметры:
- func(function): используется для указания функции, которая используется для вычисления интегрирования. Функция может иметь одну из следующих форм.
- двойная функция (двойной у);
- двойная функция (двойной y, void *user_data);
- двойная функция (int m, double *yy);
- двойная функция (int m, double *yy, void *user_data).
- a (float): используется для указания нижнего предела интегрирования.
- b (float): используется для указания верхнего предела интегрирования.
- args (tuple): если мы хотим передать функции дополнительные аргументы, используйте этот параметр.
- full_output (int): ненулевое значение используется для получения словаря интеграционной информации.
Метод возвращает три важных результата: интегральное значение, абстрактную оценку абсолютной ошибки и информирует словарь, содержащий дополнительную информацию.
Импортируйте необходимую библиотеку, используя приведенный ниже код Python.
from scipy.integrate import quad
Создайте функцию, используя лямбда-функцию, и определите интервал, как показано в приведенном ниже коде.
n3 = lambda n: n**3 a = 0 b = 5
Теперь рассчитайте интеграцию функции, используя приведенный ниже код.
quad(n3, a, b)
Выходные данные показывают, что определенное целое значение функции n3(n в степени 3) равно 156,25000.
Метод odeint()
Подмодуль Scipy scipy.integrate содержит метод odeint(), который интегрирует обыкновенные дифференциальные уравнения.
Синтаксис:
scipy.integrate.odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, printmessg=0)
Где параметры:
- func: вычисляет производную функции y в момент времени t.
- y0 (массив): используется для предоставления начального условия для y.
- t (массив): это серия моментов времени
- args: используется для предоставления дополнительных аргументов функции y.
- Dfun: используется для градиента функции.
- col_deriv (boolean): для истинных значений Dfun определяет производную до столбцов, в противном случае — до строк в случае ложного.
- printmessg (boolean): используется для печати сообщения о конвергенции.
Функция содержит множество параметров, но выше мы объяснили только общие параметры.
Метод odient() возвращает два значения y, которые представляют собой массив, содержащий значение y для каждого времени t, и инфодикт для дополнительной выходной информации.
Импортируйте необходимые библиотеки.
from scipy.integrate import odeint import matplotlib.pyplot as plt import numpy as np
Определите уравнение, используя приведенный ниже код.
def diff_model(y,t): k = 0.5 dydt = -k * y return dydt
Создайте начальное условие.
y0 = 3
Создайте серию моментов времени.
t = np.linspace(0,15)
Решите созданное уравнение, указав параметры.
y = odeint(diff_model,y0,t)
Теперь постройте решение.
plt.plot(t,y) plt.xlabel('time') plt.ylabel('y(t)') plt.show()
Метод solve_ivp()
В Scipy есть метод solve_ivp(), который интегрирует систему обыкновенных дифференциальных уравнений на основе предоставленного начального значения.
Синтаксис:
scipy.integrate.solve_ivp(fun, t_span, y0, method='BDF', t_eval=None, dense_output=False, events=None, vectorized=True, args=None)
Где параметры:
- fun (callable): находится в правой части системы. Сигнатура вызывающей функции — fun(x,z), где x представляет скаляр, а z — массив ndarray, который представляет фигуру двумя способами.
- t_span (два кортежа с плавающей запятой): представляет интервал интегрирования от t0 до t1.
- y0 (array_data, например shape(n)): используется для указания начального состояния.
- метод (строка или odsolver): используется для указания того, какой метод интеграции использовать, например RK45, Radau, RK23, DOP853, BDF и LSODA.
- t_eval (array_data): используется для указания времени сохранения вычисленного решения.
- Density_output (boolean): используется для указания, хотим ли мы вычислить непрерывное решение или нет.
- event (callable): используется для отслеживания событий.
- Vectorized (boolean): используется для указания, хотим ли мы реализовать функцию векторизованным способом или нет.
- args (tuple): для передачи дополнительных аргументов.
Функция возвращает объект группы, содержащий множество значений, но у него есть два важных значения: y и t.
Импортируйте необходимые библиотеки.
from scipy.integrate import solve_ivp
Создайте функцию экспоненциального затухания.
def exp_decay(t, y): return -1.0 * y
Теперь примените методsolve_ivp() к функции экспоненциального затухания.
solution = solve_ivp(exp_decay, [5, 15], [4, 6, 10])
Проверьте значение t, которое хранится в решении.
solution.t
Проверьте значение y, которое хранится в решении.
solution.y
Интеграция CumTrapz
Правило кумтрапеции — это метод интегрирования, который кумулятивно интегрирует заданную функцию y(x) с помощью правила трапеции.
Синтаксис приведен ниже.
scipy.integrate.cumtrapz(y, x=None, dx=1.0, axis=- 1, intial=None)
Где параметры:
- y (array_data): представляет массив, который мы хотим интегрировать в качестве входных данных.
- x (array_data): используется для указания точек выборки, которые относятся к значениям y.
- dx (скаляр): используется для указания пространства между точками выборки, когда x не используется.
- axis (int): определяет, по какой оси мы хотим выполнить интегрирование.
- intial (скаляр): используется для предоставления начального значения функции.
Метод trapezoid() возвращает значение res типа ndarray.
Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
from scipy.integrate import cumtrapz import numpy as np
Создайте переменную sample_pts, которая является точками выборки, и y3, которая предназначена для интеграции, используя приведенный ниже код.
sample_pts = np.arange(5, 30) y_func = np.power(sample_pts, 3)
Используйте метод cumtrapz() для функции, используя приведенный ниже код.
cumtrapz(y_func,sample_pts)