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例程,分别得到了一般解、对称解、厄米特正定解和正定解。
示例
给定的 a 和 b ,求解 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)