Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вариант 4 / 5 / lab5chm

.py
Скачиваний:
17
Добавлен:
27.06.2024
Размер:
919 б
Скачать
import math

def fy(x, y):
    return (x)/(2*y)

def r(x, y, h, m):
    for j in range(m):
        k1 = fy(x, y)
        k2 = fy(x + h / 2, y + h * k1 / 2)
        k3 = fy(x + h / 2, y + h * k2 / 2)
        k4 = fy(x + h, y + h * k3)
        
        y = y + (h / 6) * (k1 + 2 * k2 + 2 * k3 + k4)
        x = x + h

    return y

def diff(x0, y0, b, h0, eps):
    n = int((b - x0) / h0)

    for i in range(1, n+2):
        h = h0
        m = 1
        y = r(x0, y0, h, m)

        while True:
            y1 = y
            h = h / 2
            x = x0
            y = y0
            m *= 2
            y = r(x, y, h, m)

            if abs(y - y1) / 15 < eps:
                break

        x0 += h0
        y0 = y

        print(f"x0: {round(x0, 2)}")
        print(f"y0: {y0}")
        print()

x0 = 0
y0 = 1
b = 1.2
h0 = 0.4
eps = 0.0001

diff(x0, y0, b, h0, eps)
Соседние файлы в папке 5