Друкарня від WE.UA

Символьне обчислення інтегралів у Python за допомогою sympy

Зміст

У цій статті ми будемо займатися символьним обчисленням інтегралів у Python за допомогою спеціальної бібліотеки sympy. Ми будемо обчислювати усі наявні види інтегралів.

Встановлення

Для Windows:

pip install sympy

Для MacOS:

pip3 install sympy

Для Linux:

pip install sympy

Класичні інтеграли

Спочатку пропоную розглянути символьне обчислення доволі звичайних інтегралів — визначених та невизначених.

Невизначені інтеграли

Отже, невизначені інтеграли — це такий ти інтегралів, який не має меж. Пропоную спробувати записати ось такий інтеграл у рамках цього розділу статті:

Наш перший інтеграл

Спершу імпортуємо бібліотеку sympy, яка надає можливість проводити обчислення символьно:

import sympy as sp

Далі створимо функцію, яка буде приймати потрібні параметри та інтегрувати:

def indefinite_integral(function, x):
    integration = sp.integrate(function, x)
    print(f"Result: {integration}")

Наступним кроком стврюємо так звану символьну змінну, яку будемо інтегрувати:

x = sp.Symbol("x")

Тепер сворюємо змінну для нашої підінтегральної функції:

function = (x + x) ** 2

Ось повний код:

import sympy as sp


def indefinite_integral(function, x):
    integration = sp.integrate(function, x)
    print(f"Result: {integration}")


x = sp.Symbol("x")
function = (x + x) ** 2

indefinite_integral(function, x)

Тепер запускаємо код і бачимо настпуний результат:

Result: 4*x**3/3

Визначені інтеграли

Визначені інтеграли на відміну від невизначеих мають межі інтегрування. У рамках цього розділу запишемо цей інтеграл:

Визначений інтеграл

Для запису цього інтеграла створюємо функцію для обчислення саме визначених інтегралів. Ось який вона буде мати вигляд:

def definite_integral(function, x, lower_limit, upper_limit):
    integration = sp.integrate(function, (x, lower_limit, upper_limit))
    print(f"Result: {integration}")

Тут після змінної інтегрування ми ще додали lower_limit та upper_limit — нижня та верхя межа нашого інтеграла.

Визначаємо наші межі у відповідних змінних:

lower_limit = 3 / sp.pi
upper_limit = 6 / sp.pi

Змінюємо підінтегральну функцію:

function = sp.tan(x) * sp.cos(x)

Все інше залишаємо як і було. Повний код для обчислення визначеного інтеграла виходить таким:

def definite_integral(function, x, lower_limit, upper_limit):
    integration = sp.integrate(function, (x, lower_limit, upper_limit))
    print(f"Result: {integration}")


x = sp.Symbol("x")
function = sp.tan(x) * sp.cos(x)

lower_limit = 3 / sp.pi
upper_limit = 6 / sp.pi

definite_integral(function, x, lower_limit, upper_limit)

Отримуємо такий результат обчислення:

Result: -cos(6/pi) + cos(3/pi)

Невласні інтеграли

Невласні інтеграли — це такий вид інтегралів, у яких одна або усі межі є нескінченність. Вони поділяються на два невласні інтеграли 1-го роду та невласні інтеграли 2-го роду.

Невласні інтеграли 1-го роду

Невласні інтеграли 1-роду вирізняються тим, що вони мають в одній або усіх своїм межах саме знак нескінченності.

За приклад візьмемо отакий інтеграл:

Невласний інтеграл 1-роду

По суті єдине, що ми змінюємо з поперднього коду це підінтегральну функцію та межі. Робимо зміни:

function = 2 / x

lower_limit = 4
upper_limit = sp.oo

Примітка. У sympy нескінченність позначається як оо. Тому sp.oo — це позначення нескінченності.

Повний код виходить таким:

def improper_integral_first_kind(function, x, lower_limit, upper_limit):
    integration = sp.integrate(function, (x, lower_limit, upper_limit))
    print(f"Result: {integration}")


x = sp.Symbol("x")
function = 2 / x

lower_limit = 4
upper_limit = sp.oo

improper_integral_first_kind(function, x, lower_limit, upper_limit)

Отримуємо результат:

Result: oo

Невласні інтеграли 2-го роду

Невласні інтеграли 2-роду — це такі такий тип інтегралів, у яких немає нескінченностей у межах, але нескінченність утворюється у підінтегральному виразі.

Спробуємо обчислити такий інтеграл:

Невласний інтеграл 2-го роду

Тут ми бачимо вираз 1 — x у знаменнику — це якраз і є той момент, коли ми отримуємо нескінченність у підінтегральній функції. Так як коли змінна x = 1, то вираз 1 — 1 = 0. Виходить, що ми ділимо на нуль, а при діленні на нуль ми отримуємо нескінченність.

Знову змінюємо межі та підінтегральну функцію. Одразу можна показати повний код:

def improper_integral_second_kind(function, x, lower_limit, upper_limit):
    integration = sp.integrate(function, (x, lower_limit, upper_limit))
    print(f"Result: {integration}")


x = sp.Symbol("x")
function = 4 / (1 - x)

lower_limit = 1
upper_limit = 2

improper_integral_second_kind(function, x, lower_limit, upper_limit)

Результат:

Result: -oo

Кратні інтеграли

Кратними називаються подвійні та потрійні інтеграли. У цих видах інтегралах ми інтегруємо одразу по двом чи трьом змінним. Відповідно знаків інтеграла буде два або три.

Подвійні інтеграли

Подвійні інтеграли дозволяють інтегрувати одразу по двома змінним. Це ми можемо побачити у цьому прикладі:

Подвійний інтеграл

Отже, додаємо нову символьну змінну — y:

y = sp.Symbol("x")

Записуємо нову підінтегральну функцію:

function = (sp.sqrt(x) - sp.sqrt(y)) * 2

Визначаємо межі для x та y:

lower_limit_x = 5
upper_limit_x = 4
lower_limit_y = -2
upper_limit_y = -3

Тепер наша функція буде приймати більше параметрів, ось повний код програми:

def double_integral(function, x, lower_limit_x, upper_limit_x, y, lower_limit_y, upper_limit_y):
    integration = sp.integrate(function, (x, lower_limit_x, upper_limit_x), (y, lower_limit_y, upper_limit_y))
    print(f"Result: {integration}")


x = sp.Symbol("x")
y = sp.Symbol("y")

function = (sp.sqrt(x) - sp.sqrt(y)) * 2

lower_limit_x = 5
upper_limit_x = 4
lower_limit_y = -2
upper_limit_y = -3

double_integral(function, x, lower_limit_x, upper_limit_x, y, lower_limit_y, upper_limit_y)

Результат:

Result: -32/3 + 20*sqrt(5)/3 - 4*sqrt(3)*I + 8*sqrt(2)*I/3

Потрійні інтеграли

Останніми у статті будуть потрійні інтеграли. Сенс в принципі той самий, що й з подвійними, тільки у потрійних ми маємо справу з трьома змінними та трьома занаками інтеграла. Тобто ми інтегруємо по трьом змінним.

Пропоную обчислити такий потрійний інтеграл:

Потрійний інтеграл

Знову-таки змінюємо межі, підінтегральну функцію і додаємо нову символьну змінну z:

def triple_integral(function, x, lower_limit_x, upper_limit_x, y, lower_limit_y, upper_limit_y, z,
                    lower_limit_z, upper_limit_z):
    integration = sp.integrate(function, (x, lower_limit_x, upper_limit_x), (y, lower_limit_y, upper_limit_y),
                               (z, lower_limit_z, upper_limit_z))
    print(f"Result: {integration}")


x = sp.Symbol("x")
y = sp.Symbol("y")
z = sp.Symbol("z")

function = sp.exp(x - y - z) * sp.cos(z)

lower_limit_x = -1
upper_limit_x = 2
lower_limit_y = -7
upper_limit_y = -7
lower_limit_z = 4 / sp.pi
upper_limit_z = 2 / sp.pi

triple_integral(function, x, lower_limit_x, upper_limit_x, y, lower_limit_y, upper_limit_y, z,
                lower_limit_z, upper_limit_z)

Результат:

Result: 0

Висновок

У даній статті ми навчиися інтегрувати інтеграли різних видів за допомогою бібіліотеки для символьних розрахунків sympy. Також дещо розібрали особливість кожного інтеграла і навчилися реалізовувати їх у коді. Всім дякую за увагу!

Статті про вітчизняний бізнес та цікавих людей:

  • Як побудована програма Meest China Academy

    Курс про товарний бізнес охоплює різні етапи роботи: від пошуку ідеї до перевірки товару, логістики та масштабування. Програма Meest China Academy містить 17 модулів, які послідовно розкривають ці теми без зведення всього навчання до однієї універсальної поради.

    Теми цього довгочиту:

    Meest
  • Які технології використані в Айфон 17

    Айфон 17 поєднує OLED-дисплей із частотою до 120 Гц, чип A19, дві камери Fusion 48 Мп і швидке заряджання через USB-C. У COMFY можна купити Айфон 17 з накопичувачем на 256 або 512 ГБ, вибравши конфігурацію відповідно до обсягу фото, відео та застосунків

    Теми цього довгочиту:

    Iphone 17
  • Як вибрати вживаний iPhone: коротке керівництво для розумної покупки

    Вторинний ринок смартфонів Apple активно зростає, і питання, як вибрати вживаний iPhone, стає актуальним для дедалі більшої кількості користувачів. Правильний підхід дозволяє отримати бу iPhone з актуальною iOS і доброю камерою за помітно нижчу ціну, ніж у нових пристроїв.

    Теми цього довгочиту:

    Iphone
  • Як подолати жіночу безплідність за допомогою донорських яйцеклітин

    Діагноз "безпліддя" рідко звучить як вирок одразу. Для багатьох жінок саме в цей момент вперше звучить словосполучення "донорські яйцеклітини" — і це часто не кінець шляху до материнства, а якраз новий, реальний шанс.

    Теми цього довгочиту:

    Донорство
  • Як заспокоїти зубний біль і чому самолікування може призвести до операції?

    Раптовий біль у зубі може призвести до порушення сну та ускладненого вживання їжі. Люди часто приймають таблетки, роблять полоскання або лікуються народними засобами. В таких випадках не варто відкладати візит до стоматолога, адже можуть з’явитись ускладнення.

    Теми цього довгочиту:

    Стоматологія
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Magnifique numérique
Magnifique numérique@magnifiquedigitalworld

Світ, де код робить чудеса

93Довгочити
1.9KПерегляди
27Підписники
Підтримати
На Друкарні з 14 липня 2025

Більше від автора

  • Метод zfill() у Python

    У цій статті ми розберемо метод zfill() у Python на основі практичних прикладів його використання.

    Теми цього довгочиту:

    It
  • Команда WHERE у SQL

    Сьогодні ми розглянемо команду WHERE та принцип роботи цієї команди.

    Теми цього довгочиту:

    Програмування
  • Робота з омогліфами у Python

    У цій статті ми розберемо бібліотеку confusables та її функціонал. Також ми розглянемо, що таке омогліфи та як їх використовують.

    Теми цього довгочиту:

    Програмування

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: