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


def f(x):

    return x**4 - x - 1

a = -1.1

b = -0.1

h = 0.1

# Узлы

x = []

cur = a

while cur <= b + 1e-12:

    x.append(round(cur, 10))

    cur += h

# Значения функции

y = [f(xi) for xi in x]

n = len(x)

# Конечные разности

dy = [y[i + 1] - y[i] for i in range(n - 1)]

d2y = [dy[i + 1] - dy[i] for i in range(n - 2)]

d3y = [d2y[i + 1] - d2y[i] for i in range(n - 3)]

d4y = [d3y[i + 1] - d3y[i] for i in range(n - 4)]

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

print(" i      x          y              Δy             Δ²y            Δ³y            Δ⁴y")

print("-" * 95)

for i in range(n):

    print(

        f"{i:2d}  "

        f"{x[i]:8.3f}  "

        f"{y[i]:14.10f}  "

        f"{dy[i] if i < len(dy) else '':>14}  "

        f"{d2y[i] if i < len(d2y) else '':>14}  "

        f"{d3y[i] if i < len(d3y) else '':>14}  "

        f"{d4y[i] if i < len(d4y) else '':>14}"

    )

# Конечная точка xn

xn = x[-1]

# Формулы из фото

y1_xn = (dy[n - 2] + 0.5 * d2y[n - 3]) / h

y2_xn = (d2y[n - 3] + d3y[n - 4]) / h**2

# Остаточные члены из фото

R1_xn = (1 / (3 * h)) * d3y[n - 4]

R2_xn = (11 / (12 * h**2)) * d4y[n - 5]

print("\nРасчёт для конечной точки x_n:")

print(f"x_n = {xn}")

print(f"y'(x_n)  ≈ {y1_xn:.10f}")

print(f"R3'(x_n) = {R1_xn:.10f}")

print(f"\ny''(x_n) ≈ {y2_xn:.10f}")

print(f"R3''(x_n) = {R2_xn:.10f}")

# Точные значения для проверки

exact_y1 = 4 * xn**3 - 1

exact_y2 = 12 * xn**2

print("\nТочные значения для проверки:")

print(f"y'(x_n)  = {exact_y1:.10f}")

print(f"y''(x_n) = {exact_y2:.10f}")