Программа на Python для решения системы линейных алгебраических уравнений методом Гелиуса
python
import numpy as np
def gauss_elimination(A, b):
n = len(b)
# Прямой ход
for i in range(n):
# Поиск главного элемента
max_idx = i
for j in range(i+1, n):
if abs(A[j, i]) > abs(A[max_idx, i]):
max_idx = j
# Обмен строк
A[[i, max_idx]] = A[[max_idx, i]]
b[[i, max_idx]] = b[[max_idx, i]]
# Приведение элемента a(i,i) к единице
A[i, :] /= A[i, i]
b[i] /= A[i, i]
# Обнуление столбца под главным элементом
for j in range(i+1, n):
A[j, :] -= A[j, i] * A[i, :]
b[j] -= A[j, i] * 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
# Пример использования функции
A = np.array([[2, 1, -1],
[-3, -1, 2],
[-2, 1, 2]])
b = np.array([-8, 9, -3])
x = gauss_elimination(A, b)
print("Решение СЛАУ:")
for i in range(len(x)):
print(f"x{i+1} =", x[i])
В данной программе первым шагом мы определяем функцию `gauss_elimination`, которая принимает матрицу коэффициентов `A` и вектор свободных членов `b` в качестве аргументов. Она возвращает вектор `x` - решение СЛАУ.
На прямом ходе мы ищем главные элементы в каждом столбце матрицы А и приводим их к единице. Затем мы обнуляем столбец под главным элементом, повторяя этот процесс для каждого столбца. Наконец, мы находим значения неизвестных, используя обратный ход.
В нашем примере мы решаем систему уравнений:
2x + y - z = -8
-3x - y + 2z = 9
-2x + y + 2z = -3
Результат выполнения программы:
Решение СЛАУ:
x1 = 2.0
x2 = 3.0
x3 = -1.0
Таким образом, решением системы уравнений является `x1 = 2.0`, `x2 = 3.0`, `x3 = -1.0`.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет