Re: Solving matrix equations
- To: mathgroup at smc.vnet.net
- Subject: [mg114606] Re: Solving matrix equations
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Fri, 10 Dec 2010 02:29:14 -0500 (EST)
florian.maurer at schott.com wrote: > Hi everybody, > > can anyone help me in solving the following question: > > For a symmetric 4x4 matrix m which is of rank 4-1=3 there exist 4-1=3 > vectors vi (v1, v2, v3; each vector vi consisting of four elements) which > solve the equations > > vi.m.vj==1 (where i=j) > vi.m.vj==0 (where i#j) > > m={{435.525, -272.311, -107.660, -55.554}, {-272.311, > 441.083, -109.543, -59.229}, {-107.660, -109.543, > 244.850, -27.647}, {-55.554, -59.229, -27.647, 142.430}} > > How to calculate the vectors vi? I was told I can find the vectors vi by > application of the Gram-Schmidt orthogonalization procedure (i.e. > "Orthogonalize") but the vectors caculated with Orthogonalize do not > fullfil the above equations. > > Thanks in advance for your support > > Many regards > > Mr.Mason Actually it is the singular values decomposition that will give these multiplier vectors. You want the "thin" form, that removes singular values of zero and corresponding vectors. To get this one specifies the rank as the second argument (which in practice is a bit inefficient, because MatrixRank uses the SVD). In[53]:= m = {{435.525, -272.311, -107.660, -55.554}, {-272.311, 441.083, -109.543, -59.229}, {-107.660, -109.543, 244.850, -27.647}, {-55.554, -59.229, -27.647, 142.430}}; In[57]:= {u, w, v} = SingularValueDecomposition[m, MatrixRank[m]]; The matrix u (which is same as v) is almost the set of vectors. We just need to renormalize columns by 1/sqrt(corresponding singular value). In[58]:= diag = Tr[w, List]; In[59]:= unew = Map[#/Sqrt[diag] &, u]; In[60]:= Chop[Transpose[unew].m.unew] Out[60]= {{1., 0, 0}, {0, 1., 0}, {0, 0, 1.}} Daniel Lichtblau Wolfram Research