线性代数 (scipy.linalg)#

线性代数函数。

另请参阅

numpy.linalg 获取更多线性代数函数。请注意,尽管 scipy.linalg 导入了它们中的大多数,但来自 scipy.linalg 的同名函数可能会提供更多或略有不同的功能。

基础#

inv(a[, overwrite_a, check_finite])

计算矩阵的逆。

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

求解线性方程组 a @ x == b,对于未知数 x,其中 a 为方阵。

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

求解方程 a x = b 中的 x,假设 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 的 LU 分解,求解方程组 a x = b

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, overwrite_a, ...])

使用 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, ...])

对带状 Hermitian 正定矩阵进行 Cholesky 分解。

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

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

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

求解线性方程 A x = b,给定 A 的 Cholesky 分解。

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

求解线性方程 A x = b,给定带状 Hermitian 矩阵 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])

构造一个汉克尔矩阵。

helmert(n[, full])

创建一个 n 阶的 Helmert 矩阵。

hilbert(n)

创建一个 n 阶的希尔伯特矩阵。

invhilbert(n[, exact])

计算 n 阶希尔伯特矩阵的逆矩阵。

leslie(f, s)

创建一个 Leslie 矩阵。

pascal(n[, kind, exact])

返回 n x n 帕斯卡矩阵。

invpascal(n[, kind, exact])

返回 n x n 帕斯卡矩阵的逆矩阵。

toeplitz(c[, r])

构造一个托普利茨矩阵。

底层例程#

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

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

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

从名称返回可用的 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 函数