A
is definitely not symmetric.
I took the idea that you proposed, @fgerick, and solved the dense problem taking the 3 dominant eigenvalues and vectors. It gives a reasonable result but i don’t get a good approximation. After some thought i realized that’s probably the correct behavior and this approach won’t work in this particular case, i.e. the end goal is to construct a Pade polynomial which represents the transfer function of the system.
I think it’s equivalent to taking an 8th order polynomial , chopping down to a 3rd order and expecting it to be an accurate approximation - it won’t be.
The big matrix A is the 8x8 matrix. Instead of solving for all the eigenvalues/vectors to construct the frequency response of the network, it is reduced to a 3x3 matrix using Lanczos, i.e. the resulting T matrix is a 3x3.
I have implemented the (naive) Lanczos algorithm AND have used Arpack. I was not clear about that.
The toy lanczos process works, i.e. it gives me a reasonable T matrix. I then run eigen on the T matrix and i get eigenvalues/vectors that work, but not well. Which then made me think that my toy lanczos does NOT work, so i went to Arpack/KrylovKit.
When i use Arpack i get the 3 eigenvalues, which correspond very closely to the values i get from the toy Lanczos, but i’m unclear on which eigenvectors are associated with the eigenvalues, because I have an 8x3 matrix but only need a 3x3 result (the eigenvectors are needed to calculate the residues of the polynomial).
I should point out that I’ve used a different method (AWE) to calculate the polynomial equivalent and a 3rd order (Pade) polynomial can be made which is a very accurate reproduction of the original system. So i’m not chasing a red herring.
I’m most definitely in over my head so i’m camped out in chapter 9 of Golub and van Sloan trying to figure it out
I just looked at the Rayleight Ritz method and that looks more directly applicable to what i’m trying to do rather than using Lanczos. The papers i’m referring to are quite old (90s) and maybe using Lanczos to do this is not the best approach anymore.
I’m not sure why you suggest using Arpack and passing in Hermitian(A)
instead of just A
.
Thanks very much for your help !