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


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

B = [
    [0.00, 0.08, -0.23, 0.36],
    [0.16, -0.22, 0.18, 0.00],
    [0.15, 0.12, 0.35, -0.17],
    [0.25, 0.21, -0.19, 0.03],
]
c = [1.37, -2.38, 0.38, 0.64]
n = 4

# Входные данные
x = list(map(float, input("Начальное приближение (4 числа через пробел): ").split()))
eps = float(input("Точность: "))

# Проверка сходимости
norm = 0
for i in range(n):
    s = 0
    for j in range(n):
        s += abs(B[i][j])
    if s > norm:
        norm = s

if norm >= 1:
    print("Метод не сходится")
else:
    print("Условие сходимости выполнено, норма =", norm)

    k = 0
    while True:
        x_new = []
        for i in range(n):
            value = c[i]
            for j in range(n):
                value += B[i][j] * x[j]
            x_new.append(value)
        k += 1

        # самое большое изменение среди всех x
        diff = 0
        for i in range(n):
            d = abs(x_new[i] - x[i])
            if d > diff:
                diff = d

        x = x_new
        if diff < eps:
            break

    print("Решение:")
    for i in range(n):
        print("x%d = %.5f" % (i + 1, x[i]))
    print("Количество итераций:", k)