Написать программу программу в Python для решения системы линейных алгебраических уравнений методом Зейделя без импорта библиотек
python
def solve_equations(a, b, initial_guess, max_iterations, tolerance):
n = len(a)
x = initial_guess.copy()
for k in range(max_iterations):
x_prev = x.copy()
for i in range(n):
sigma = 0
for j in range(n):
if j != i:
sigma += a[i][j] * x[j]
x[i] = (b[i] - sigma) / a[i][i]
if all(abs(x[i] - x_prev[i]) < tolerance for i in range(n)):
return x
return None
# Пример использования
a = [[4, -1, 2], [3, 6, -1], [2, 1, 5]]
b = [1, 5, -2]
initial_guess = [0, 0, 0]
max_iterations = 100
tolerance = 0.0001
solution = solve_equations(a, b, initial_guess, max_iterations, tolerance)
if solution is not None:
print("Решение системы уравнений:")
for i, x in enumerate(solution):
print(f"x{i+1} = {x}")
else:
print("Решение не найдено. Увеличьте максимальное количество итераций или уменьшите точность.")
В этом примере решается система уравнений:
4x1 - 1x2 + 2x3 = 1,
3x1 + 6x2 - 1x3 = 5,
2x1 + 1x2 + 5x3 = -2.
Начальное приближение задается нулевыми значениями для x1, x2 и x3.
Максимальное количество итераций установлено равным 100, а точность - 0.0001.
Код функции `solve_equations` принимает матрицу коэффициентов `a`, вектор значений `b`, начальное приближение `initial_guess`, максимальное количество итераций `max_iterations` и точность `tolerance`.
Алгоритм решения системы уравнений методом Зейделя реализован внутри этой функции.
Функция возвращает решение системы уравнений или `None`, если решение не найдено.
Наконец, решение системы выводится на экран или сообщение о том, что решение не найдено.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет