numpy.linalg.solve#
- linalg.solve(a, b)[源代码]#
求解线性矩阵方程,或线性标量方程组.
计算良定(即,满秩)线性矩阵方程 ax = b 的”精确”解 x.
- 参数:
- a(…, M, M) array_like
系数矩阵.
- b{(M,), (…, M, K)}, 类数组
纵坐标或”因变量”值.
- 返回:
- x{(…, M,), (…, M, K)} ndarray
系统 a x = b 的解.返回的形状是 (…, M) 如果 b 的形状是 (M,) 并且 (…, M, K) 如果 b 是 (…, M, K),其中”…”部分在 a 和 b 之间广播.
- 引发:
- LinAlgError
如果 a 是奇异的或不是方阵.
参见
scipy.linalg.solve
SciPy 中的类似功能.
备注
在 1.8.0 版本加入.
广播规则适用,详情请参见
numpy.linalg
文档.这些解决方案是使用 LAPACK 例程
_gesv
计算的.a 必须是方阵且满秩,即所有行(或等效地,列)必须是线性独立的;如果任一条件不成立,请使用
lstsq
来求解系统的最小二乘最佳”解”.在 2.0 版本发生变更: b 数组只有在恰好是 1 维时才被视为形状为 (M,) 的列向量.在所有其他情况下,它被视为 (M, K) 矩阵的堆叠.以前,如果 b.ndim 等于 a.ndim - 1,b 将被视为 (M,) 向量的堆叠.
参考文献
[1]G. Strang, Linear Algebra and Its Applications, 2nd Ed., Orlando, FL, Academic Press, Inc., 1980, pg. 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