Написать программу программу в Python для решения системы линейных алгебраических уравнений методом Гаусса без использования библиотек
python
import numpy as np
def gauss(A, b):
n = len(A)
# Приведение матрицы A к треугольному виду
for i in range(n):
# Поиск строки с максимальным элементом в текущем столбце
max_row = i
for j in range(i + 1, n):
if abs(A[j][i]) > abs(A[max_row][i]):
max_row = j
# Перестановка строк
A[[i, max_row]] = A[[max_row, i]]
b[[i, max_row]] = b[[max_row, i]]
# Приведение строки i к треугольному виду
for j in range(i + 1, n):
c = -A[j][i] / A[i][i]
A[j] += c * A[i]
b[j] += c * b[i]
# Обратный ход
x = np.zeros(n)
for i in range(n - 1, -1, -1):
x[i] = (b[i] - np.dot(A[i, i+1:], x[i+1:])) / A[i][i]
return x
Пример вызова функции:
python
A = np.array([[2, 1, -1],
[-3, -1, 2],
[-2, 1, 2]])
b = np.array([8, -11, -3])
x = gauss(A, b)
print(x)
В данном примере решается следующая система линейных уравнений:
2x + y - z = 8
-3x - y +2z = -11
-2x + y + 2z = -3
Результатом работы программы будет вектор x, содержащий значения переменных:
x = 2.0
y = 3.0
z = -1.0Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет