NUMAL Section 3.1.1.1.1.3.2
BEGIN SECTION : 3.1.1.1.1.3.2 (, december 1978 )
AUTHORS : J.R.BUNCH,L.KAUFMAN,B.N.PARLETT.
CONTRIBUTOR : C.H.CONVENT.
INSTITUTE : UNIVERSITY OF AMSTERDAM.
RECEIVED : 770712.
BRIEF DESCRIPTION :
DETERMSYM2 CALCULATES THE DETERMINANT OF A SYMMETRIC MATRIX.
THE LDL' DECOMPOSITION OF THE MATRIX, AS PRODUCED BY DECSYM2,
SHOULD BE AVAILABLE.
KEYWORDS :
GENERAL SYMMETRIC MATRIX,
LDL' DECOMPOSITION,
BLOCK DIAGONAL PIVOTING;
CALLING SEQUENCE :
THE HEADING OF THE PROCEDURE READS :
"REAL" "PROCEDURE" DETERMSYM2(DETAUX,N,AUX);
"VALUE" N;"INTEGER" N;
"ARRAY" DETAUX;"INTEGER" "ARRAY" AUX;
"CODE" 34294;
DETERMSYM2 : DELIVERS THE CALCULATED VALUE OF THE DETERMINANT OF
THE MATRIX;
THE MEANING OF THE FORMAL PARAMETERS IS :
DETAUX : <ARRAY IDENTIFIER>;
"ARRAY" DETAUX[1:N];
ENTRY : THE ARRAY DETAUX AS PRODUCED BY DECSYM2;
N : <ARITHMETIC EXPRESSION>;
THE ORDER OF THE ARRAY DETAUX
( = THE ORDER OF THE MATRIX );
AUX : <ARRAY IDENTIFIER>;
"INTEGER" "ARRAY" AUX[2:5];
ENTRY : THE ARRAY AUX AS PRODUCED BY DECSYM2;
PROCEDURES USED : NONE.
RUNNING TIME : PROPORTIONAL TO N;
METHOD AND PERFORMANCE :
FIRST OF ALL DECSYM2 SHOULD BE CALLED TO PERFORM THE LDL'
DECOMPOSITION OF THE SYMMETRIC MATRIX,ACCORDING TO A METHOD DUE
TO BUNCH,KAUFMAN AND PARLETT (SEE [1],[2]).
IF A 1*1 BLOCK HAS BEEN COMPUTED FOR D THEN DETAUX[I] CONTAINS
THE VALUE OF D[I]. IF A 2*2 BLOCK HAS BEEN COMPUTED FOR D THEN
DETAUX[I]=1 AND DETAUX[I+1] CONTAIN THE VALUE OF THE DETERMINANT
OF THE CORRESPONDING 2*2 BLOCK.
THE COMPUTATION OF THE DETERMINANT IS DONE BY CALCULATING THE
PRODUCT OF THE ELEMENTS OF DETAUX.
REFERENCES :
1) J.R.BUNCH,L.KAUFMAN.
SOME STABLE METHODS FOR CALCULATING INERTIA AND SOLVING
SYMMETRIC LINEAR SYSTEMS.
MATHEMATICS OF COMPUTATION 31,P 163-180,1977.
2) J.R.BUNCH,L.KAUFMAN,B.N.PARLETT.
DECOMPOSITION OF A SYMMETRIC MATRIX.
NUMERISCHE MATHEMATIK 27,P 95-109,1976.
EXAMPLE OF USE :
"BEGIN" "COMMENT" EXAMPLE OF USE OF THE PROCEDURE DETERMSYM2;
"INTEGER" I,J;"REAL" TOL,DETERMINANT;
"REAL" "ARRAY" A[1:5,1:5],DETAUX[1:5];
"INTEGER" "ARRAY" AUX[2:5],P[1:5];
A[1,1]:=A[1,2]:=-3;A[1,3]:=-18;A[1,4]:=-30;A[1,5]:=18;
A[2,2]:=-1;A[2,3]:=-4;A[2,4]:=-48;A[2,5]:=8;
A[3,3]:=-6;A[3,4]:=-274;A[3,5]:=6;
A[4,4]:=119;A[4,5]:=19;
A[5,5]:=216;
"FOR" I:=1 "STEP" 1 "UNTIL" 5 "DO"
"FOR" J:=I+1 "STEP" 1 "UNTIL" 5 "DO" A[J,I]:=A[I,J];
OUTPUT(61,"(""("THE COEFFICIENT MATRIX :")",/")");
"FOR" I:=1 "STEP" 1 "UNTIL" 5 "DO"
"BEGIN" "FOR" J:=1 "STEP" 1 "UNTIL" 5 "DO"
OUTPUT(61,"("-2ZD,4B")",A[I,J]);
OUTPUT(61,"("/")")
"END";
TOL:="-14;
DECSYM2(A,5,TOL,AUX,P,DETAUX);
"IF" AUX[2]=1 "THEN"
OUTPUT(61,"("/,"("THE MATRIX IS SYMMETRIC")"")")
"ELSE" OUTPUT(61,"("/,"("THE MATRIX IS ASYMMETRIC.THE ")",
"("RESULTS ARE MEANINGLESS")"")");
DETERMINANT:=DETERMSYM2(DETAUX,5,AUX);
OUTPUT(61,"("/,"("THE DETERMINANT OF THE MATRIX : ")",
3Z3D.2D")",DETERMINANT)
"END"
THIS DELIVERS AS RESULT :
THE COEFFICIENT MATRIX :
-3 -3 -18 -30 18
-3 -1 -4 -48 8
-18 -4 -6 -274 6
-30 -48 -274 119 19
18 8 6 19 216
THE MATRIX IS SYMMETRIC.
THE DETERMINANT OF THE MATRIX : 168.00
SOURCE TEXT :
"CODE" 34294;