This package implements interfaces for implicit linear operators, those defined by function and callable instead of matrix. It is useful when the matrix reprensentation is not adequat, for instance
- when the dimension is large,
- when more efficient computation is available instead of basic matrix vector product,
- when the vector interface is not easy to manipulate.
A typical example is the Discrete Fourier Transform that is a linear operator
but available through the usual fft
and ifft
function.
The code is in early development stage, Pre-Alpha.
If you are having issues, please let me know
francois.orieux AT universite-paris-saclay.fr
- A base type
LinOp
that represent an operatorA
whose behaviour depends on the two methodsforward
forA·x
, that applyA
on a vectorx
, andadjoint
forAᴴ·x
that apply the adjointAᴴ
on a vectorx
. - Compatible with
LinearOperator
of scipy. - The base type
LinOp
comes with handy utilities like+
,-
or*
interface for basic composition, or automatic timing of instance creation or methods call. matvec
,rmatvec
,__call__
,*
and@
interfaces.- Instance of common linear operator like
Identity
,Diagonal
,DFT
or convolution. - Utilities functions like
asmatrix
ordottest
.
The package is not actually on pypi but versionned, I recommend to use poetry and run in a terminal
poetry add "git+https://github.com/forieux/aljabr.git"
or add
aljabr = {git = "https://github.com/forieux/aljabr.git", rev = "main"}
in the [tool.poetry.dependencies]
section of your pyproject.toml
.
aljabr
depends on NumPy, SciPy, udft and
PyWavelets.
The code is in the public domain.