numpy.linalg.solve#
- linalg.solve(a, b)[source]#
求解线性矩阵方程或线性标量方程组。
计算良好定义(即满秩)线性矩阵方程 ax = b 的“精确”解 x。
- 参数:
- a(…, M, M) array_like
系数矩阵。
- b{(M,), (…, M, K)}, array_like
纵坐标或“因变量”值。
- 返回值:
- x{(…, M,), (…, M, K)} ndarray
系统 a x = b 的解。如果 b 的形状为 (M,),则返回的形状为 (…, M);如果 b 的形状为 (…, M, K),则返回的形状为 (…, M, K),其中“…”部分在 a 和 b 之间广播。
- 引发:
- LinAlgError
如果 a 是奇异的或不是方阵。
另请参阅
scipy.linalg.solve
SciPy 中的类似函数。
备注
版本 1.8.0 中的新功能。
广播规则适用,有关详细信息,请参阅
numpy.linalg
文档。解是使用 LAPACK 例程
_gesv
计算的。a 必须是方阵且满秩,即所有行(或等效地,列)必须线性无关;如果两者都不成立,请使用
lstsq
来获得系统的最小二乘最佳“解”。版本 2.0 中的更改: 仅当 b 数组恰好是一维时,才将其视为形状为 (M,) 的列向量。在所有其他情况下,它都被视为 (M, K) 矩阵的堆叠。以前,如果 b.ndim 等于 a.ndim - 1,则 b 将被视为 (M,) 向量的堆叠。
参考文献
[1]G. Strang,线性代数及其应用,第 2 版,佛罗里达州奥兰多,学术出版社,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