JuliaIntervals / IntervalLinearAlgebra.jl

Linear algebra done rigorously
MIT License
34 stars 8 forks source link

[enhancement]: Bypassing uncomputability issues #127

Open wlad-svennik opened 2 years ago

wlad-svennik commented 2 years ago

Feature description

I'm new to interval computing. I'm a PhD student at Imperial College London. I have a suggestion, and I'm wondering how you handle this.

Certain operations on matrices are uncomputable. For instance, eigendecomposition of even "nice" matrices like symmetric matrices is not computable. What "uncomputable" means in practice is that "forwards numerical stability" is not attainable. The notion of "backwards numerical stability" may still be attainable and can suffice for certain use cases. Unfortunately, interval arithmetic in the naive sense cannot "handle" backwards stability. But this limitation can be by-passed.

My suggestion surrounds eigendecomposition. The API I propose should have three functions:

eigendecomp(M) should produce a pair of matrices (P,D) such that the matrix P is exact (and not interval valued!!) and D is interval-valued. P and D should be chosen so that P D P^-1 contains M as snuggly as possible. The actual eigenvalues and eigenvectors of M don't matter because the eigenvectors of M in particular are not computable.

I also suggest that the purpose of eigendecomposition is to lift functions of type Complex -> Complex to complex matrices. I suspect that the eigenvalues and eigenvectors are perhaps not entirely relevant, in practice.

lucaferranti commented 2 years ago

thank you for your interest in the project and sorry for the long delay in answering, very busy week :D

I think your idea sounds very interesting and would make sense to include something like that in the package (maybe the names of the API can be negotiated :) ). I'll try here to summarize your proposal to make sure I understand correctly and ask a few clarifying questions.

If I understand correctly you are proposing that given a matrix M, find a non-interval matrix P and an interval diagonal matrix D so that M is contained in P*D*P^{-1}. I think this would be interesting to explore and maybe it might have some practical utilities e.g. to bound functions of matrices.

If you have further questions / comments, do not hesitate to ping me.