[petsc-users] eigenvalue problem involving inverse of a matrix

Pierre Jolivet pierre.jolivet at lip6.fr
Mon Aug 14 03:45:27 CDT 2023



> On 14 Aug 2023, at 10:39 AM, maitri ksh <maitri.ksh at gmail.com> wrote:
> 
> 
> Hi, 
> I need to solve an eigenvalue problem  Ax=lmbda*x, where A=(B^-H)*Q*B^-1 is a hermitian matrix, 'B^-H' refers to the hermitian of the inverse of the matrix B. Theoretically it would take around 1.8TB to explicitly compute the matrix B^-1 . A feasible way to solve this eigenvalue problem would be to use the LU factors of the B matrix instead. So the problem looks something like this: 
>                      (((LU)^-H)*Q*(LU)^-1)*x = lmbda*x
> For a guess value of the (normalised) eigen-vector 'x', 
> 1) one would require to solve two linear equations to get 'Ax', 
>         (LU)*y=x,             solve for 'y',
>        ((LU)^H)*z=Q*y,   solve for 'z' 
>     then one can follow the conventional power-iteration procedure
> 2) update eigenvector: x= z/||z||
> 3) get eigenvalue using the Rayleigh quotient 
> 4) go to step-1 and loop through with a conditional break.
> 
> Is there any example in petsc that does not require explicit declaration of the matrix 'A' (Ax=lmbda*x) and instead takes a vector 'Ax' as input for an iterative algorithm (like the one above). I looked into some of the examples of eigenvalue problems ( it's highly possible that I might have overlooked, I am new to petsc) but I couldn't find a way to circumvent the explicit declaration of matrix A.

You could use SLEPc with a MatShell, that’s the very purpose of this MatType.

Thanks,
Pierre

> Maitri
> 
> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230814/4aa423c2/attachment.html>


More information about the petsc-users mailing list