Re: How to construct symmetric matrix from just a one
- To: mathgroup at smc.vnet.net
 - Subject: [mg110375] Re: How to construct symmetric matrix from just a one
 - From: Daniel Lichtblau <danl at wolfram.com>
 - Date: Wed, 16 Jun 2010 05:36:23 -0400 (EDT)
 
dragec wrote:
> please help me with simple to apply function that will construct
> symmetric matrix from given just a half matrix with diagonal.
> Eg:
> 
> From:
> 1  0  0  0
> 2  3  0  0
> 4  9  5  0
> 2  2  3  4
> 
> To give:
> 
> 1  2  4  2
> 2  3  9  2
> 4  9  5  3
> 2  2  3  4
Any of these should do the job.
symmetrize1[mat_] := mat + Transpose[mat] -
   DiagonalMatrix[Diagonal[mat]]
symmetrize2[mat_] := With[{n=Length[mat]},
   Table[If[i<j,mat[[j,i]],mat[[i,j]]], {i,n}, {j,n}]]
symmetrize3[mat_] := With[{n=Length[mat]},
   Table[Join[mat[[i,1;;i]],mat[[i+1;;n,i]]], {i,n}]]
Daniel Lichtblau
Wolfram Research