ному на інтервалі [a, b], були обчислені коріння цього рівняння з необхідною точністю E методом Ньютона.
Були взяті дві довільні точки на функції і отриманий відрізок, обмежений зліва і справа цими точками, заданий клас точності обчислень і з'ясовано, що точність обчислень залежить від того, який клас точності задати, так само було визначено, що якщо корінь не влучає в заданий нами інтервал, то програма не видає належної відповіді.
5. Чисельне рішення диференціальних рівнянь першого порядку
Постановка завдання:
За допомогою чисельних методів вирішити диференціальне рівняння першого порядку у '= f (x, y).
. Метод Ейлера.
. Модифікований метод Ейлера (варіант 1).
. Модифікований метод Ейлера (варіант 2).
. Метод Рунге-Кутта третього порядку.
. Метод Рунге-Кутта четвертого порядку
Вихідні дані:
УравненіеМетодa b x0 y0у '= exp (-x) - 2x1, 41211
1. Метод Ейлера
y 1=y 0 + h * f (x 0, y 0) x 1=x 0 + hРасчетние формули для 1-го кроку y i +1=yi + h * f (xi, yi) x i +1=xi * hРасчетние формули для i-го кроку
2. Метод Рунге-Кутта третього порядку
у i +1=у i + (k +1 +4 k 2 + k 3) / 6, k 1=hf (xi, yi),
k 2=hf (xi + h / 2, yi + k 1/2),
k 3=hf (xi + h, yi +2 k 2-k 1), i +1=xi + h.
Структура програми:
1. Підключення бібліотек
2. Опис даної функції
3. Опис функції fx методу Ейлера
. Опис функції rk методу Рунге-Кутта
. Опис функції calculate для знаходження значення
. Створення віджетів
6.1. Створення вікна
6.2. Створення кнопок і полів для введення користувачем значень
.3. Вставка малюнка
.4. Відображення головного вікна
Код програми:
# * - coding: utf - 8 - * -
# підключення бібліотеки Tkinter
from Tkinter import *
# імпорт математичної бібліотекіmath import *
# опис функцііdu (x, y):
return exp (-x) - 2 * x
def fx (x_0, y_0, x_k, n_1):
# крок інтегрування=(x_k-x_0) / n_1
# Метод Ейлера
for i in range (0, n_1):
y1=y_0 + h * du (x_0, y_0)=x_0 + h_0=x1_0=y1y1rk (x_0, y_0, x_k, n_1):
h=(x_k-x_0) / n_1
# метод Рунге-Кутта
for i in range (0, n_1):
k1=h * du (x_0, y_0)=h * du (x_0 + h / 2, y_0 + k1 / 2)
k3=h * du (x_0 + h, y_0 +2 * k2-k1)=y_0 + (k1 +4 * k2 + k3) / 6_0=x_0 + h_0=y1y1