线性代数 (scipy.linalg)#

线性代数函数。

另请参阅

numpy.linalg 以获取更多线性代数函数。请注意,虽然 scipy.linalg 导入其中大部分,但与 scipy.linalg 中相同名称的函数可能提供更多或略有不同的功能。

基础#

inv(a[, overwrite_a, check_finite])

计算矩阵的逆。

solve(a, b[, lower, overwrite_a, ...])

对于未知的 x 以及方形 a 矩阵,求解线性方程组 a @ x == b

solve_banded(l_and_u, ab, b[, overwrite_ab, ...])

求解方程 a x = b,假设 a 是带状矩阵。

solveh_banded(ab, b[, overwrite_ab, ...])

求解方程 a x = b。

solve_circulant(c, b[, singular, tol, ...])

求解 C x = b 对于 x,其中 C 是循环矩阵。

solve_triangular(a, b[, trans, lower, ...])

求解方程 a x = b 对于 x,假设 a 是三角矩阵。

solve_toeplitz(c_or_cr, b[, check_finite])

使用 Levinson 递归求解 Toeplitz 系统

matmul_toeplitz(c_or_cr, x[, check_finite, ...])

使用 FFT 进行有效的 Toeplitz 矩阵-矩阵乘法

det(a[, overwrite_a, check_finite])

计算矩阵的行列式

norm(a[, ord, axis, keepdims, check_finite])

矩阵或向量范数。

lstsq(a, b[, cond, overwrite_a, ...])

计算方程 Ax = b 的最小二乘解。

pinv(a, *[, atol, rtol, return_rank, ...])

计算矩阵的(Moore-Penrose)伪逆。

pinvh(a[, atol, rtol, lower, return_rank, ...])

计算埃尔米特矩阵的(Moore-Penrose)伪逆。

kron(a, b)

克罗内克积。

khatri_rao(a, b)

Khatri-rao 积

orthogonal_procrustes(A, B[, check_finite])

计算正交 Procrustes 问题的矩阵解。

matrix_balance(A[, permute, scale, ...])

计算用于行/列平衡的对角相似变换。

subspace_angles(A, B)

计算两个矩阵之间的子空间角。

bandwidth(a)

返回二维数值数组的下带宽和上带宽。

issymmetric(a[, atol, rtol])

检查方形二维数组是否对称。

ishermitian(a[, atol, rtol])

检查方形二维数组是否埃尔米特。

LinAlgError

由 linalg 函数引发的通用 Python 异常派生对象。

LinAlgWarning

当线性代数相关操作接近算法的失败条件或预期精度损失时发出的警告。

特征值问题#

eig(a[, b, left, right, overwrite_a, ...])

求解方形矩阵的普通或广义特征值问题。

eigvals(a[, b, overwrite_a, check_finite, ...])

从普通或广义特征值问题中计算特征值。

eigh(a[, b, lower, eigvals_only, ...])

针对复埃尔米特或实对称矩阵求解标准或广义特征值问题。

eigvalsh(a[, b, lower, overwrite_a, ...])

针对复埃尔米特或实对称矩阵求解标准或广义特征值问题。

eig_banded(a_band[, lower, eigvals_only, ...])

求解实对称或复埃尔米特带状矩阵特征值问题。

eigvals_banded(a_band[, lower, ...])

求解实对称或复埃尔米特带状矩阵特征值问题。

eigh_tridiagonal(d, e[, eigvals_only, ...])

求解实对称三对角矩阵的特征值问题。

eigvalsh_tridiagonal(d, e[, select, ...])

求解实对称三对角矩阵的特征值问题。

分解#

lu(a[, permute_l, overwrite_a, ...])

计算矩阵的 LU 分解,并进行部分主元。

lu_factor(a[, overwrite_a, check_finite])

计算矩阵的主元 LU 分解。

lu_solve(lu_and_piv, b[, trans, ...])

求解方程组 a x = b,给定 a 的 LU 分解

svd(a[, full_matrices, compute_uv, ...])

奇异值分解。

svdvals(a[, overwrite_a, check_finite])

计算矩阵的奇异值。

diagsvd(s, M, N)

根据奇异值和大小 M、N 构建 SVD 中的 sigma 矩阵。

orth(A[, rcond])

使用 SVD 为 A 的范围构建一个正交基。

null_space(A[, rcond])

使用 SVD 为 A 的零空间构建一个正交基。

ldl(A[, lower, hermitian, overwrite_a, ...])

计算对称/埃尔米特矩阵的 LDLt 或 Bunch-Kaufman 分解。

cholesky(a[, lower, overwrite_a, check_finite])

计算矩阵的 Cholesky 分解。

cholesky_banded(ab[, overwrite_ab, lower, ...])

对带状厄米特正定矩阵进行 Cholesky 分解

cho_factor(a[, lower, overwrite_a, check_finite])

计算矩阵的 Cholesky 分解,用于 cho_solve

cho_solve(c_and_lower, b[, overwrite_b, ...])

求解线性方程组 Ax = b,已知 A 的 Cholesky 分解。

cho_solve_banded(cb_and_lower, b[, ...])

求解线性方程组 A x = b,已知带状厄米特矩阵 A 的 Cholesky 分解。

