You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+33-10Lines changed: 33 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,10 @@
7
7
8
8
A Julia package for defining and working with linear maps, also known as linear transformations or linear operators acting on vectors. The only requirement for a LinearMap is that it can act on a vector (by multiplication) efficiently.
9
9
10
+
## What's new in v2.3.0
11
+
* Fully Julia v0.7/v1.0/v1.1 compatible.
12
+
* Full support of noncommutative number types such as quaternions.
13
+
10
14
## What's new in v2.2.0
11
15
* Fully Julia v0.7/v1.0 compatible.
12
16
* A `convert(SparseMatrixCSC, A::LinearMap)` function, that calls the `sparse` matrix generating function.
@@ -40,7 +44,7 @@ The LinearMaps package provides the following functionality:
40
44
41
45
*`LinearMap`
42
46
43
-
General purpose method to construct `LinearMap` objects of specific types, as described in the Types section below
47
+
General purpose method to construct `LinearMap` objects of specific types, as described in the [Types](@ref) section below
@@ -87,23 +91,40 @@ The LinearMaps package provides the following functionality:
87
91
88
92
## Types
89
93
90
-
None of the types below need to be constructed directly; they arise from performing operations between `LinearMap` objects or by calling the `LinearMap` constructor described above.
94
+
None of the types below need to be constructed directly; they arise from performing
95
+
operations between `LinearMap` objects or by calling the `LinearMap` constructor
96
+
described above.
91
97
92
98
* `LinearMap`
93
99
94
100
Abstract supertype
95
101
96
102
* `FunctionMap`
97
103
98
-
Type for wrapping an arbitrary function that is supposed to implement the matrix vector product as a `LinearMap`.
104
+
Type for wrapping an arbitrary function that is supposed to implement the
105
+
matrix vector product as a `LinearMap`.
99
106
100
107
* `WrappedMap`
101
108
102
-
Type for wrapping an `AbstractMatrix` or `LinearMap` and to possible redefine the properties `isreal`, `issymmetric`, `ishermitian` and `isposdef`. An `AbstractMatrix` will automatically be converted to a `WrappedMap` when it is combined with other `AbstractLinearMap` objects via linear combination or composition (multiplication). Note that `WrappedMap(mat1)*WrappedMap(mat2)` will never evaluate `mat1*mat2`, since this is more costly then evaluating `mat1*(mat2*x)` and the latter is the only operation that needs to be performed by `LinearMap` objects anyway. While the cost of matrix addition is comparable to matrix vector multiplication, this too is not performed explicitly since this would require new storage of the same amount as of the original matrices.
103
-
104
-
* `IdentityMap`
105
-
106
-
Type for representing the identity map of a certain size `M=N`, obtained simply as `IdentityMap{T}(M)`, `IdentityMap(T,M)=IdentityMap(T,M,N)=IdentityMap(T,(M,N))` or even `IdentityMap(M)=IdentityMap(M,N)=IdentityMap((M,N))`. If `T` is not specified, `Bool` is assumed, since operations between `Bool` and any other `Number` will always be converted to the type of the other `Number`. If `M!=N`, an error is returned. An `IdentityMap` of the correct size and element type will automatically be created if `LinearMap` objects are combined with `I`, Julia's built in identity (`UniformScaling`).
109
+
Type for wrapping an `AbstractMatrix` or `LinearMap` and to possible redefine
110
+
the properties `isreal`, `issymmetric`, `ishermitian` and `isposdef`. An
111
+
`AbstractMatrix` will automatically be converted to a `WrappedMap` when it is
112
+
combined with other `AbstractLinearMap` objects via linear combination or
113
+
composition (multiplication). Note that `WrappedMap(mat1)*WrappedMap(mat2)`
114
+
will never evaluate `mat1*mat2`, since this is more costly then evaluating
115
+
`mat1*(mat2*x)` and the latter is the only operation that needs to be performed
116
+
by `LinearMap` objects anyway. While the cost of matrix addition is comparable
117
+
to matrix vector multiplication, this too is not performed explicitly since
118
+
this would require new storage of the same amount as of the original matrices.
119
+
120
+
* `UniformScalingMap`
121
+
122
+
Type for representing a scalar multiple of the identity map (a.k.a. uniform
123
+
scaling) of a certain size `M=N`, obtained simply as `UniformScalingMap(λ, M)`.
124
+
The type `T` of the resulting `LinearMap` object is inferred from the type of
125
+
`λ`. A `UniformScalingMap` of the correct size will be automatically created
126
+
if `LinearMap` objects are multiplied by scalars from the left or from the right,
127
+
respecting the order of multiplication.
107
128
108
129
* `LinearCombination`, `CompositeMap`, `TransposeMap` and `AdjointMap`
109
130
@@ -112,8 +133,10 @@ None of the types below need to be constructed directly; they arise from perform
112
133
## Example
113
134
114
135
The `LinearMap` object combines well with methods of the following packages:
115
-
* [Arpack.jl](https://github.com/JuliaLinearAlgebra/Arpack.jl): iterative eigensolver `eigs` and SVD `svds`;
116
-
* [IterativeSolvers.jl](https://github.com/JuliaMath/IterativeSolvers.jl): iterative solvers, eigensolvers, and SVD;
0 commit comments