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


import math

def f(x):

    return x**4 - x - 1

a = -1.1

b = -0.1

h = 0.1

# Узлы

x = []

current = a

while current <= b + 1e-9:

    x.append(round(current, 1))

    current += h

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

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

n = len(x)

# Первая и вторая производные

y1 = [0] * n

y2 = [0] * n

for i in range(n):

    if i == 0:

        # начальная точка

        y1[i] = (y[i + 1] - y[i]) / h

        y2[i] = (y[i + 2] - 2 * y[i + 1] + y[i]) / h**2

    elif i == n - 1:

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

        y1[i] = (y[i] - y[i - 1]) / h

        y2[i] = (y[i] - 2 * y[i - 1] + y[i - 2]) / h**2

    else:

        # внутренние точки

        y1[i] = (y[i + 1] - y[i - 1]) / (2 * h)

        y2[i] = (y[i + 1] - 2 * y[i] + y[i - 1]) / h**2

print("Таблица значений:")

print(" i      x          y           y'          y''")

print("-" * 50)

for i in range(n):

    print(f"{i:2d}   {x[i]:6.1f}   {y[i]:10.5f}   {y1[i]:10.5f}   {y2[i]:10.5f}")

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

print("\nПроверка точными производными:")

print(" i      x        y' точн.     y'' точн.")

print("-" * 45)

for i in range(n):

    exact_y1 = 4 * x[i]**3 - 1

    exact_y2 = 12 * x[i]**2

    print(f"{i:2d}   {x[i]:6.1f}   {exact_y1:10.5f}   {exact_y2:10.5f}")