NUMAL Section 3.2.1.1.2

BEGIN SECTION : 3.2.1.1.2 (June, 1974)

AUTHOR   : C.G. VAN DER LAAN.

CONTRIBUTORS : H.FIOLET, C.G. VAN DER LAAN.

INSTITUTE : MATHEMATICAL CENTRE.

RECEIVED: 731008.

BRIEF DESCRIPTION :

    THIS SECTION CONTAINS THE PROCEDURES EQILBRCOM AND BAKLBRCOM.
    EQILBRCOM EQUILIBRATES A GIVEN MATRIX.
    BAKLBRCOM TRANSFORMS THE EIGENVECTORS OF THE EQUILIBRATED MATRIX
    INTO THE EIGENVECTORS OF THE ORIGINAL MATRIX.

KEYWORDS :

    COMPLEX MATRIX,
    EIGENVECTORS,
    EQUILIBRATION.


SUBSECTION: EQILBRCOM.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "PROCEDURE" EQILBRCOM(A1, A2, N, EM, D, INT); "VALUE" N;
    "INTEGER" N; "ARRAY" A1, A2, EM, D; "INTEGER" "ARRAY" INT;
    "CODE" 34361;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    A1,A2::    <ARRAY IDENTIFIER>;
               "ARRAY" A1,A2[1:N,1:N];
               ENTRY:
               THE REAL PART AND IMAGINARY PART OF THE MATRIX TO  BE
               EQUILIBRATED  MUST BE GIVEN IN THE ARRAYS A1 AND A2,
               RESPECTIVELY;
               EXIT:
               THE REAL PART AND THE IMAGINARY PART OF THE EQUILIBRATED
               MATRIX ARE DELIVERED IN THE ARRAYS A1 AND A2,
               RESPECTIVELY;
    N:         <ARITHMETIC EXPRESSION>;
               THE ORDER OF THE GIVEN MATRIX;
    EM:        <ARRAY IDENTIFIER>;
               "ARRAY"EM[0:7];
               ENTRY:
               EM[0]: THE MACHINE PRECISION;
               EM[6]: THE MAXIMUM ALLOWED NUMBER OF ITERATIONS;
               EXIT:
               EM[7]: THE NUMBER OF ITERATIONS PERFORMED;

    D:         <ARRAY IDENTIFIER>:
               "ARRAY" D[1:N];
               EXIT:
               THE SCALING FACTORS OF THE DIAGONAL SIMILARITY
               TRANSFORMATION;
    INT:       <ARRAY IDENTIFIER>;
               "INTEGER""ARRAY" INT[1:N];
               EXIT:
               INFORMATION CONCERNING THE POSSIBLE INTERCHANGING OF
               SOME ROWS AND CORRESPONDING COLUMNS.

PROCEDURES USED:

    ICHCOL = CP34031,
    ICHROW = CP34332,
    TAMMAT = CP34014,
    MATTAM = CP34015.

RUNNING TIME: PROPORTIONAL TO N * NUMBER OF ITERATIONS.

LANGUAGE: ALGOL 60.

METHOD AND PERFORMANCE: SEE BAKLBRCOM.


SUBSECTION: BAKLBRCOM.

CALLING SEQUENCE:

    THE HEADING OF THE PROCEDURE READS:
    "PROCEDURE" BAKLBRCOM(N, N1, N2, D, INT, VR, VI);
    "VALUE" N, N1, N2; "INTEGER" N, N1, N2; "ARRAY" D, VR, VI;
    "INTEGER" "ARRAY" INT;
    "CODE" 34362;

    THE MEANING OF THE FORMAL PARAMETERS IS:
    N:         <ARITHMETIC EXPRESSION>;
               THE ORDER OF THE MATRIX OF WHICH THE EIGENVECTORS ARE
               CALCULATED;
    N1,N2:     <ARITHMETIC EXPRESSION>;
               THE EIGENVECTORS CORRESPONDING TO THE EIGENVALUES WITH
               INDICES N1,...,N2 ARE TO BE TRANSFORMED;
    D:         <ARRAY IDENTIFIER>:
               "ARRAY" D[1:N];
               ENTRY: THE SCALING FACTORS OF THE DIAGONAL SIMILARITY
               TRANSFORMATION AS DELIVERED BY EQILBRCOM;
    INT:       <ARRAY IDENTIFIER>;
               "INTEGER""ARRAY" INT[1:N];
               ENTRY: INFORMATION DEFINING THE INTERCHANGING OF SOME
               ROWS AND COLUMNS, AS DELIVERED BY EQILBRCOM;

    VR,VI:     <ARRAY IDENTIFIER>;
               "ARRAY" VR,VI[1:N,N1:N2];
               ENTRY:
               THE BACK TRANSFORMATION IS PERFORMED ON THE EIGENVECTORS
               WITH THE REAL PARTS GIVEN IN ARRAY VR AND THE IMAGINARY
               PARTS GIVEN IN ARRAY VI;
               EXIT:
               THE REAL PARTS AND IMAGINARY PARTS OF THE RESULTING
               EIGENVECTORS ARE DELIVERED IN THE COLUMNS OF THE ARRAYS
               VR AND VI, RESPECTIVELY.

PROCEDURES USED: BAKLBR = CP34174.

RUNNING TIME: ROUGHLY PROPORTIONAL TO N * (N2-N1).

LANGUAGE: ALGOL 60.

THE FOLLOWING HOLDS FOR BOTH PROCEDURES:

METHOD AND PERFORMANCE:

    A MATRIX M IS SAID TO BE EQUILIBRATED, WHEN THE DIAGONAL ELEMENTS
    OF M''M - MM'' ARE ZERO, WHERE '' STANDS FOR CONJUGATING
    AND TRANSPOSING.  IN  EQILBRCOM  THE  MATRIX  M  IS  EQUILIBRATED
    BY MEANS OF OSBORNE'S DIAGONAL SIMILARITY TRANSFORMATION WITH
    POSSIBLE INTERCHANGES (OSBORNE, 1960).
    BAKLBRCOM PERFORMS THE CORRESPONDING BACK TRANSFORMATION.
    LET THE EIGENVECTORS OF THE EQUILIBRATED MATRIX BE GIVEN IN THE
    COLUMNS OF MATRIX V. THE EIGENVECTORS OF THE ORIGINAL MATRIX ARE
    OBTAINED BY MULTIPLYING (OR POSSIBLE INTERCHANGING) THE ROWS OF THE
    MATRIX V WITH THE SCALING FACTORS. AS THE SCALING FACTORS ARE REAL
    QUANTITIES, THE TRANSFORMATION IS PERFORMED BY CALLING THE
    PROCEDURE BAKLBR FOR BOTH VR AND VI (DEKKER AND HOFFMANN, 1968).

REFERENCES:

    DEKKER, T.J. AND W.HOFFMANN (1968),
    ALGOL 60 PROCEDURES IN NUMERICAL ALGEBRA, PART 2,
    MATH. CENTRE TRACTS 23, MATHEMATISCH CENTRUM;

    OSBORNE, E.E. (1960),
    ON PRECONDITIONING OF MATRICES,
    JACM., 7, P.338-354;

    PARLETT, B.N. AND C.REINSCH (1969),
    BALANCING A MATRIX FOR CALCULATION OF EIGENVALUES AND
    EIGENVECTORS,
    NUM. MATH., 13, P.293-304;

EXAMPLE OF USE:

    BAKLBRCOM IS USED IN THE PROCEDURE EIGCOM (SEE SECTION 3.3.2.2.2.).
    AS A FORMAL TEST OF THE PROCEDURE EQILBRCOM, THE FOLLOWING MATRIX
    WAS USED:
      1     0  1024*I
      0     1    0
    I/1024  0    2

    "BEGIN" "INTEGER" I,J; "INTEGER""ARRAY" INT[1:3];
    "REAL" "ARRAY" A1,A2[1:3,1:3],EM[0:7],D[1:3];
    EM[0]:=5"-14;EM[6]:=10;
    INIMAT(1,3,1,3,A1,0);INIMAT(1,3,1,3,A2,0);
    A1[1,1]:=A1[2,2]:=1;A1[3,3]:=2;
    A2[1,3]:=2**10;A2[3,1]:=1/2**10;
    EQILBRCOM(A1,A2,3,EM,D,INT);
    OUTPUT(61,"(""("EQUILIBRATED MATRIX:")",/")");
    OUTPUT(61,"("3(D2B),/,2(D2B),"("I")",/,D2B,"("I")",2BD/")",
             A1[1,1],A1[1,2],A1[1,3],A1[2,1],A1[2,2],A1[3,1],A1[3,3]);
    OUTPUT(61,"("/,"("EM[7]:")",5BD/")",EM[7]);
    OUTPUT(61,"(""("D[1:3]: ")",3(3ZD2B),/")",D[1],D[2],D[3]);
    OUTPUT(61,"(""("INT[1:3]: ")",BD,3B,2BD,B4ZD")",
                 INT[1],INT[2],INT[3])
    "END"

    OUTPUT:
    EQUILIBRATED MATRIX:
    1  0  0
    0  1  I
    0  I  2

    EM[7]:     4
    D[1:3]:    1  1024     1
    INT[1:3]:  2     0     0

SOURCE TEXT(S) :
"CODE" 34361;
"CODE" 34362;