本文简要介绍 python 语言中 scipy.sparse.linalg.LinearOperator
的用法。
用法:
class scipy.sparse.linalg.LinearOperator(*args, **kwargs)#
执行矩阵向量乘积的通用接口
许多迭代方法(例如 cg、gmres)不需要知道矩阵的各个条目即可求解线性系统 A*x=b。此类求解器仅需要计算矩阵向量乘积 A*v,其中 v 是稠密向量。此类充当迭代求解器和类矩阵对象之间的抽象接口。
要构造一个具体的 LinearOperator,或者将适当的可调用对象传递给此类的构造函数,或者将其子类化。
子类必须实现方法
_matvec
和_matmat
之一,以及属性/属性shape
(整数对)和dtype
(可能为 None)。它可能会调用此类上的__init__
来验证这些属性。实现_matvec
会自动实现_matmat
(使用朴素算法),反之亦然。可选地,子类可以实现
_rmatvec
或_adjoint
以实现 Hermitian 伴随(共轭转置)。与_matvec
和_matmat
一样,实现_rmatvec
或_adjoint
会自动实现另一个。最好实现_adjoint
;_rmatvec
主要是为了向后兼容。- shape: 元组
矩阵尺寸(M,N)。
- matvec: 可调用 f(v)
返回返回 A * v。
- rmatvec: 可调用 f(v)
返回 A^H * v,其中 A^H 是 A 的共轭转置。
- matmat: 可调用 f(V)
返回 A * V,其中 V 是维度为 (N, K) 的密集矩阵。
- dtype: 类型
矩阵的数据类型。
- rmatmat: 可调用 f(V)
返回 A^H * V,其中 V 是维度为 (M, K) 的密集矩阵。
参数 ::
注意:
用户定义的matvec() 函数必须正确处理 v 具有形状 (N,) 的情况以及 (N,1) 情况。返回类型的形状由 LinearOperator 内部处理。
LinearOperator 实例还可以进行相乘、相加和取幂,所有操作都是惰性的:这些操作的结果始终是一个新的复合 LinearOperator,它将线性操作推迟到原始运算符并组合结果。
有关如何子类化 LinearOperator 的更多详细信息以及具体 LinearOperator 实例的几个示例可以在外部项目 PyLops 中找到。
例子:
>>> import numpy as np >>> from scipy.sparse.linalg import LinearOperator >>> def mv(v): ... return np.array([2*v[0], 3*v[1]]) ... >>> A = LinearOperator((2,2), matvec=mv) >>> A <2x2 _CustomLinearOperator with dtype=float64> >>> A.matvec(np.ones(2)) array([ 2., 3.]) >>> A * np.ones(2) array([ 2., 3.])
- args: 元组
对于说明其他线性算子的乘积等的线性算子,二元运算的操作数。
- ndim: int
维数(始终为 2)
属性 ::
相关用法
- Python SciPy linalg.LinAlgError用法及代码示例
- Python SciPy linalg.LaplacianNd用法及代码示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
- Python SciPy linalg.solve_circulant用法及代码示例
- Python SciPy linalg.polar用法及代码示例
- Python SciPy linalg.clarkson_woodruff_transform用法及代码示例
- Python SciPy linalg.rsf2csf用法及代码示例
- Python SciPy linalg.hessenberg用法及代码示例
- Python SciPy linalg.tril用法及代码示例
- Python SciPy linalg.triu用法及代码示例
- Python SciPy linalg.svd用法及代码示例
- Python SciPy linalg.ishermitian用法及代码示例
- Python SciPy linalg.invhilbert用法及代码示例
- Python SciPy linalg.factorized用法及代码示例
- Python SciPy linalg.lu_factor用法及代码示例
- Python SciPy linalg.SuperLU用法及代码示例
- Python SciPy linalg.lsqr用法及代码示例
- Python SciPy linalg.cho_factor用法及代码示例
- Python SciPy linalg.fractional_matrix_power用法及代码示例
- Python SciPy linalg.eig_banded用法及代码示例
- Python SciPy linalg.tanhm用法及代码示例
- Python SciPy linalg.orthogonal_procrustes用法及代码示例
- Python SciPy linalg.use_solver用法及代码示例
- Python SciPy linalg.qr_multiply用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.sparse.linalg.LinearOperator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。