def f(x):
return x**4 - x - 1
a = -1.1
b = -0.1
h = 0.1
# Узлы x и значения y
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)]
# Массивы для вывода
y1 = [""] * n
y2 = [""] * n
R3_1 = [""] * n
R3_2 = [""] * n
# Используем формулы для конечной точки x_n
i = n - 1
y1[i] = (dy[n - 2] + 0.5 * d2y[n - 3]) / h
y2[i] = (d2y[n - 3] + d3y[n - 4]) / h**2
R3_1[i] = (1 / (3 * h)) * d3y[n - 4]
R3_2[i] = (11 / (12 * h**2)) * d4y[n - 5]
# Вывод таблицы конечных разностей
print("Таблица конечных разностей")
print(" i x y Δy Δ²y Δ³y Δ⁴y")
print("-" * 95)
for i in range(n):
print(
f"{i:2d} "
f"{x[i]:8.2f} "
f"{y[i]:14.8f} "
f"{dy[i] if i < len(dy) else '':>14.8f} " if i < len(dy) else
f"{i:2d} {x[i]:8.2f} {y[i]:14.8f} {'':>14} ",
end=""
)
print(
f"{d2y[i] if i < len(d2y) else '':>14.8f} " if i < len(d2y) else f"{'':>14} ",
end=""
)
print(
f"{d3y[i] if i < len(d3y) else '':>14.8f} " if i < len(d3y) else f"{'':>14} ",
end=""
)
print(
f"{d4y[i] if i < len(d4y) else '':>14.8f}" if i < len(d4y) else f"{'':>14}"
)
# Вывод производных и остаточных членов
print("\nТаблица производных и остаточных членов")
print(" i x y y' y'' R3' R3''")
print("-" * 95)
for i in range(n):
print(
f"{i:2d} "
f"{x[i]:8.2f} "
f"{y[i]:14.8f} "
f"{y1[i] if y1[i] == '' else f'{y1[i]:14.8f}'} "
f"{y2[i] if y2[i] == '' else f'{y2[i]:14.8f}'} "
f"{R3_1[i] if R3_1[i] == '' else f'{R3_1[i]:14.8f}'} "
f"{R3_2[i] if R3_2[i] == '' else f'{R3_2[i]:14.8f}'}"
)
# Проверка точными производными
xn = x[-1]
exact_y1 = 4 * xn**3 - 1
exact_y2 = 12 * xn**2
print("\nПроверка для конечной точки:")
print(f"x_n = {xn}")
print(f"y'(x_n) по формуле = {y1[-1]:.8f}")
print(f"R3'(x_n) = {R3_1[-1]:.8f}")
print(f"y'(x_n) точное = {exact_y1:.8f}")
print(f"\ny''(x_n) по формуле = {y2[-1]:.8f}")
print(f"R3''(x_n) = {R3_2[-1]:.8f}")
print(f"y''(x_n) точное = {exact_y2:.8f}")