[petsc-users] Ambiguity of KSPCGNE

Barry Smith bsmith at mcs.anl.gov
Fri Jun 22 12:19:45 CDT 2012


On Jun 22, 2012, at 2:54 AM, Alexander Grayver wrote:

> Hi Barry,
> 
>>> In this case the application of the method is quite restricted since all practical least squares problems formulated in form of normal equations are solved with regularization, e.g.:
>>> 
>>> (A'A + \lamba I)x = A'b
>> Yes it is restrictive. There is no concept of lambda in CGNE in PETSc
> 
> In this case, since there is LSQR in PETSc, there is hardly any reason to use CGNE.
> 
>>> Assume I have A computed and use matrix free approach to represent (A'A + \lamba I) without ever forming it, so what should I do then to apply KSPCGNE?
>>    If you supply a shell matrix that applies (A'A + \lamba I)  why not just use KSPCG?
> 
> That is what I do at the moment. However, as far as I understand, CGLS is not just about shifting original matrix with some lambda, it has other advantages over CG for normal equations.

   Ok, then it is an algorithm that is not currently implemented in PETSc. 

    CGNE is only for people who have A (which is square) and want to solve the normal equations with CG using the preconditioner of A and its transpose for the preconditioner. Basically it allows the user to avoid computing A'A explicitly or making their own shell matrix.  It is definitely not a substitute for LSQR.


    Barry

> 
>>     But if you provide this shell matrix, how do you plan to apply a preconditioner?
> 
> One can easily compute diag(A'A + \lamba I), thanks to MatGetColumnNorms, and thus Jacobi is possible. Since the matrix is diagonally dominant, in my case it is enough to converge. Although convergence for normal equations does not imply accurate solution, so that one needs CGLS or LSQR.
> 
> -- 
> Regards,
> Alexander
> 



More information about the petsc-users mailing list