РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
242 of 541 menu

Функция linalg.solve

Функция linalg.solve решает систему линейных уравнений вида A * x = b, где A - квадратная матрица коэффициентов, b - вектор или матрица правых частей. Первый параметр функции - матрица коэффициентов A, второй параметр - правая часть b. Матрица A должна быть квадратной и невырожденной.

Синтаксис

np.linalg.solve(A, b)

Пример

Решим простую систему двух уравнений с двумя неизвестными:

import numpy as np A = np.array([[3, 1], [1, 2]]) b = np.array([9, 8]) res = np.linalg.solve(A, b) print(res)

Результат выполнения кода:

[2. 3.]

Решением системы является вектор x = [2, 3], что соответствует уравнениям: 3*2 + 1*3 = 9 и 1*2 + 2*3 = 8.

Пример

Решим систему трёх уравнений с тремя неизвестными:

import numpy as np A = np.array([ [2, 1, -1], [-3, -1, 2], [-2, 1, 2] ]) b = np.array([8, -11, -3]) res = np.linalg.solve(A, b) print(res)

Результат выполнения кода:

[2. 3. -1.]

Пример

Решим систему с несколькими правыми частями, передавая матрицу b с несколькими столбцами:

import numpy as np A = np.array([ [4, 1], [2, 3] ]) b = np.array([ [1, 2], [3, 4] ]) res = np.linalg.solve(A, b) print(res)

Результат выполнения кода:

[[0. 0.2] [1. 1.2]]

Каждый столбец матрицы b решается независимо.

Пример

Сравним решение системы с использованием обратной матрицы:

import numpy as np A = np.array([ [3, 1], [1, 2] ]) b = np.array([9, 8]) res_solve = np.linalg.solve(A, b) res_inv = np.linalg.inv(A) @ b print("solve:", res_solve) print("inv: ", res_inv)

Результат выполнения кода:

"solve: [2. 3.]" "inv: [2. 3.]"

Оба метода дают одинаковый результат, но solve работает быстрее и численно более устойчив.

Пример

При попытке решить систему с вырожденной матрицей возникает ошибка LinAlgError:

import numpy as np A = np.array([ [1, 2], [2, 4] ]) b = np.array([3, 6]) try: res = np.linalg.solve(A, b) print(res) except np.linalg.LinAlgError as e: print("Error:", e)

Результат выполнения кода:

"Error: Singular matrix"

Смотрите также

  • функцию inv,
    которая вычисляет обратную матрицу
  • функцию pinv,
    которая вычисляет псевдообратную матрицу
  • функцию lstsq,
    которая решает систему методом наименьших квадратов
  • функцию det,
    которая вычисляет определитель матрицы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить