Norm, Condition Number and Separation Estimations
MatrixEquations.opnorm1 — Functionγ = opnorm1(op)Compute γ, the induced 1-norm of the linear operator op, as the maximum of 1-norm of the columns of the associated m x n matrix $M$ = Matrix(op):
\[\gamma = \|op\|_1 := \max_{1 ≤ j ≤ n} \|M_j\|_1\]
with $M_j$ the j-th column of $M$. This function is not recommended to be used for large order operators.
Examples
julia> A = [-6. -2. 1.; 5. 1. -1; -4. -2. -1.]
3×3 Array{Float64,2}:
-6.0 -2.0 1.0
5.0 1.0 -1.0
-4.0 -2.0 -1.0
julia> opnorm1(lyapop(A))
30.0
julia> opnorm1(invlyapop(A))
3.7666666666666706MatrixEquations.opnorm1est — Functionγ = opnorm1est(op)Compute γ, a lower bound of the 1-norm of the square linear operator op, using reverse communication based computations to evaluate op * x and op' * x. It is expected that in most cases $\gamma > \|op\|_1/10$, which is usually acceptable for estimating the condition numbers of linear operators.
Examples
julia> A = [-6. -2. 1.; 5. 1. -1; -4. -2. -1.]
3×3 Array{Float64,2}:
-6.0 -2.0 1.0
5.0 1.0 -1.0
-4.0 -2.0 -1.0
julia> opnorm1est(lyapop(A))
18.0
julia> opnorm1est(invlyapop(A))
3.76666666666667MatrixEquations.oprcondest — Functionrcond = oprcondest(op, opinv; exact = false)Compute rcond, an estimation of the 1-norm reciprocal condition number of a linear operator op, where opinv is the inverse operator inv(op). The estimate is computed as $\text{rcond} = 1 / (\|op\|_1\|opinv\|_1)$, using estimates of the 1-norm, if exact = false, or computed exact values of the 1-norm, if exact = true. The exact = true option is not recommended for large order operators.
Note: No check is performed to verify that opinv = inv(op).
Examples
julia> A = [-6. -2. 1.; 5. 1. -1; -4. -2. -1.]
3×3 Array{Float64,2}:
-6.0 -2.0 1.0
5.0 1.0 -1.0
-4.0 -2.0 -1.0
julia> oprcondest(lyapop(A),invlyapop(A))
0.014749262536873142
julia> 1/opnorm1est(lyapop(A))/opnorm1est(invlyapop(A))
0.014749262536873142
julia> oprcondest(lyapop(A),invlyapop(A),exact = true)
0.008849557522123885
julia> 1/opnorm1(lyapop(A))/opnorm1(invlyapop(A))
0.008849557522123885rcond = oprcondest(op; exact = false)Compute rcond, an estimation of the 1-norm reciprocal condition number of a linear operator op, where op is one of the defined Lyapunov or Sylvester operators. The estimate is computed as $\text{rcond} = 1 / (\|op\|_1\|inv(op)\|_1)$, using estimates of the 1-norm, if exact = false, or computed exact values of the 1-norm, if exact = true. The exact = true option is not recommended for large order operators.
MatrixEquations.opsepest — Functionsep = opsepest(opinv; exact = false)Compute sep, an estimation of the 1-norm separation of a linear operator op, where opinv is the inverse operator inv(op). The estimate is computed as $\text{sep} = 1 / \|opinv\|_1$ , using an estimate of the 1-norm, if exact = false, or the computed exact value of the 1-norm, if exact = true. The exact = true option is not recommended for large order operators.
The separation of the operator op is defined as
\[\text{sep} = \displaystyle\min_{X\neq 0} \frac{\|op*X\|}{\|X\|}.\]
An estimate of the reciprocal condition number of op can be computed as $\text{sep}/\|op\|_1$.
Example
julia> A = [-6. -2. 1.; 5. 1. -1; -4. -2. -1.]
3×3 Array{Float64,2}:
-6.0 -2.0 1.0
5.0 1.0 -1.0
-4.0 -2.0 -1.0
julia> opsepest(invlyapop(A))
0.26548672566371656
julia> 1/opnorm1est(invlyapop(A))
0.26548672566371656
julia> opsepest(invlyapop(A),exact = true)
0.26548672566371656
julia> 1/opnorm1(invlyapop(A))
0.26548672566371656