Thanks Jose! What would be a good way to calculate null space of A^2? Would I need to create a shell matrix for A^2 and define matrix-vector products on this?
-Manav > On Mar 26, 2017, at 2:56 AM, Jose E. Roman <[email protected]> wrote: > > >> El 26 mar 2017, a las 5:17, Manav Bhatia <[email protected]> escribió: >> >> Hi, >> >> I am working on some continuation problems and need to approximate the null >> space of a matrix for bifurcation and branch switching. >> >> Are there algorithms available in Petsc to do this? Can Slepc be used to >> calculate the null space of a matrix? I guess the eigenvectors corresponding >> to zero eigenvalues would serve this purpose? Literature is pointing me in >> the direction of more elaborate Moore-Spence algorithms. I am not sure why >> an eigensolver cannot be used for this purpose. >> >> Any guidance would be greatly appreciated. >> >> Thanks, >> Manav >> > > You can use SLEPc to compute null space vectors, but some care must be taken. > > You can do simple tests with ex11.c: > http://slepc.upv.es/documentation/current/src/eps/examples/tutorials/ex11.c.html > This example deflates the null space, but you can comment out the call to > EPSSetDeflationSpace() and then the zero eigenvalue will be computed > explicitly. > > The first comment is that the default convergence criterion is relative to > the eigenvalue, which is obvioulsy bad for the zero eigenvalue. So you should > switch to the absolute convergence criterion: -eps_conv_abs > > The above should work for a semi-definite matrix. If the matrix is indefinite > then computing the null space will be more difficult. In this case, I would > try computing the null space of A^2. > > Finally, if the size of the null space is large, then the solver might have > more difficulties. If this happens, try reducing the tolerance or > deactivating locking: -eps_krylovschur_locking 0 > > Jose