polar(a[, side])

计算极分解。

qr(a[, overwrite_a, lwork, mode, pivoting, ...])

计算矩阵的 QR 分解。

qr_multiply(a, c[, mode, pivoting, ...])

计算 QR 分解并用矩阵 Q 乘以矩阵。

qr_update(Q, R, u, v[, overwrite_qruv, ...])

秩 k QR 更新

qr_delete(Q, R, k, int p=1[, which, ...])

对行或列删除进行 QR 降秩

qr_insert(Q, R, u, k[, which, rcond, ...])

对行或列插入进行 QR 更新

rq(a[, overwrite_a, lwork, mode, check_finite])

计算矩阵的 RQ 分解。

qz(A, B[, output, lwork, sort, overwrite_a, ...])

QZ 分解,用于计算一对矩阵的广义特征值。

ordqz(A, B[, sort, output, overwrite_a, ...])

QZ 分解,用于一对矩阵,并进行重新排序。

schur(a[, output, lwork, overwrite_a, sort, ...])

计算矩阵的 Schur 分解。

rsf2csf(T, Z[, check_finite])

将实 Schur 形式转换为复 Schur 形式。

hessenberg(a[, calc_q, overwrite_a, ...])

计算矩阵的 Hessenberg 形式。

cdf2rdf(w, v)

将复特征值 w 和特征向量 v 转换为实特征值,以块对角形式 wr 以及相关的实特征向量 vr,满足以下条件。

cossin(X[, p, q, separate, swap_sign, ...])

计算正交/酉矩阵的余弦-正弦 (CS) 分解。

另请参阅

scipy.linalg.interpolative – 插值矩阵分解

矩阵函数#

expm(A)

计算数组的矩阵指数。

logm(A[, disp])

计算矩阵对数。

cosm(A)

计算矩阵余弦。

sinm(A)

计算矩阵正弦。

tanm(A)

计算矩阵正切。

coshm(A)

计算双曲矩阵余弦。

sinhm(A)

计算双曲矩阵正弦。

tanhm(A)

计算双曲矩阵正切。

signm(A[, disp])

矩阵符号函数。

sqrtm(A[, disp, blocksize])

矩阵平方根。

funm(A, func[, disp])

使用可调用对象评估矩阵函数。

expm_frechet(A, E[, method, compute_expm, ...])

A 的矩阵指数在方向 E 上的 Frechet 导数。

expm_cond(A[, check_finite])

Frobenius 范数中矩阵指数的相对条件数。

fractional_matrix_power(A, t)

计算矩阵的非整数次方。

矩阵方程求解器#

solve_sylvester(a, b, q)

计算 Sylvester 方程 \(AX + XB = Q\) 的解 (X)。

solve_continuous_are(a, b, q, r[, e, s, ...])

求解连续时间代数 Riccati 方程 (CARE)。

solve_discrete_are(a, b, q, r[, e, s, balanced])

求解离散时间代数 Riccati 方程 (DARE)。

solve_continuous_lyapunov(a, q)

求解连续 Lyapunov 方程 \(AX + XA^H = Q\)

solve_discrete_lyapunov(a, q[, method])

求解离散 Lyapunov 方程 \(AXA^H - X + Q = 0\)

草图和随机投影#

clarkson_woodruff_transform(input_matrix, ...)

将 Clarkson-Woodruff 变换/草图应用于输入矩阵。

特殊矩阵#

block_diag(*arrs)

根据提供的数组创建块对角矩阵。

circulant(c)

构造循环矩阵。

companion(a)

创建伴随矩阵。

convolution_matrix(a, n[, mode])

构造卷积矩阵。

dft(n[, scale])

离散傅里叶变换矩阵。

fiedler(a)

返回对称的 Fiedler 矩阵

fiedler_companion(a)

返回 Fiedler 伴随矩阵

hadamard(n[, dtype])

构造 Hadamard 矩阵。

hankel(c[, r])

构造 Hankel 矩阵。

helmert(n[, full])

创建阶数为 n 的 Helmert 矩阵。

hilbert(n)

创建阶数为 n 的 Hilbert 矩阵。

invhilbert(n[, exact])

计算阶数为 n 的 Hilbert 矩阵的逆。

leslie(f, s)

创建 Leslie 矩阵。

pascal(n[, kind, exact])

返回 n x n 的 Pascal 矩阵。

invpascal(n[, kind, exact])

返回 n x n Pascal 矩阵的逆。

toeplitz(c[, r])

构造 Toeplitz 矩阵。

低级例程#

get_blas_funcs(names[, arrays, dtype, ilp64])

从 names 返回可用的 BLAS 函数对象。

get_lapack_funcs(names[, arrays, dtype, ilp64])

从 names 返回可用的 LAPACK 函数对象。

find_best_blas_type([arrays, dtype])

找到最佳匹配的 BLAS/LAPACK 类型。

另请参阅

scipy.linalg.blas – 低级 BLAS 函数

scipy.linalg.lapack – 低级 LAPACK 函数

scipy.linalg.cython_blas – 用于 Cython 的低级 BLAS 函数

scipy.linalg.cython_lapack – 用于 Cython 的低级 LAPACK 函数