MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Matrix decomposition with NullSpace and QRDecomposit


Tobias Burnus wrote:

>(Retried - this time w/o attachment; forget to de-attach it before
>sending the mail - sorry.)
>
>Hello,
>
>I have a Hermitian matrix of the form
>
>( A    B )
>( B'   C ) =: M
>
>(B' = Transpose[B]), of which I want to bring B (5×18) into this form
>{D, O} =
>
> d11 d12 d13 d14 d15 0 0 0 0 0 0 0 0 0 0 0 0 0
> d21 d22 d23 d24 d25 0 0 0 0 0 0 0 0 0 0 0 0 0
> d31 d32 d33 d34 d35 0 0 0 0 0 0 0 0 0 0 0 0 0
> d41 d42 d43 d44 d45 0 0 0 0 0 0 0 0 0 0 0 0 0
> d51 d52 d53 d54 d55 0 0 0 0 0 0 0 0 0 0 0 0 0
>
>where O should be zero. For a simple case I succeeded using
>  Q = QRDecomposition[B]
>  L = NullSpace[Transpose[B]],  (see below)
>but it fails for a more complicated case - there not all (O)ij are zero.
>(See http://www.physik.fu-berlin.de/~tburnus/tmp/MatrixDecomposition.nb )
>
>This is with Mathematica 5.2.
>It works if I set pds1=pds2=...=pds6 and pdp1=...pdp6.
>
>Any ideas?
>
>Besides, does anyone know a quick way to get D Hermitian, currently it
>has triangular form.
>
>Tobias
>
>Excerpt from the notebook
>--------
>HC1 = (.... the matrix ...)
>HC1C := HC1[[Range[1, 5], Range[6, 23]]]
>
>Q = QRDecomposition[
>        Transpose[HC1C]][[1]]
>L = NullSpace[HC1C]
>T = IdentityMatrix[Length[HC1]];
>
>T[[Range[6, 6 + Length[Q] - 1],
>      Range[6, Length[HC1]]]] = Q;
>\!\(\(T\[LeftDoubleBracket]Range[6 + Length[Q], Length[HC1]],
>        Range[6, Length[HC1]]\[RightDoubleBracket]\  = \
>
>Table[L\[LeftDoubleBracket]i\[RightDoubleBracket]\/\@\(\(Conjugate[L]\)\
>\[LeftDoubleBracket]i\[RightDoubleBracket] . L\[LeftDoubleBracket]i\
>\[RightDoubleBracket]\), {i, 1, Length[L]}];\)\)
>
>T=Assuming[
>      pd\[Sigma]1<0&&pd\[Pi]1>0&&pd\[Sigma]2<0&&pd\[Pi]2>0&&pd\[Sigma]3<0&&
>        pd\[Pi]3>0&&pd\[Sigma]4<0&&pd\[Pi]4>0&&pd\[Sigma]5<0&&pd\[Pi]5>0&&
>        pd\[Sigma]6<0&&pd\[Pi]6>0,FullSimplify[T]];
>
>myHC1 = T.HC1.Transpose[T] // FullSimplify
>
>
>  
>
Have you looked at the MatrixManipulation package??
You can manipulate your matrix more effectively

Hope this helps

Pratik


  • Prev by Date: Re: if I open multiple files in Mathematica
  • Next by Date: Matrix decomposition with NullSpace and QRDecomposit
  • Previous by thread: Matrix decomposition with NullSpace and QRDecomposit
  • Next by thread: Matrix decomposition with NullSpace and QRDecomposit