MathGroup Archive 1998

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

Search the Archive

Re: Block diagonal systems

  • To: mathgroup at smc.vnet.net
  • Subject: [mg13584] Re: Block diagonal systems
  • From: "Allan Hayes" <hay at haystack.demon.cc.uk>
  • Date: Mon, 3 Aug 1998 03:53:46 -0400
  • References: <6puia4$6t2@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

michael ringor wrote in message <6puia4$6t2 at smc.vnet.net>...
>Hello:  Does anyone have an efficient way of creating a block
>    diagonal matrix, where the matrices along the diagonal are
>    identical m by n matrices?  I'm looking for some sort of
>    generalization to DiagonalMatrix[list] where list is sequence of
>    compatible matrices, instead of a scalar list.
>
>Michael Ringor
>Purdue University
>
>
>

Michael:
Here is a slightly more general function:

BlockDiagonal[diag_]:=
Module[{M,c=0,r=0},
 M =
 Table[0,
   Evaluate[Sequence@@List/@Plus@@Dimensions/@diag]
 ];
 Scan[
  (M[[
   Range[r+1,r+=(Dimensions[#][[1]])],
   Range[c+1,c+=(Dimensions[#][[2]])]
  ]]= #)&,
  diag
 ];
 M
 ]

Test:

BlockDiagonal[{{{1,2},{3,4}},{{2},{4}},{{5,6}}}]//TableForm

1   2   0   0   0

3   4   0   0   0

0   0   2   0   0

0   0   4   0   0

0   0   0   5   6

Allan,

------------------------------------------------------------- Allan
Hayes
Training and Consulting
Leicester UK
http://www.haystack.demon.co.uk
hay at haystack.demon.co.uk
voice: +44 (0)116 271 4198
fax: +44(0)116 271 8642




  • Prev by Date: inquiry
  • Next by Date: Mandelbrot
  • Previous by thread: inquiry
  • Next by thread: Re: Block diagonal systems