Re: Matrix decomposition with NullSpace and QRDecomposit
- To: mathgroup at smc.vnet.net
- Subject: [mg64153] Re: [mg64139] Matrix decomposition with NullSpace and QRDecomposit
- From: Pratik Desai <pdesai1 at umbc.edu>
- Date: Thu, 2 Feb 2006 19:09:05 -0500 (EST)
- References: <200602020506.AAA16223@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
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
- References:
- Matrix decomposition with NullSpace and QRDecomposit
- From: Tobias Burnus <burnus@gmx.de>
- Matrix decomposition with NullSpace and QRDecomposit