From: pmontgom@euphemia.math.ucla.edu (Peter Montgomery)
Subject: Re: Determinant
Organization: UCLA Mathematics Department
Date: Wed, 8 Apr 92 02:10:00 GMT

In article <7286@laas.laas.fr> ratier@lio.laas.fr (Nicolas Ratier) writes:
>
>   I have to compute the determinant of a block pentadiagonal matrix, exactly
> a matrix look like :
>
>              / A  B  C                 \
>             |  B  A  B  C               |
>             |  C  B  A  B  C            |
>             |     C  B  A  B  C         |
>             |        -------------      |
>             |           -------------   |
>             |           C  B  A  B  C   |
>             |              C  B  A  B   |
>              \                C  B  A  /
>
>where    A is a pentadiagonal matrix
>         B is a   tridiagonal matrix
>         C is a      diagonal matrix
>
>and besides A, B, C are commuting pairwise (i.e. AB = BA, AC = CA, BC = CB)
>
>
>   In fact, it is easy to find a efficient method to compute the determinant
>of the pentadiagonal matrix by Gauss elimination way. What i need is a formula
>for computing the determinant of a block pentadiagonal matrix from the
>determinant of each (commuting) element.
>
#	The problem cannot be solved as proposed.  In this example, 
#	A and B are 3 x 3 diagonal matrices (which necessarily
# 	commute) and C = 0.  The determinant expression is not
#	a function of det(A) = a1*a2*a3 and det(B) = b1*b2*b3 alone.

with(linalg):
M := array(1..9, 1..9);
for i from 1 to 9 do
    for j from 1 to 9 do
        dif := abs(i-j);
	isub := 1 + ((i-1) mod 3);
        if (dif = 0) then
	    M[i,j] := a.isub;
	elif (dif = 3) then
            M[i,j] := b.isub;
        else
            M[i,j] := 0;
        fi; 
        
    od;
od;
print(M);
print(factor(det(M)));
;quit;


    |\^/|      MAPLE V
._|\|   |/|_.  Copyright (c) 1981-1990 by the University of Waterloo.
 \  MAPLE  /   All rights reserved.  MAPLE is a registered trademark of
 <____ ____>   Waterloo Maple Software.
      |        Type ? for help.

	(source listing deleted)

> print(M);
                     [ a1   0   0  b1   0   0   0   0   0 ]
                     [                                    ]
                     [  0  a2   0   0  b2   0   0   0   0 ]
                     [                                    ]
                     [  0   0  a3   0   0  b3   0   0   0 ]
                     [                                    ]
                     [ b1   0   0  a1   0   0  b1   0   0 ]
                     [                                    ]
                     [  0  b2   0   0  a2   0   0  b2   0 ]
                     [                                    ]
                     [  0   0  b3   0   0  a3   0   0  b3 ]
                     [                                    ]
                     [  0   0   0  b1   0   0  a1   0   0 ]
                     [                                    ]
                     [  0   0   0   0  b2   0   0  a2   0 ]
                     [                                    ]
                     [  0   0   0   0   0  b3   0   0  a3 ]

> print(factor(det(M)));
                           2       2     2       2     2       2
               a3 a2 a1 (a3  - 2 b3 ) (a2  - 2 b2 ) (a1  - 2 b1 )

> ;quit;
--
        Peter L. Montgomery              Internet: pmontgom@math.ucla.edu
        Department of Mathematics, UCLA, Los Angeles, CA  90024-1555  USA
Go Bruins!  This Bruin PhD wants to go solve your problems.
Interests include computational mathematics, compilers, and number theory.