Напиши код, который решает системы линейных алгебраических уравнений методом простой итерации. Программа должна иметь: 1) Функцию проверки условия сходимости 2) Функцию выводящая на экран итерации во время решения 3) Реализовать всё циклами
def simple_iter(A, b, tol, x0, maxiter):
"""
A – матрица системы уравнений
b – вектор свободных членов
tol – требуемая точность
x0 – начальное приближение
maxiter – максимальное число итераций
"""
n = A.shape[0]
# Проверка условия сходимости
for i in range(n):
if abs(A[i,i]) < np.sum(np.abs(A[i,:])) - abs(A[i,i]):
print("Условие сходимости не выполнено!")
return None
# Инициализация матриц M и N
M = np.eye(n) - np.linalg.inv(A)
N = np.dot(np.linalg.inv(A), b)
# Итерации
x = x0.copy()
for k in range(maxiter):
x_new = np.dot(M, x) + N
# Вывод результатов на экран
print(f"Iteration {k+1}: {x_new}")
# Проверка на точность
if np.linalg.norm(x_new - x) < tol:
return x_new
x = x_new.copy()
return x
В данной программе мы использовали библиотеку NumPy для работы с матрицами и вычислений. Функция simple_iter() принимает обязательные аргументы матрицы A и вектора b, требуемую точность tol, начальное приближение x0 и максимальное число итераций maxiter.
Сначала мы проверяем условия сходимости, где матрица А должна удовлетворять свойствам матрицы М (стриктное диагональное преобладание) и все собственные значения матрицы М меньше единицы по модулю.
Затем мы инициализируем матрицы М и Н и запускаем итерации. На каждой итерации мы выводим результаты на экран и проверяем, достигнута ли заданная точность. Если она достигнута, функция возвращает решение. Иначе, метод процесс продолжится до тех пор, пока не будет достигнут максимальный лимит итераций.
Данный код позволит эффективно решать системы линейных уравнений методом простой итерации с выводом итераций и проверкой условий сходимости.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет