Re: Block diagonal systems

• To: mathgroup at smc.vnet.net
• Subject: [mg13597] Re: Block diagonal systems
• From: Paul Abbott <paul at physics.uwa.edu.au>
• Date: Fri, 7 Aug 1998 03:08:02 -0400
• Organization: University of Western Australia
• References: <6puia4\$6t2@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```michael ringor wrote:

>     Does anyone have an efficient way of creating a block
>     diagonal matrix, where the matrices along the diagonal are
>     identical m by n matrices?

In[1]:= Needs["LinearAlgebra`MatrixManipulation`"]

the following code should do what you want:

In[2]:= DiagonalBlockMatrix[(a_)?MatrixQ,p_] :=
Module[{m,n,q}, {m,n} = Dimensions[a];
BlockMatrix[DiagonalMatrix[Table[q, {p}]] /.
{0 -> ZeroMatrix[m,n], q -> a}]]

For example,

In[3]:= DiagonalBlockMatrix[{{1, 2, 7}, {3, 4, 9}}, 2]

Out[3]= {{1, 2, 7, 0, 0, 0}, {3, 4, 9, 0, 0, 0}, {0, 0, 0, 1, 2, 7},
{0, 0, 0, 3, 4, 9}}

>     I'm looking for some sort of
>     generalization to DiagonalMatrix[list] where list is sequence of
>     compatible matrices, instead of a scalar list.

This is a more general request.  Here is code that generalizes
DiagonalMatrix where list is sequence of compatible matrices

In[4]:= DiagonalBlockMatrix[l:{_?MatrixQ..}] :=
Module[{m, n, q, i}, {m, n} = Dimensions[First[l]];
BlockMatrix[DiagonalMatrix[Table[q[i], {i, Length[l]}]] /.
{0 -> ZeroMatrix[m, n], q[i_] :> l[[i]]}]] /;
Length[Dimensions[l]] == 3

In[5]:= DiagonalBlockMatrix[
{{{1, 1, 1}, {3, 3, 3}}, {{3, 5, 7}, {9, 9, 9}}}]

Out[5]= {{1, 1, 1, 0, 0, 0}, {3, 3, 3, 0, 0, 0}, {0, 0, 0, 3, 5, 7},
{0, 0, 0, 9, 9, 9}}

There should be an elegant generalization for arbitrary matrices along
the diagonal.

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 at physics.uwa.edu.au  AUSTRALIA
http://www.physics.uwa.edu.au/~paul

God IS a weakly left-handed dice player
____________________________________________________________________

```

• Prev by Date: Displaying steps
• Next by Date: Re: 3d graphs (parametric)
• Previous by thread: Re: Block diagonal systems
• Next by thread: Re: Block diagonal systems