Написать программу программу в Python для решения системы линейных алгебраических уравнений методом Гаусса
python
import numpy as np
def gauss_elimination(A, b):
n = len(A)
# Прямой ход
for i in range(n):
# Проверяем A[i][i] на ноль
if A[i][i] == 0:
for j in range(i+1, n):
# Если ненулевой элемент найден, меняем строки местами
if A[j][i] != 0:
A[[i, j]] = A[[j, i]]
b[[i, j]] = b[[j, i]]
break
else:
raise ValueError("Система уравнений не имеет решений")
# Делим текущую строку на A[i][i], чтобы получить 1 на главной диагонали
A[i] /= A[i][i]
b[i] /= A[i][i]
# Вычитаем текущую строку из всех следующих строк, чтобы получить нули под главной диагональю
for j in range(i+1, n):
factor = A[j][i] / A[i][i]
A[j] -= factor * A[i]
b[j] -= factor * b[i]
# Обратный ход
x = np.zeros(n)
x[n-1] = b[n-1]
for i in range(n-2, -1, -1):
x[i] = b[i] - np.dot(A[i, i+1:], x[i+1:])
return x
# Пример использования
A = np.array([[2, 3, -2], [4, 5, -4], [2, -1, 1]], dtype=float)
b = np.array([-1, 2, 1], dtype=float)
x = gauss_elimination(A, b)
print(x)
В данном примере используется библиотека NumPy для работы с матрицами. Функция gauss_elimination выполняет прямой и обратный ход метода Гаусса над переданными матрицей коэффициентов A и вектором правой части b. Результатом работы функции является вектор x с значениями неизвестных переменных. В данном случае ответом будет x = [1. -1. -2.].Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет