Karim Belabas on Mon, 13 Feb 2012 20:02:08 +0100

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

 Re: matconcat

```* Andreas Enge [2012-02-13 19:28]:
> A user can easily provide building blocks of the required dimensions using
> matdiagonal, for instance, or c*matid(d), or matrix(m,n) for simple
> building blocks of the right dimension.

Simple test-case :

? A = 1; B = [1,2;3,4]; C = [1,2,3;4,5,6;7,8,9]
? matconcat(matdiagonal([A,B,C]))   \\ current implementation
%2 =
[1 0 0 0 0 0]

[0 1 2 0 0 0]

[0 3 4 0 0 0]

[0 0 0 1 2 3]

[0 0 0 4 5 6]

[0 0 0 7 8 9]

Please provide "easy" building blocks of the required dimensions. :-)
The "best" I can come up with is

{
matconcat([A,          vector(2),   vector(3);
vectorv(2), B,           matrix(2,3);
vectorv(3), matrix(3,2), C]);
}

I believe this demonstrates the usefulness of "extendable 0-blocks", at least.

I kind of like to interpret a scalar as c*Id_{proper dimension}, but this is
maybe less useful.

It would be nice to be able to write

M = matrix(6,6);
M[1,1]        = A;
M[2..3, 2..3] = B;
M[4..,  4..]  = C;

But this currently does not work.

Cheers,

K.B.

P.S: Granted, this would be better solved in matdiagonal() itself, which could
interpret properly "block" diagonal elements (square matrices instead of the
expected scalar).

P.S2;
I found old GP scripts of mine with nasty examples:

vconcat(a,b) = concat(a~, b~)~

rebuild(H, B, dep) =
{ my(top, bot, l,h);

top = concat(vconcat(dep, H), B);
h = matsize(B)[2];
l = matsize(H)[1];
bot = concat(matrix(h,l), matid(h));
vconcat(top, bot);
}

This becomes  \\ current implementation

matconcat([matconcat([dep,H]~), B; 0, matid(#B)])

Marginally nicer, with '1' = 1 * Id_{proper dimension}

matconcat([matconcat([dep,H]~), B; 0, 1])

--
Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1          Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux1.fr/~belabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux1.fr/  [PARI/GP]
`

```

• Follow-Ups:
• References:
• matconcat
• From: Karim Belabas <Karim.Belabas@math.u-bordeaux1.fr>
• Re: matconcat
• From: Andreas Enge <andreas.enge@inria.fr>