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)]
# массивы
y1 = [""] * n
y2 = [""] * n
R1 = [""] * n
R2 = [""] * 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
R1[i] = (1 / (3*h)) * d3y[n-4]
R2[i] = (11 / (12*h**2)) * d4y[n-5]
# вывод таблицы
print(" i x y y' y'' R3' R3''")
print("-"*80)
for i in range(n):
print(
f"{i:2d} {x[i]:6.2f} {y[i]:10.6f} "
f"{y1[i] if y1[i]=='' else f'{y1[i]:10.6f}'} "
f"{y2[i] if y2[i]=='' else f'{y2[i]:10.6f}'} "
f"{R1[i] if R1[i]=='' else f'{R1[i]:10.6f}'} "
f"{R2[i] if R2[i]=='' else f'{R2[i]:10.6f}'}"
)
# проверка
print("\nПроверка для x_n:")
xn = x[-1]
exact_y1 = 4*xn**3 - 1
exact_y2 = 12*xn**2
print(f"x_n = {xn}")
print(f"y'(точн.) = {exact_y1:.6f}")
print(f"y''(точн.) = {exact_y2:.6f}")