# Methods for calculating the symmetric part of a matrix

I am using a multigrid preconditioned GMRES method for a nonsymmetric matrix. The matrix is the discretisation of the derivative of a nonlinear operator. Since multigrid is not the best for nonsymmetric problems I am preconditioning the 'symmetric part' of the matrix, where I am taking the symmetric part of matrix $A$ to be $(A + A^{\text{T}})/2$, where $A^{\text{T}}$ is the transpose of $A$.

My problem is that the 'symmetric part' of the matrix that I get is not positive definite. I was wondering if there is a way to get a symmetric positive definite part of a matrix which is just some manipulation of the original matrix, i.e.

$\tilde{A} = F(A)$

for $F$ some function of $A$

EDIT: From the comments and answers below I realise that I have not included a large part of the important information required for my question, so here is some supplementary information. I am using a standard geometric multigrid implementation with a pointwise Jacobi / Gauss-Seidel smoother. I am aware that using a smoothing operator that is tailored to the specific operator that I am dealing with will give better results, but I am assessing the effectiveness of the standard linear geometric multigrid implementation for some problems I am interested in. As such I ideally want to be applying the multigrid iteration to a symmetric positive definite matrix. I have information about the linear operator that I can use to get a matrix to precondition which is symmetric positive definite and 'close to' the matrix I am interested in inverting, which works quite well. What I am particularly interested in, though, is knowing if there is some 'black box' function which can give a symmetric positive definite matrix for the preconditioning that will be 'good' for a given matrix, without having knowledge of where the given matrix came from

• This looks like it might be more appropriate for Computational Science. Keeran, if you agree, click the flag link below your question and ask the moderators to migrate it.
– David Richerby
Feb 18, 2014 at 15:21
• I think it's ontopic on either site, so I'd prefer to let the question sit here for a week or so. If it has no answer then, you can repost it.
– Raphael
Feb 18, 2014 at 16:35
• I am not sure about what I am going to say, but if you say that multigrid is not the best for non-symmetric systems, why not preconditioning the non-symmetric part $(A-A^T)/2$? Feb 18, 2014 at 23:16
• Where does this matrix come from? I gather you're using geometric multigrid, not algebraic multigrid? Feb 19, 2014 at 9:56
• @GeoffOxberry I am using geometric multigrid. The matrix is the discretisation of the linearisation of a nonlinear operator. I know that there is a symmetric positive definite (spd) part of the linear operator. Using the symmetrisation technique described above the 'symmetric' part of the matrix I get is not positive definite, though, so geometric multigrid is not as effective as in the spd case. For the example I am working with I could just discretise the spd part of the operator, but I want a general way to get a spd part of a matrix to see how effective it is for preconditioning Feb 19, 2014 at 10:11

Furthermore, if I understand you right, you want to apply the multigrid preconditioner to a matrix $f(A)$ and use this to precondition the solution of a linear system involving the matrix $A$. This will in general only bring any reduction in iteration counts if $f(A)$ and $A$ are in fact closely related. Just because you can find a function $f$ that maps any matrix $A$ to a symmetric and positive matrix $f(A)$ and for which you have a multigrid implementation does not mean that this is then automatically a good preconditioner for $A$.
• I think the black box you are looking for doesn't exist. I can define many ways to construct an SPD matrix out of a general matrix $A$, for example $f(A)=A^TA+I$. But without defining what a "good" approximation is, that's meaningless. If you're looking for something that will make for a good preconditioner, I do not believe that it exists in general. Preconditioners need to reflect the eigenvalues of the original matrix, and you will not find any "simple" transformation that can do that. Feb 20, 2014 at 2:32