> 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
 

Reply via email to