Skip to content

More about eigenvalue_offset

mrcdr edited this page Oct 12, 2019 · 7 revisions

Large offset problem

Large offset works fine?

As mentioned here, the variable eigenvalue_offset should be set properly. Someone might think use of very large eigenvalue_offset always works fine and Gershgorin theorem calculation is not necessary. This is mathematically correct but numerically wrong.

What causes trouble

Consider a matrix whose maximum eigenvalue is 1.23456789. If we set eigenvalue_offset = 1000000, Lambda Lanczos calculates the eigenvalue as 1000001.23456789 mathematically. But numerically, its lower digits are ignored due to the limitation of floating-point representation. So the calculated eigenvalue will be something like 1000001.23456 in 12 digits of precision case. Finally we get the re-shifted result as 1.23456, having only 6 digits precision, even though the calculation have been performed with 12 digits of precision.

Conclusion

The eigenvalue_offset should be set AS SMALL AS POSSIBLE for precise calculation. If you faced a problem that desired precision weren't achieved, the eigenvalue_offset might be causing trouble.

Clone this wiki locally