Utilities
peigvals
Eigenvalues of a cyclic matrix product.peigvecs
Eigenvalues and eigenvectors of a cyclic matrix product.ts2fm
Compute the function matrix to interpolate a matrix time series.psreduc_reg
Fast reduction of a lifted regular pencil corresponding to a product of matrices.
PeriodicMatrices.peigvals
— Method ev = peigvals(A::Array{T,3}; rev = true, fast = false)
Compute the eigenvalues of a product of p
square matrices A(p)...*A(2)*A(1)
, if rev = true
(default) (also called characteristic multipliers) or of A(1)*A(2)...A(p)
if rev = false
, without evaluating the product. The matrices A(1)
, ...
, A(p)
are contained in the n×n×p
array A
such that the i
-th matrix A(i)
is contained in A[:,:,i]
. If fast = false
(default) then the eigenvalues are computed using an approach based on the periodic Schur decomposition [1], while if fast = true
the structure exploiting reduction [2] of an appropriate lifted pencil is employed. This later option may occasionally lead to inaccurate results for large number of matrices.
References
[1] A. Bojanczyk, G. Golub, and P. Van Dooren, The periodic Schur decomposition. Algorithms and applications, Proc. SPIE 1996.
[2] A. Varga & P. Van Dooren. Computing the zeros of periodic descriptor systems. Systems and Control Letters, 50:371-381, 2003.
PeriodicMatrices.peigvals
— Method ev = peigvals(A::Vector{Matrix}[, k = 1]; rev = true, fast = false)
Compute the eigenvalues of a square cyclic product of p
matrices A(k-1)...*A(2)*A(1)*A(p)...*A(k)
, if rev = true
(default) or A(k)*A(k+1)*...A(p)*A(1)...A(k-1)
if rev = false
, without evaluating the product. The argument k
specifies the starting index (default: k = 1
). The matrices A(1)
, ...
, A(p)
are contained in the p
-vector of matrices A
such that the i
-th matrix A(i)
, of dimensions m(i)×n(i)
, is contained in A[i]
. If fast = false
(default) then the eigenvalues are computed using an approach based on the periodic Schur decomposition [1], while if fast = true
the structure exploiting reduction [2] of an appropriate lifted pencil is employed. This later option may occasionally lead to inaccurate results for large number of matrices.
Note: The first nmin
components of ev
contains the core eigenvalues
of the appropriate matrix product, where nmin
is the minimum row dimensions of matrices A[i]
, for i = 1, ..., p
, while the last ncur-nmin
components of ev
are zero, where ncur
is the column dimension of A[k]
if rev = true
or the row dimension of A[k]
if rev = false
.
References
[1] A. Bojanczyk, G. Golub, and P. Van Dooren, The periodic Schur decomposition. Algorithms and applications, Proc. SPIE 1996.
[2] A. Varga & P. Van Dooren. Computing the zeros of periodic descriptor systems. Systems and Control Letters, 50:371-381, 2003.
PeriodicMatrices.peigvecs
— Functionpeigvecs(A::Vector{Matrix}; rev = true, select_fun = f(x), allvecs::Bool) => (V::Vector{Matrix}, ev::Vector{Complex})
Compute eigenvalues ev
and the corresponding right eigenvectors V
of a cyclic product of p
n×n
real matrices A(p)*...*A(2)*A(1) =: Ψ
, if rev = true
(default) or A(1)*A(2)*...*A(p) =: Ψ
if rev = false
, without evaluating the product. The vectors are returned as columns of the elements of the vector V
of matrices. The resulting vectors satisfy A[k]*V[k] = V[k+1]*Γ[k]
if rev = true
, or A[k]*V[k+1] = V[k]*Γ[k]
if rev = false
, where Γ[k]
are diagonal matrices and satisfy Γ[1]*Γ[2]...Γ[p] = Diagonal(ev)
If allvecs = false
, then V
is a vector with a single component which satisfies Ψ*V[1] = V[1]*Diagonal(ev)
.
A selection of eigenvectors can be computed corresponding to eigenvalues which satisfy f(x) = true
, where x
is an eigenvalue and f(x)
is a function of scalar parameter x
(default: f(x) = true
, thus all eigenvectors are computed).
The eigenvalues are computed using an approach based on the periodic Schur decomposition [1], for which purpose SLICOT based wrappers are used if PSD_SLICOT = true
(default), or the generic software from the PeriodicSchurDecomposition.jl
package is employed, if PSD_SLICOT = false
. The eigenvectors are computed using the eigvecs
function available in the PeriodicSchurDecomposition.jl
package.
References
[1] A. Bojanczyk, G. Golub, and P. Van Dooren, The periodic Schur decomposition. Algorithms and applications, Proc. SPIE 1996.
PeriodicMatrices.ts2fm
— Function ts2fm(A::Vector{<:AbstractMatrix}, period; method = "linear") -> At::Function
Compute the function matrix corresponding to an interpolated matrix time series. For the given matrix time series A
, a function matrix A(t)
is defined as the mapping A(t) = t -> Aint(t)
, where Aint(t)
is an array of interpolation objects, as provided in the Interpolations.jl
package. The keyword parameter method
specifies the interpolation method to be used as follows:
method = "constant"
- use periodic B-splines of degree 0 (constant interpolation);
method = "linear"
- use periodic B-splines of degree 1 (linear interpolation) (default);
method = "quadratic"
- use periodic B-splines of degree 2 (quadratic interpolation);
method = "cubic"
- use periodic B-splines of degree 3 (cubic interpolation).
PeriodicMatrices.psreduc_reg
— Functionpsreduc_reg(A) -> (M, N)
Determine for a n×n×p
array A
, the matrix pair (M, N)
with N
invertible and M-λN
regular, such that the eigenvalues of M-λN
are the same as those of the matrix product A(p)*A(p-1)*...*A(1)
, where A(i)
is contained in A[:,:,i]
. The structure exploiting fast reduction method of [1] is employed to determine M
and N
.
[1] A. Varga & P. Van Dooren. Computing the zeros of periodic descriptor systems. Systems and Control Letters, 50:371-381, 2003.
psreduc_reg(A,E) -> (M, N)
Determine for a pair of n×n×p
arrays (A,E)
, the matrix pair (M, N)
with M-λN
regular, such that the eigenvalues of M-λN
are the same as those of the quotient matrix product inv(E(p))*(A(p)*inv(E(p-1))*A(p-1)*...*inv(E(1))*A(1)
, where A(i)
is contained in A[:,:,i]
and E(i)
is contained in E[:,:,i]
. The structure exploiting fast reduction method of [1] is employed to determine M
and N
.
[1] A. Varga & P. Van Dooren. Computing the zeros of periodic descriptor systems. Systems and Control Letters, 50:371-381, 2003.
psreduc_reg(A) -> (M, N)
Determine for a p
-dimensional vector of rectangular matrices A
, the matrix pair (M, N)
with N
invertible and M-λN
regular, such that the eigenvalues of M-λN
are the same as those of the square matrix product A(p)*A(p-1)*...*A(1)
, where A(i)
is contained in A[i]
. The structure exploiting fast reduction method of [1] is employed to determine M
and N
.
[1] A. Varga & P. Van Dooren. Computing the zeros of periodic descriptor systems. Systems and Control Letters, 50:371-381, 2003.