Child: [22d1d1] (diff)

Download this file

SVDLib2.def    53 lines (42 with data), 2.6 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
DEFINITION MODULE SVDLib2;
(*------------------------------------------------------------------------*)
(* Modul zur Singul"arwertzerlegung. *)
(*------------------------------------------------------------------------*)
(*
* $Id: SVDLib2.def,v 1.1 2018/01/16 09:20:20 mriedl Exp mriedl $
*)
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 SVDLib2.