MathGroup Archive 1998

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

Search the Archive

Re: Assignment to a block inside a matrix

John JOWETT wrote:

>       I have a package that works with the "symplectic unit matrix"
> defined for an n-degree of freedom Hamiltonian system by
> symJ[n_Integer]:=
>   Block[{s},s=Table[0,{2n},{2n}];
>     Do[
>        s[[{k+1,k+2},{k+1,k+2}]]={{0,1},{-1,0}},
>        {k,0,2n-2,2}
>       ];s]
> I.e. the definition involves the assignment to a 2 by 2 sub-matrix. Can
> someone tell me authoritatively whether this programming  construct is
> correct or whether I need to rewrite the function  using ReplacePart or
> something?   

This is fine (very much looks like a bug in the latest Windows version).

BTW, here is a recursive alternative:

In[1]:= << "LinearAlgebra`MatrixManipulation`" In[2]:= zero[n_] :=
Table[0, {n}, {2}] In[3]:= symJ[1] = {{0, 1}, {-1, 0}};  In[4]:=
symJ[n_] := symJ[n] = 
   BlockMatrix[{{symJ[n - 1], zero[2n - 2]}, 
     {Transpose[zero[2n - 2]], symJ[1]}}]


Paul Abbott                                   Phone: +61-8-9380-2734
Department of Physics                           Fax: +61-8-9380-1014
The University of Western Australia            Nedlands WA  6907  AUSTRALIA                   

            God IS a weakly left-handed dice player

  • Prev by Date: Re: output form
  • Next by Date: Bug? Can suddenly not edit with LINUX Frontend
  • Prev by thread: Re: Assignment to a block inside a matrix
  • Next by thread: A web page for gee-whizz Mathematica examples?