Overview
Comment: | Initial revision |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | origin/master | trunk |
Files: | files | file ages | folders |
SHA3-256: |
08b3d9299edb41c2b4bb97aa258d64b3 |
User & Date: | gawthrop@users.sourceforge.net on 1998-08-17 12:41:37 |
Other Links: | branch diff | manifest | tags |
Context
1998-08-17
| ||
12:41:38 |
Renamed mtt_solve to mtt_solve_svd -- now also have mtt_solve_lu check-in: 4793b6bfca user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
12:41:37 | Initial revision check-in: 08b3d9299e user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
09:43:04 | Initial revision check-in: 47506c39eb user: gawthrop@users.sourceforge.net tags: origin/master, trunk | |
Changes
Added mttroot/mtt/bin/trans/p/mtt_solve_lu.p version [a11985cf48].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | PROCEDURE mtt_solve_lu.p(VAR x : StateVector; A : StateMatrix; VAR B : StateVector; n : integer; Small : real); { Linear equation solution via LU factorisation} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % $Id$ % % $Log$ % % Revision 1.2 1998/08/14 12:09:13 peterg % % A passed by value - its destroyed by SVDcm % % % % Revision 1.1 1998/08/13 08:51:57 peterg % % Initial revision % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% } VAR i : integer; wmax,wmin : real; w : StateVector ; v : StateMatrix; (*$I svdcmp.p *) (*$I svbksb.p *) BEGIN{mtt_solve} (* decompose matrix A using SVD *) svdcmp(A,n,n,w,v); (* find maximum singular value *) wmax := 0.0; FOR i := 1 to n DO BEGIN IF (w[i] > wmax) THEN wmax := w[i] END; (* define "small" *) wmin := wmax*Small; (* zero the "small" singular values *) FOR i := 1 to n DO BEGIN IF (w[i] < wmin) THEN w[i] := 0.0 END; (* backsubstitute for B *) svbksb(A,w,v,n,n,B,x); END{mtt_solve}; |
Added mttroot/mtt/bin/trans/p/mtt_solve_svd.p version [0be6796eb4].
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | PROCEDURE mtt_solve(VAR x : StateVector; A : StateMatrix; VAR B : StateVector; n : integer; Small : real); { % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Version control history % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % $Id$ % % $Log$ % % Revision 1.2 1998/08/14 12:09:13 peterg % % A passed by value - its destroyed by SVDcm % % % % Revision 1.1 1998/08/13 08:51:57 peterg % % Initial revision % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% } VAR i : integer; wmax,wmin : real; w : StateVector ; v : StateMatrix; (*$I svdcmp.p *) (*$I svbksb.p *) BEGIN{mtt_solve} (* decompose matrix A using SVD *) svdcmp(A,n,n,w,v); (* find maximum singular value *) wmax := 0.0; FOR i := 1 to n DO BEGIN IF (w[i] > wmax) THEN wmax := w[i] END; (* define "small" *) wmin := wmax*Small; (* zero the "small" singular values *) FOR i := 1 to n DO BEGIN IF (w[i] < wmin) THEN w[i] := 0.0 END; (* backsubstitute for B *) svbksb(A,w,v,n,n,B,x); END{mtt_solve}; |