```Date: Jul 8, 1996 2:19 AM
Author: Paul Abbott
Subject: Re: VectorToMatrix

Robert Pratt wrote:> I want to define a function VectorToMatrix[list_, n_] that behaves as> follows:> > VectorToMatrix[{a,b,c,d,e,f,g,h,i,j}, 4]//MatrixForm> > 0 a b c d> 0 0 e f g> 0 0 0 h i> 0 0 0 0 j> > Now n can be determined from Length[list], which will always be equal > to n choose 2 for some n.  But I would rather input n to save that> computation.  (I will be doing this for a lot of vectors.)See The Mathematica Journal 4(1):34.  That example converts a vector into a symmetric matrix.  It is easy to modify this example to meet your needs:To convert a vector into a symmetric matrix, note that an m x m symmetric  matrix corresponds to a vector of length m(m+1)/2 (a so-called traingular  number). Inverting this formula: In[1]:= dim[n_] = (m /. Solve[m(m+1)/2 == n, m] // Last)Out[1]= -1 + Sqrt[1 + 8 n]        ------------------               2In[2]:= vec = {a,b,c,d,e,f,g,h,i,j};In[3]:= dim[Length[vec]]Out[3]= 4This is fast so you might as well compute it.In[4]:= VectorToMatrix[vec_ /; IntegerQ[dim[Length[vec]]]] :=	Module[{m = dim[Length[vec]],i,j},		Table[If[i>=j,0,vec[[j + (i-1)(m-i/2)-1]]],  			{i, m}, {j, m+1} ]] In[5]:= VectorToMatrix[vec] // MatrixFormOut[17]//MatrixForm=0   a   b   c   d0   0   e   f   g0   0   0   h   i0   0   0   0   jCheers,	Paul _________________________________________________________________ Paul AbbottDepartment of Physics                       Phone: +61-9-380-2734 The University of Western Australia           Fax: +61-9-380-1014Nedlands WA  6907                         paul@physics.uwa.edu.au AUSTRALIA                           http://www.pd.uwa.edu.au/Paul_________________________________________________________________
```