Re: Assignment to a block inside a matrix
- To: mathgroup@smc.vnet.net
- Subject: [mg10702] Re: Assignment to a block inside a matrix
- From: Paul Abbott <paul@physics.uwa.edu.au>
- Date: Fri, 30 Jan 1998 04:24:37 -0500
- Organization: University of Western Australia
- References: <6ahnqi$phs@smc.vnet.net>
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]}}]
Cheers,
Paul
____________________________________________________________________
Paul Abbott Phone: +61-8-9380-2734
Department of Physics Fax: +61-8-9380-1014
The University of Western Australia Nedlands WA 6907
mailto:paul@physics.uwa.edu.au AUSTRALIA
http://www.pd.uwa.edu.au/~paul
God IS a weakly left-handed dice player
____________________________________________________________________