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


def f(x):

    return x**4 - x - 1

a = -1.1

b = -0.1

h = 0.1

# Узлы

x = []

current = a

while current <= b + 1e-12:

    x.append(round(current, 10))

    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("-" * 75)

for i in range(n):

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

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

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

print("-" * 60)

for i in range(n):

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

    exact_y2 = 12 * x[i]**2

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