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

Cheap inverse of A+kI if cheap inverse from A #180

Open
gaurav-arya opened this issue May 10, 2023 · 3 comments
Open

Cheap inverse of A+kI if cheap inverse from A #180

gaurav-arya opened this issue May 10, 2023 · 3 comments

Comments

@gaurav-arya
Copy link
Member

If A has a cheap inverse, A+kI nearly always does too. It is very important to exploit this, e.g. for cheap inverses of the W-operator in implicit ODE solves: if the user provides a Jacobian with a cheap inverse, we don't want to waste it.

The solution isn't super clear, but some ideas:

  • MatrixOperator(A) + k*I = MatrixOperator(A + k*I), rather than AddedOperator(...)
  • Similarly, additions to identity should be specialized upon for other types, e.g. tensor product operators. The idea is to avoid a lazy addition when possible to avoid the need for Krylov solves.
  • When a user specifies F = FunctionOperator(...), somehow we should make it that F+kI is also a FunctionOperator when possible, e.g. maybe the user specifies a general class of ops that work for arbitrary k. (This one is vague, and definitely needs design work, but hopefully we can find an elegant solution.)
  • As a last resort, we can also consider things like the Sherman-Morrison formula which apply generically.
@vpuri3
Copy link
Member

vpuri3 commented May 10, 2023

what's expression for the inverse of (A + kI)?

@ChrisRackauckas
Copy link
Member

It's moreso that sometimes it's structured. For example you can know that you keep positive-definite.

@gaurav-arya
Copy link
Member Author

Regarding Woodbury, see bottom of page 3 here: https://arxiv.org/pdf/2309.03060.pdf

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

No branches or pull requests

3 participants