Загрузка данных


import math

# Вариант 6

def f(x):

    return x**4 - x - 1

a = -1.1

b = -0.1

h = 0.1

# Значения x и y

x = []

y = []

n = int(round((b - a) / h))

for i in range(n + 1):

    xi = round(a + i * h, 10)

    x.append(xi)

    y.append(f(xi))

# Таблица конечных разностей

dy1 = []  # Δy

dy2 = []  # Δ²y

dy3 = []  # Δ³y

dy4 = []  # Δ⁴y

for i in range(len(y) - 1):

    dy1.append(y[i + 1] - y[i])

for i in range(len(dy1) - 1):

    dy2.append(dy1[i + 1] - dy1[i])

for i in range(len(dy2) - 1):

    dy3.append(dy2[i + 1] - dy2[i])

for i in range(len(dy3) - 1):

    dy4.append(dy3[i + 1] - dy3[i])

print("Таблица значений и конечных разностей:")

print(f"{'i':>2} {'x':>8} {'y':>12} {'Δy':>12} {'Δ²y':>12} {'Δ³y':>12} {'Δ⁴y':>12}")

for i in range(len(x)):

    s_dy1 = f"{dy1[i]:.8f}" if i < len(dy1) else ""

    s_dy2 = f"{dy2[i]:.8f}" if i < len(dy2) else ""

    s_dy3 = f"{dy3[i]:.8f}" if i < len(dy3) else ""

    s_dy4 = f"{dy4[i]:.8f}" if i < len(dy4) else ""

    print(f"{i:>2} {x[i]:>8.2f} {y[i]:>12.8f} {s_dy1:>12} {s_dy2:>12} {s_dy3:>12} {s_dy4:>12}")

print("\nПроизводные по формулам с фото:")

print(f"{'i':>2} {'x_n':>8} {'yʹ(x_n)':>15} {'Rʹ3':>15} {'yʺ(x_n)':>15} {'Rʺ3':>15}")

# Формулы работают начиная с i >= 4,

# потому что нужны Δ³y_{n-3} и Δ⁴y_{n-4}

for i in range(4, len(x)):

    # y'(x_n) ≈ 1/h * (Δy_{n-1} + 1/2 * Δ²y_{n-2})

    y1 = (dy1[i - 1] + 0.5 * dy2[i - 2]) / h

    # y''(x_n) ≈ 1/h² * (Δ²y_{n-2} + Δ³y_{n-3})

    y2 = (dy2[i - 2] + dy3[i - 3]) / (h ** 2)

    # Остаточные члены

    # R'3(x_n) = 1/(3h) * Δ³y_{n-3}

    R1 = dy3[i - 3] / (3 * h)

    # R''3(x_n) = 11/(12h²) * Δ⁴y_{n-4}

    R2 = 11 * dy4[i - 4] / (12 * h ** 2)

    print(f"{i:>2} {x[i]:>8.2f} {y1:>15.8f} {R1:>15.8f} {y2:>15.8f} {R2:>15.8f}")