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