scipy.linalg.solve

scipy.linalg.solve(a, b, sym_pos=False, lower=False, overwrite_a=False, overwrite_b=False, debug=None, check_finite=True, assume_a='gen', transposed=False)[源代码]

解线性方程组 a * x = b 对于未知的事物 x 对于正方形 a 矩阵。

如果已知数据矩阵是特定类型,则将相应的字符串提供给 assume_a 关键点选择专用解算器。可用的选项包括

一般矩阵

“一代人”

对称

“sym”

厄米特语

“她”

正定的

“位置”

如果省略, 'gen' 是默认结构。

无论值是多少,数组的数据类型都定义调用哪个求解器。换句话说,即使复数组条目的虚部正好为零,也会根据数组的数据类型调用复数解算器。

参数
a(n,N)类数组

正方形输入数据

b(n,nrhs)类似数组

为右侧输入数据。

sym_pos布尔值,可选

假设 a 是对称的和正定的。此密钥已弃用,建议改用Asmise_a=‘pos’关键字。功能是相同的。它将在未来被移除。

lower布尔值,可选

如果为True,则仅包含在 a 。默认情况下使用上三角形。(忽略 'gen' )

overwrite_a布尔值,可选

允许覆盖中的数据 a (可以增强性能)。默认值为False。

overwrite_b布尔值,可选

允许覆盖中的数据 b (可以增强性能)。默认值为False。

check_finite布尔值,可选

是否检查输入矩阵是否仅包含有限个数字。禁用可能会带来性能提升,但如果输入确实包含无穷大或NAN,则可能会导致问题(崩溃、非终止)。

assume_a字符串,可选

有效条目如上所述。

转置:布尔值,可选

如果为True, a^T x = b 对于实数矩阵,提高 NotImplementedError 适用于复数矩阵(仅适用于True)。

退货
x(N,NRHS)ndarray

解决方案数组。

加薪
ValueError

如果检测到尺寸不匹配或输入a不是正方形。

LinAlgError

如果矩阵是奇异的。

LinAlgWarning

如果检测到病态输入A。

NotImplementedError

如果转置为True,并且输入a是复矩阵。

注意事项

如果输入b矩阵是具有N个元素的一维阵列,则当与N×N个输入a一起提供时,尽管存在明显的大小不匹配,它仍被假定为有效的列向量。这与numpy.dot()行为兼容,返回的结果仍然是一维数组。

通过调用LAPACK的GESV、SYSV、HESV和POSV例程,分别得到了一般解、对称解、厄米特正定解和正定解。

示例

给定的 ab ,求解 x

>>> a = np.array([[3, 2, 0], [1, -1, 0], [0, 5, 1]])
>>> b = np.array([2, 4, -1])
>>> from scipy import linalg
>>> x = linalg.solve(a, b)
>>> x
array([ 2., -2.,  9.])
>>> np.dot(a, x) == b
array([ True,  True,  True], dtype=bool)