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)
:
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.7666666666666706
MatrixEquations.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.76666666666667
MatrixEquations.oprcondest
— Function.rcond = 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.008849557522123885
MatrixEquations.opsepest
— Function.sep = 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
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