numpy.linalg.solve#

linalg.решить(a, b)[источник]#

Решить линейное матричное уравнение или систему линейных скалярных уравнений.

Вычисляет «точное» решение, x, хорошо определённого, т.е. полного ранга, линейного матричного уравнения ax = b.

Параметры:
a(…, M, M) array_like

Матрица коэффициентов.

b{(M,), (..., M, K)}, array_like

Значения ординат или «зависимой переменной».

Возвращает:
x{(…, M,), (…, M, K)} ndarray

Решение системы a x = b. Возвращаемая форма — (…, M), если b имеет форму (M,), и (…, M, K), если b имеет форму (…, M, K), где часть «…» транслируется между a и b.

Вызывает:
LinAlgError

Если a является вырожденной или не квадратной.

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

scipy.linalg.solve

Похожая функция в SciPy.

Примечания

Применяются правила трансляции, см. numpy.linalg документации для подробностей.

Решения вычисляются с использованием подпрограммы LAPACK _gesv.

a должна быть квадратной и полного ранга, т.е. все строки (или, что эквивалентно, столбцы) должны быть линейно независимыми; если это не так, используйте lstsq для наилучшего «решения» системы/уравнения методом наименьших квадратов.

Изменено в версии 2.0: Массив b обрабатывается как вектор-столбец формы (M,) только если он точно одномерный. Во всех остальных случаях он обрабатывается как стек матриц (M, K). Ранее b обрабатывался как стек векторов (M,), если b.ndim был равен a.ndim - 1.

Ссылки

[1]

G. Strang, Linear Algebra and Its Applications, 2-е изд., Орландо, Флорида, Academic Press, Inc., 1980, стр. 22.

Примеры

Решить систему уравнений: x0 + 2 * x1 = 1 и 3 * x0 + 5 * x1 = 2:

>>> import numpy as np
>>> a = np.array([[1, 2], [3, 5]])
>>> b = np.array([1, 2])
>>> x = np.linalg.solve(a, b)
>>> x
array([-1.,  1.])

Проверьте, что решение верно:

>>> np.allclose(np.dot(a, x), b)
True