*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 ____________________________________________________________________