[Date Index]
[Thread Index]
[Author Index]
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
Prev by Date:
**Re: Replacement Rule with Sqrt in denominator. Also Bug in Series**
Next by Date:
**Re: On the foundation of Mathematica, was Re: Foo /: Plus[b_Foo] := b**
Previous by thread:
**Re: Solving matrix equations**
Next by thread:
**CUDA installation**
| |