本文簡要介紹 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。