Trailing-Edge
-
PDP-10 Archives
-
decuslib20-02
-
decus/20-0026/mtds.doc
There are 2 other files named mtds.doc in the archive. Click here to see a list.
SUBROUTINE MTDS
PURPOSE
MULTIPLY A GENERAL MATRIX A ON THE LEFT OR RIGHT BY
INVERSE(T),INVERSE(TRANSPOSE(T)) OR INVERSE(TRANSPOSE(T*T))
THE TRIANGULAR MATRIX T IS STORED COLUMNWISE IN COMPRESSED
FORM, I.E. UPPER TRIANGULAR PART ONLY.
USAGE
CALL MTDS(A,M,N,T,IOP,IER)
DESCRIPTION OF PARAMETERS
A - GIVEN GENERAL MATRIX WHITH M ROWS AND N COLUMNS.
M - NUMBER OF ROWS OF MATRIX A
N - NUMBER OF COLUMNS OF MATRIX A
T - GIVEN TRIANGULAR MATRIX STORED COLUMNWISE UPPER
TRIANGULAR PART ONLY. ITS NUMBER OF ROWS AND
COLUMNS K IS IMPLIED BY COMPATIBILITY.
K = M IF IOP IS POSITIVE,
K = N IF IOP IS NEGATIVE.
T OCCUPIES K*(K+1)/2 STORAGE POSITIONS.
IOP - INPUT VARIABLE FOR SELECTION OF OPERATION
IOP = 1 - A IS REPLACED BY INVERSE(T)*A
IOP =-1 - A IS REPLACED BY A*INVERSE(T)
IOP = 2 - A IS REPLACED BY INVERSE(TRANSPOSE(T))*A
IOP =-2 - A IS REPLACED BY A*INVERSE(TRANSPOSE(T))
IOP = 3 - A IS REPLACED BY INVERSE(TRANSPOSE(T)*T)*A
IOP =-3 - A IS REPLACED BY A*INVERSE(TRANSPOSE(T)*T)
IER - RESULTING ERROR PARAMETER
IER =-1 MEANS M AND N ARE NOT BOTH POSITIVE
AND/OR IOP IS ILLEGAL
IER = 0 MEANS OPERATION WAS SUCCESSFUL
IER = 1 MEANS TRIANGULAR MATRIX T IS SINGULAR
REMARKS
SUBROUTINE MTDS MAY BE USED TO CALCULATE THE SOLUTION OF
A SYSTEM OF EQUATIONS WITH SYMMETRIC POSITIVE DEFINITE
COEFFICIENT MATRIX. THE FIRST STEP TOWARDS THE SOLUTION
IS TRIANGULAR FACTORIZATION BY MEANS OF MFSD, THE SECOND
STEP IS APPLICATION OF MTDS.
SUBROUTINES MFSD AND MTDS MAY BE USED IN ORDER TO CALCULATE
THE PRODUCT TRANSPOSE(A)*INVERSE(B)*A WITH GIVEN SYMMETRIC
POSITIVE DEFINITE B AND GIVEN A EFFICIENTLY IN THREE STEPS
1) TRIANGULAR FACTORIZATION OF B (B=TRANSPOSE(T)*T)
2) MULTIPLICATION OF A ON THE LEFT BY INVERSE(TRANSPOSE(T))
A IS REPLACED BY C=INVERSE(TRANSPOSE(T))*A
3) CALCULATION OF THE RESULT FORMING TRANSPOSE(C)*C
SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
NONE
METHOD
CALCULATION OF X = INVERSE(T)*A IS DONE USING BACKWARD
SUBSTITUTION TO OBTAIN X FROM T*X = A.
CALCULATION OF Y = INVERSE(TRANSPOSE(T))*A IS DONE USING
FORWARD SUBSTITUTION TO OBTAIN Y FROM TRANSPOSE(T)*Y = A.
CALCULATION OF Z = INVERSE(TRANSPOSE(T)*T)*A IS DONE
SOLVING FIRST TRANSPOSE(T)*Y = A AND THEN T*Z = Y, IE.
USING THE ABOVE TWO STEPS IN REVERSE ORDER