[petsc-users] Matrix equation involving square-root

Jose E. Roman jroman at dsic.upv.es
Sun May 22 10:55:56 CDT 2016


The latest version of SLEPc has functionality for computing f(A)*v - this includes the square root. See chapter 7 of the users guide (MFN). So I guess you could use an MFNSolve within a shell matrix in a KSP for your linear system.

Currently the solver is quite basic (restarted Krylov iteration). I plan to add further improvements, so I would be interested in applications that need this. If you are interested, write to my personal email.

Jose


> El 22 may 2016, a las 2:55, Matthew Knepley <knepley at gmail.com> escribió:
> 
> On Sat, May 21, 2016 at 5:57 PM, Jeff Steward <jeffsteward at gmail.com> wrote:
> I have a real SPD matrix A, and I would like to find x for
> 
> (A + A^{1/2})x = b
> 
> where A^{1/2} is the unique matrix such that A^{1/2}A^{1/2} = A. The trouble is I don't have A^{1/2} (unless I compute the eigenpairs of A which is fairly expensive), only A. 
> 
> Is there a computationally efficient method in PETSc to find x in my case? Ideally I would like to use an iterative method and a matrix shell for A due to memory concerns and the fact that I don't need an exact solution.
> 
> There are iterative methods for the matrix square root (https://en.wikipedia.org/wiki/Square_root_of_a_matrix), but they are
> for dense matrices. I do not know of a method beyond direct factorization that works for sparse matrices.
> 
> If you are getting this fractional power from a continuous problem (like subdiffusion), then you
> should handle it with discretization rather than matrix tools.
> 
>   Thanks,
> 
>      Matt
>  
> Best wishes,
> 
> Jeff
> 
> 
> 
> -- 
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener



More information about the petsc-users mailing list