• Автор записи:
  • Рубрика записи:Scipy
  • Время чтения:5 минут чтения
  • Комментарии к записи:0 комментариев

В этом руководстве по Python мы узнаем о «Scipy Integrate», где мы узнаем, как использовать метод интеграции для решения проблем интеграции.

Подмодуль Scipy scipy.integrate содержит множество методов для решения задач, связанных с интеграцией или дифференциальными уравнениями в Python. Он имеет предопределенную функцию и метод для решения математических задач интегрирования или дифференциальных уравнений.

Чтобы узнать доступные методы интеграции в этом подмодуле, используйте приведенный ниже код.

from scipy import integrate
print(help(integrate))

Подмодуль Scipy scipy.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)

метод simpson()

Метод quad()

В Scipy есть метод quad() в подмодуле scipy.integrate, который вычисляет определенный интеграл заданной функции от бесконечного интервала от a до b в Python.

Синтаксис:

scipy.integrate.quad(func, a, b, args=(), full_output=0)

Где параметры:

  • func(function): используется для указания функции, которая используется для вычисления интегрирования. Функция может иметь одну из следующих форм.
  1. двойная функция (двойной у);
  2. двойная функция (двойной y, void *user_data);
  3. двойная функция (int m, double *yy);
  4. двойная функция (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)

Метод quad()

Выходные данные показывают, что определенное целое значение функции 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()

етод odeint()

Метод 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

Метод solve_ivp()

Интеграция 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)

Интеграция CumTrapz

Добавить комментарий