Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

SciPy кітапханасын пайдаланып Python тілінде дифференциалдық теңдеулерді шешу

Автор:   •  Январь 11, 2026  •  Лабораторная работа  •  468 Слов (2 Страниц)  •  7 Просмотры

Страница 1 из 2

Зертханалық жұмыс №14

SciPy кітапханасын пайдаланып Python тілінде дифференциалдық теңдеулерді шешу

Дифференциалдық теңдеулер — туынды арқылы өрнектелетін функциялар арасындағы байланыстарды сипаттайтын теңдеулер. Python тілінде дифференциалдық теңдеулерді шешудің ең ыңғайлы жолдарының бірі — SciPy кітапханасының integrate модулі.

1.1. Қарапайым дифференциалдық теңдеу

Қарапайым дифференциалдық теңдеу бір айнымалыға тәуелді функцияның туындылары арқылы беріледі:

[pic 1]

Мұнда:

  • y— ізделетін функция,
  • x — тәуелсіз айнымалы,
  • f(x, y) — берілген функция.

1.2. Жоғары ретті дифференциалдық теңдеулер

Мысалы, 2-тәртіпті теңдеу:

[pic 2]

SciPy жоғары ретті теңдеулерді жүйе түріне келтіру арқылы шешеді:

[pic 3]


1.3. SciPy-де ҚДТ шешу әдістері

SciPy-де келесі негізгі әдістер бар:

  • RK45 — ең кең қолданылатын Рунге–Кутта әдісі (автоматты қадам таңдауы).
  • RK23 — қысқа интервал үшін жылдам.
  • Radau, BDF — қатаң (stiff) теңдеулерге.
  • LSODA — автоматты stiff/non-stiff анықтайды.
  • odeint — ескі, бірақ әлі де кең қолданылатын әдіс.

Біз ең заманауи әдіс — solve_ivp функциясын қолданамыз.

2.1. Бірінші ретті ҚДТ шешу

Мысал:

[pic 4]

Шешу:

import numpy as np

from scipy.integrate import solve_ivp

import matplotlib.pyplot as plt

def f(x, y):

    return -2*y

x_span = (0, 5)

y0 = [5]

sol = solve_ivp(f, x_span, y0, t_eval=np.linspace(0, 5, 100))

plt.plot(sol.t, sol.y[0])

plt.xlabel("x")

plt.ylabel("y")

plt.title("dy/dx = -2y шешімі")

plt.grid()

plt.show()

[pic 5]

Есептің аналитикалық шешімі:

[pic 6]

Мұнда:

f → дифференциалдық теңдеу

x_span → х аймағы: бастапқы шарт сол интервалдың басына сәйкес болуы керек, теңдеу сол интервалда анық болуы тиіс.

y0 → бастапқы шарт

t_eval → шешім қай нүктелерде есептелуі керек

np.linspace(0, 5, 100) → 0-ден 5-ке дейін 100 нүкте жасайды


2.2. Бірінші ретті — жүйе түріндегі ҚДТ

Жүйе:

[pic 7] 

[pic 8]

def system(t, y):

    y1, y2 = y

    dy1 = 3*y1 - 4*y2

    dy2 = y1 + y2

...

Скачать:   txt (6.5 Kb)   pdf (242.4 Kb)   docx (272.8 Kb)  
Продолжить читать еще 1 страницу »
Доступно только на Essays.club