Download this file

SVDLib1.def    55 lines (44 with data), 2.9 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
DEFINITION MODULE SVDLib1;
(*------------------------------------------------------------------------*)
(* Modul zur Singul"arwertzerlegung. *)
(* Modul providing routines to calculate the singual value decomposition *)
(*------------------------------------------------------------------------*)
(* Implementation : Michael Riedl *)
(* Licence : GNU Lesser General Public License (LGPL) *)
(*------------------------------------------------------------------------*)
(* $Id: SVDLib1.def,v 1.1 2018/01/16 09:20:20 mriedl Exp $ *)
FROM Deklera IMPORT PMATRIX;
PROCEDURE SVD(VAR A : PMATRIX; (* Dynamische Matrix A[1..m,1..n] *)
m,n : INTEGER;
VAR W : ARRAY OF LONGREAL; (* n *)
VAR V : PMATRIX); (* n,n *)
(*----------------------------------------------------------------*)
(* Berechnet die Sigul"arwertzerlegung von A = U W V^+ *)
(* wobei U in A zur"uckgegeben wird. *)
(* Dimensionierungen : A[1..m,1..n],W[1..m],V[1..m,1..m]. *)
(* *)
(* Translation of the Eispack routine SVD *)
(* *)
(* Lit.: Golub,G.H.; Reinsch,C.; Numer. Math. 14, 403 (1970) *)
(*----------------------------------------------------------------*)
PROCEDURE SVDSolv(VAR U : PMATRIX; (* m,n *)
Utr : CHAR;
VAR W : ARRAY OF LONGREAL; (* n *)
VAR V : PMATRIX; (* n,n *)
VAR X : ARRAY OF LONGREAL; (* n *)
VAR C : ARRAY OF LONGREAL; (* n *)
m,n : CARDINAL);
(*----------------------------------------------------------------*)
(* Berechnet das lineare Gleichungssystem A X = C, wobei *)
(* A mit der Routine SVD nach A = U W V zerlegt wurde. *)
(* Wenn Utr = {t|T} wird angenommen das U^{tr} uebergeben wurde *)
(*----------------------------------------------------------------*)
PROCEDURE OrderSVD(VAR U : PMATRIX;
VAR W : ARRAY OF LONGREAL;
VAR V : PMATRIX;
m,n : CARDINAL);
(*----------------------------------------------------------------*)
(* Ordnet die SVD-Zerlegung (A = UWV^+) nach Gr"o3e der *)
(* Singulaerwerte W. *)
(*----------------------------------------------------------------*)
END SVDLib1.