> 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.
>  
> 

Reply via email to