Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Faster boundedness check for invertible LinearMap #962

Closed
schillic opened this issue Dec 27, 2018 · 1 comment
Closed

Faster boundedness check for invertible LinearMap #962

schillic opened this issue Dec 27, 2018 · 1 comment
Assignees
Labels
performance 🐎 More efficient code

Comments

@schillic
Copy link
Member

schillic commented Dec 27, 2018

In #956 we implemented isbounded(::LinearMap) as follows:

function isbounded(lm::LinearMap)::Bool
    if iszero(lm.M) || isbounded(lm.X)
        return true
    end
    return isbounded_unit_dimensions(lm)
end

Another sufficient criterion is that lm.M is invertible. Since Julia does not provide such a check, we discussed to add a sufficient check of a matrix being invertible/not singular as follows (based on this reference):

function isinvertible_sufficient(M::AbstractMatrix; cond_tol::Number=1e6)
    return cond(M) < cond_tol
end

i think that we can use cond
it correspond to the ratio between the largest and smallest singular value of the matrix
if it is bigger than some given tolerance, then the matrix is singular
there will always be some tolerance because we make the computations in floating point

Can we also use this idea for ExponentialProjectionMap?

@schillic schillic added the performance 🐎 More efficient code label Dec 27, 2018
@mforets
Copy link
Member

mforets commented Dec 27, 2018

I think that it can be use only when the matrix Le^A R is a square matrix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
performance 🐎 More efficient code
Projects
None yet
Development

No branches or pull requests

2 participants