In symmetric problems (GHEP) you might have large residuals due to B being singular. The explanation is the following. By default, in SLEPc GHEPs are solved via a B-Lanczos recurrence, that is, using the inner product induced by B. If B is singular this is not a true inner product and numerical problems may arise, in particular, the computed eigenvectors may be corrupted with components in the null space of B. This is easily solved by a small computation called 'eigenvector purification' which is on by default in SLEPc, see EPSSetPurify(). This is described with a bit more detail in section 3.4.4 of the manual.
In non-symmetric problems (GNHEP) you should not see this problem. The only precaution is not to solve systems with matrix B, e.g., using shift-and-invert. Jose > El 5 dic 2019, a las 5:04, Manav Bhatia <[email protected]> escribió: > > Hi, > > I am working on mixed form finite element discretization which leads to > eigenvalues of the form > > A x = lambda B x > > With the matrices defined in a block structure as > > A = [ K D^T ] > [ D 0 ] > > B = [ M 0 ] > [ 0 0 ] > > The second row of equations come from Lagrange multipliers in our > discretization scheme. A system with m Lagrange multiplier is expected to > have m Inf eigenvalues. We are testing the standard eigensolvers in Matlab > and as the system size increases the eigensolves are stopping with larger > residuals, || r_i ||, of the eigensystem: > > r_i = A x_i - lambda_i B x_i > > I am working towards setting this up in SLEPc. In the meantime I am curious > about the following: > > 1. Is the eigensolution of such systems known to be problematic? > 2. Are there standard tricks in SLEPc or elsewhere that are geared towards > more robust solutions of such systems? > > I would appreciate guidance on this. > > Regards, > Manav > >
