Ok, thank you! Kind regards.
El mar., 18 de feb. de 2020 a la(s) 03:17, Jose E. Roman ([email protected]) escribió: > > > El 17 feb 2020, a las 19:19, Emmanuel Ayala <[email protected]> escribió: > > Thank you very much for the answer. > > This error appears when computing the B-norm of a vector x, as >> sqrt(x'*B*x). Probably your B matrix is semi-definite, and due to >> floating-point error the value x'*B*x becomes negative for a certain vector >> x. The code uses a tolerance of 10*PETSC_MACHINE_EPSILON, but it seems the >> rounding errors are larger in your case. Or maybe your B-matrix is >> indefinite, in which case you should solve the problem as non-symmetric (or >> as symmetric-indefinite GHIEP). >> >> Do you get the same problem with the Krylov-Schur solver? >> >> > After check the input matrices, the problem was solved using GHIEP. > > >> A workaround is to edit the source code and remove the check or increase >> the tolerance, but this may be catastrophic if your B is indefinite. A >> better solution is to reformulate the problem, solving the matrix pair >> (A,C) where C=alpha*A+beta*B is positive definite (note that then the >> eigenvalues become lambda/(beta+alpha*lambda)). >> >> > Ok, there is a rule to choose the values for alpha and beta? > > > For instance take alpha=1 and beta=-sigma, where sigma is a lower bound of > the leftmost eigenvalue of B (the most negative one). This assumes that A > is positive definite. > > Jose > > > > Kind regards. > Thanks. > > > >
