import numpy as np

# матрица коэффициентов
A = np.array([
    [4, -1, 1],
    [1, 5, 1],
    [9, 32, 84]
], dtype=float)

# вектор правых частей
b = np.array([
    -21,
    -12,
    -1859
], dtype=float)

# точное решение
exact = np.linalg.solve(A, b)

print("Точное решение:")
print(exact)


# ---------------------------
# Метод простой итерации
# ---------------------------

x = np.zeros(3)

print("\nМетод простой итерации")

for i in range(3):
    x_new = np.zeros(3)

    x_new[0] = (-21 + x[1] - x[2]) / 4
    x_new[1] = (-12 - x[0] - x[2]) / 5
    x_new[2] = (-1859 - 9*x[0] - 32*x[1]) / 84

    x = x_new
    print(f"Итерация {i+1}: {x}")


# ---------------------------
# Метод Зейделя
# ---------------------------

x = np.zeros(3)

print("\nМетод Зейделя")

for i in range(3):

    x[0] = (-21 + x[1] - x[2]) / 4
    x[1] = (-12 - x[0] - x[2]) / 5
    x[2] = (-1859 - 9*x[0] - 32*x[1]) / 84

    print(f"Итерация {i+1}: {x}")