Google
 

Trailing-Edge - PDP-10 Archives - decus_20tap2_198111 - 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