[petsc-users] Solution of normal equations

Jose E. Roman jroman at dsic.upv.es
Tue Jul 19 13:03:57 CDT 2022


I guess you could try LSQR on the matrix M=[ sqrt(D); sqrt(R)*J ], given that M'*M=D+J'*R*J. This will attempt to solve a least squares system with coefficient matrix M, without forming the ill-conditioned M'*M. But the question is how to update your right-hand-side vector so that it solves the same system of equations that you want to solve.

Jose

> El 19 jul 2022, a las 19:58, Mark Adams <mfadams at lbl.gov> escribió:
> 
> This matrix is SPD so you want to use -ksp_type cg
> 
> Without a matrix, preconditioning is hard. You can give it a shot. You need to make a MatShell and use -pc_type none.
> 
> You will probably want to make a matrix and you should research solver methods that have been used for problems like yours.
> 
> Mark
> 
> On Tue, Jul 19, 2022 at 12:07 PM Alejandro Castro <alejandro.castro at tri.global> wrote:
> Hello PETSc users,
> 
> I am looking to solve a (sparse) system of equations H⋅x=b where matrix H has the form H=D+Jᵀ⋅R⋅J, where both D and R are positive diagonal matrices. This is very similar to a set of normal equations, though not quite. J is square and most often with a large condition number κ(J) (and thus H's condition number will scale with the square of κ(J)).
> 
> What method would you recommend for solving H⋅x=b? In particular, I imagine I do not want to form H directly. Also, what iterative method would you recommend given the large condition number?
> 
> Thank you in advance,
> 
> A.
> 
> 
> 
> -- 
> 	
> Alejandro Castro (he/him)
> Manager, Dynamics & Simulation
> TOYOTA RESEARCH INSTITUTE
> Los Altos / Cambridge
> 
> 
> Confidential or protected information may be contained in this email and/or attachment. Unless otherwise marked, all TRI email communications are considered "PROTECTED" and should not be shared or distributed. Thank you.



More information about the petsc-users mailing list