home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1990-10-15 | 9.9 KB | 291 lines |
-
- (*-------------------------------------------------------------------------
- Definition Module: Linear Algebra Rational Number
-
- Programmierpraktikum SS 1990: JÜRGEN MÜLLER, Heinz Kredel
-
- Contents: Standartoperations for matrix and vector manipulations,
- Gaussian elimination, LU-Decomposition, Solve,
- Inversion, Nullspace, Determinant.
-
- Stand : 27.09.90, Juergen Mueller
- from then date of the file, Heinz Kredel
-
- Remarks: A vector is represented as a list of elements.
- The elements may be integers or rational numbers.
- A matix is represented as a list of vectors.
- In most circumstances these vectors are interpreted row
- vectors, but they can also be interpreted as column vectors.
-
- --------------------------------------------------------------------------*)
-
- DEFINITION MODULE LinAlgRN;
-
- FROM MASSTOR IMPORT LIST;
-
-
- (* --------------- arbitrary matrices ------------- *)
-
- PROCEDURE MDIM(M : LIST): LIST;
- (*Matrix dimension. M is a matrix. MDIM returns
- max(#row,#column) of M. *)
-
-
- PROCEDURE MGET(M, k, l : LIST): LIST;
- (*Matrix get. M is a matrix. k, l are integers, 0 <= k <= #rows(M),
- 0 <= l <= #columns(M). MGET returns the element M(k,l) of matrix M. *)
-
-
- PROCEDURE MSET(M, k, l, x : LIST): LIST;
- (*Matrix set. M is a matrix. k, l are integers, 0 <= k <= #rows(M),
- 0 <= l <= #columns(M). MSET sets the element M(k,l) to x.
- The new matrix is returned. *)
-
-
- PROCEDURE VDELEL(V, i : LIST): LIST;
- (*Vector delete element. V is a vector. The i-th element of V
- is deleted. 0 <= i <= length(V). *)
-
-
- PROCEDURE MDELCOL(M, i : LIST): LIST;
- (*Matrix delete column. M is a vector of row vectors. In each
- row the i-th element is deleted, 0 <= i <= #columns(M). The new
- matrix is returned. *)
-
-
- PROCEDURE MMINOR(M, i, j : LIST): LIST;
- (*Matrix minor. M is a vector of row vectors. The i-th column,
- 0 <= i <= #rows(M), and in each remaining row the j-th element,
- 0 <= j <= #columns(M), is deleted. *)
-
-
- PROCEDURE MTRANS(M : LIST): LIST;
- (*Matrix transpose. M is a matrix. The transposed matrix is returned. *)
-
-
- PROCEDURE VEL(a, n : LIST): LIST;
- (*Vector elements. A vector of length n with elements a is returned. *)
-
-
- PROCEDURE MFILL(M, m, n: LIST): LIST;
- (*Matrix fill. M is an upper triangular matrix. A (m x n) matrix
- with zeros in the lower triangular part is returned. *)
-
-
- PROCEDURE MRANG(U: LIST): LIST;
- (*Matrix rang. U is an upper triangular matrix from a
- LU-decomposition. The rang of U is returned. *)
-
-
- (* --------------- rational number matrices ------------- *)
-
- PROCEDURE RNMHILBERT(m, n : LIST): LIST;
- (*Rational number matrix HILBERT. m, n integer. A (m x n) rational
- number hilbert matrix is returned. *)
-
-
- PROCEDURE RNUM(m, n : LIST): LIST;
- (*Rational number unit matrix. m, n integer. A (m x n) rational
- number unit matrix is returned. *)
-
-
- PROCEDURE RNVWRITE(A : LIST);
- (*Rational number vector write. A is a rational number vector.
- A is written to the output stream. *)
-
-
- PROCEDURE RNVREAD(): LIST;
- (*Rational number vector read. A rational number vector is
- read from the input stream, and returned. *)
-
-
- PROCEDURE RNMWRITE(A : LIST);
- (*Rational number matrix write. A is a rational number matrix.
- A is written to the output stream. *)
-
-
- PROCEDURE RNMREAD(): LIST;
- (*Rational number matrix read. A rational number matrix is
- read from the input stream, and returned. *)
-
-
- PROCEDURE RNVFIV(A : LIST): LIST;
- (*Rational number vector from integer vector. A is an integer
- vector. A rational number vector with denominators 1
- and nominators equal to the elements of A is returned. *)
-
-
- PROCEDURE RNMFIM(M : LIST): LIST;
- (*Rational number matrix from integer matrix. A is an integer
- matrix. A rational number matrix with denominators 1
- and nominators equal to the elements of A is returned. *)
-
-
- PROCEDURE RNVDIF(A, B : LIST): LIST;
- (*Rational number vector difference. A and B are rational number
- vectors. The rational number vector C = A - B is returned. *)
-
-
- PROCEDURE RNVQ(A, B : LIST): LIST;
- (*Rational number vector quotient. A and B are rational number vectors.
- The rational number vector C = A / FIRST(B) is returned. *)
-
-
- PROCEDURE RNVQF(A : LIST): LIST;
- (*Rational number vector quotient. A is a rational number vector.
- The rational number vector C = A / FIRST(A) is returned. *)
-
-
- PROCEDURE RNVVSUM(A, B : LIST): LIST;
- (*Rational number vector vector sum. A and B are rational number vectors.
- A rational number vector C = A + B is returned. *)
-
-
- PROCEDURE RNVSVSUM(A, B : LIST): LIST;
- (*Rational number vector scalar sum. A and B are rational number vectors.
- A rational number vector C = A + FIRST(B) is returned. *)
-
-
- PROCEDURE RNVSSUM(A : LIST): LIST;
- (*Rational number vector scalar sum. A is a rational number vector.
- A rational number vector ?? C = (a1+a2+...+an) is returned. *)
-
-
- PROCEDURE RNVSVPROD(A, B : LIST): LIST;
- (*Rational number vector scalar vector product. A and B are
- rational number vectors. A rational number vector
- C = (a1*FIRST(B), ..., an*FIRST(B)) is returned. *)
-
-
- PROCEDURE RNVVPROD(A, B : LIST): LIST;
- (*Rational number vector vector product. A and B are
- rational number vectors. A rational number vector
- C = (a1*b1, ..., an*bn) is returned. *)
-
-
- PROCEDURE RNVSPROD(A, B : LIST): LIST;
- (*Rational number vector scalar product. A and B are rational
- number vectors. A rational number C = a1*b1 + ... + an*bn is
- returned. *)
-
-
- PROCEDURE RNVMAX(M : LIST): LIST;
- (*Rational number vector maximum norm. M is a rational number
- vector. A rational number a = maximum absolute value M(i)
- is returned. *)
-
-
- PROCEDURE RNVLC(a, A, b, B : LIST): LIST;
- (*Rational number vector linear combination. A and B are rational
- number vectors. a and b are rational numbers. A rational number vector
- C = a*A + b*B is returned. *)
-
-
- PROCEDURE RNSVPROD(a, A : LIST): LIST;
- (*Rational number vector product with scalar. A is a rational
- number vector. a is a rational number. A rational number vector
- C = a*A is returned. *)
-
-
- PROCEDURE RNMSUM(A, B : LIST): LIST;
- (*Rational number matrix sum. A and B are rational number
- matrices. A rational number matrix C = A + B is returned. *)
-
-
- PROCEDURE RNMDIF(A, B : LIST): LIST;
- (*Rational number matrix difference. A and B are rational number
- matrices. A rational number matrix C = A - B is returned. *)
-
-
- PROCEDURE RNMPROD(A, B : LIST): LIST;
- (*Rational number matrix product. A and B are rational number
- matrices. A rational number matrix C = A * B is returned, if
- the number of coloums of A is equal to the number of rows of B,
- otherwise the empty matrix is returned. *)
-
-
- PROCEDURE RNSMPROD(A, B : LIST): LIST;
- (*Rational number scalar and matrix product. B is a rational
- number matrix. A is a rational number. A rational number matrix
- C = A * B is returned. *)
-
-
- PROCEDURE RNMMAX(M : LIST): LIST;
- (*Rational number matrix maximum norm. M is a rational number
- matrix. A rational number a = maximum absolute value M(i,j)
- is returned. *)
-
-
- PROCEDURE RNMGE(M : LIST): LIST;
- (*Rational number matrix Gaussian elimination. M is a (n x m)
- rational number matrix. A (n x m) rational number matrix
- resulting from Gaussian elimination is returned.
- RNMGELUD is called. *)
-
-
- PROCEDURE RNMDET(M : LIST): LIST;
- (*Rational number matrix determinant, using Gaussian elimination.
- M is a rational number matrix. The determinant of M is returned. *)
-
-
- PROCEDURE RNMDETL(M : LIST): LIST;
- (*Rational number matrix determinant, using Laplace expansion.
- M is a rational number matrix. The determinant of M is returned. *)
-
-
- PROCEDURE RNMGELUD(M : LIST; VAR L, U: LIST);
- (*Rational number matrix Gaussian elimination LU-decomposition.
- M is a rational number matrix represented rowwise. L is a lower
- triangular rational number matrix represented columnwise.
- U is an upper triangular rational number matrix represented rowwise.
- M = L * U for appropriate modifications of L and U.
- The pivot operations are also recorded in L. *)
-
-
- PROCEDURE RNMLT(L, b : LIST): LIST;
- (*Rational matrix lower triangular matrix transformation.
- L is a lower triangular rational number matrix represented
- columnwise as generated by RNMGELUD. b is a rational number
- vector. A rational number vector u = L * b is returned,
- such that if M * x = b and M = L * U, then U * x = u. *)
-
-
- PROCEDURE RNMUT(U, b : LIST): LIST;
- (*Rational matrix upper triangular matrix transformation.
- U is an upper triangular rational number matrix represented rowwise
- as generated by RNMGELUD. b is a rational number vector
- b = L * b' as generated by RNMLT. A rational number vector x,
- such that U * x = b is returned. If no such x exists, then an
- empty vector is returned. If more than one such x exists, then
- for free x(i), x(i) = 0 is taken. *)
-
-
- PROCEDURE RNMSDS(L, U, b : LIST): LIST;
- (*Rational number matrix solve decomposed system.
- L is a lower triangular rational number matrix represented
- columnwise, U is an upper triangular rational number matrix
- represented rowwise. L and U as generated by RNMGELUD.
- If M = L * U, then a rational number vector x, such that
- M * x = b is returned. If no such x exists, then an empty
- vector is returned. If more than one such x exists, then
- for free x(i), x(i) = 0 is taken. *)
-
-
- PROCEDURE RNMINV(A : LIST): LIST;
- (*Rational number matrix inversion. A is a rational number matrix
- represented rowwise. If it exists, the inverse matrix of A is
- returned, otherwise an empty matrix is returned. *)
-
-
- PROCEDURE RNMUNS(U : LIST): LIST;
- (*Rational number matrix upper triangular matrix solution null space.
- U is an upper triangular rational number matrix represented rowwise
- as generated by RNMGELUD. A matrix X of linear independent rational
- number vectors x is returned, such that for each x in X, U * x = 0 holds.
- If only x = 0 satisfies the condition U * x = 0, then the
- matrix X is empty. *)
-
-
- END LinAlgRN.
-
-