Closed axsk closed 9 months ago
It's been a while since I last read through the code, but iirc the error estimation routine only implements the Lanczos algorithm, i.e. mostly for Hermitian (or, in your real-valued case, symmetric) matrices.
Note with your example, with a symmetric A A += A'
the results do agree w/
expv(10, A, b) - expv(10, A, b, mode=:error_estimate)
--
more details:
the non error-estimation expv
call uses the arnoldi
method which only switches to the Lanczos step based on the isherimtian
argument
however, the implementation of the error-estimation just checks the KrylovSubspace type
So if you do :error_estimate
and are non Hermition, we should throw an error saying that it's an inappropriate choice of error estimator?
@ChrisRackauckas Yes, would make sense since it assumes Lanczos/tridagonal KrylovSubspace.H to use with the stegr call
correction in PR. Thanks!
Describe the bug π
expv(t, A, b, mode=:error_estimate)
gives vastly different results for longer time-steps.Expected behavior
I would expect
error_estimate
andhappy_breakdown
results to at least have the same magnitudesMinimal Reproducible Example π
Error & Stacktrace β οΈ
Environment (please complete the following information):
Output of
using Pkg; Pkg.status()
Output of
versioninfo()