annotate scripts/linear-algebra/krylovb.m @ 3240:2e74d8aa1a20

[project @ 1999-04-07 18:33:23 by jwe]
author jwe
date Wed, 07 Apr 1999 18:34:20 +0000
parents 440b2b28e74a
children f7e4a95916f2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3240
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
1 # Copyright (C) 1993, 1998, 1999 A. Scottedward Hodel
3211
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
2 #
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
3 # This file is part of Octave.
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
4 #
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
5 # Octave is free software; you can redistribute it and/or modify it
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
6 # under the terms of the GNU General Public License as published by the
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
7 # Free Software Foundation; either version 2, or (at your option) any
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
8 # later version.
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
9 #
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
10 # Octave is distributed in the hope that it will be useful, but WITHOUT
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
13 # for more details.
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
14 #
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
15 # You should have received a copy of the GNU General Public License
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
16 # along with Octave; see the file COPYING. If not, write to the Free
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
17 # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
18
3240
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
19 function [Uret,Ucols] = krylovb(A,V,k,eps1,pflg);
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
20 # function [U,Ucols] = krylovb(A,V,k{,eps1,pflg});
3211
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
21 # construct orthogonal basis U of block Krylov subspace;
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
22 # [V AV A^2*V ... A^(k+1)*V];
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
23 # method used: householder reflections to guard against loss of
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
24 # orthogonality
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
25 # eps1: threshhold for 0 (default: 1e-12)
3240
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
26 # pflg: permutation flag
3211
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
27 # outputs:
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
28 # returned basis U is orthogonal matrix; due to "zeroed"
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
29 # columns of product, may not satisfy A U = U H identity
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
30 # Ucols: dimension of span of krylov subspace (based on eps1)
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
31 # if k > m-1, krylov returns the Hessenberg decompostion of A.
3240
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
32 #
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
33 # Note: krylovb directly calls and is superseded by krylov.
3211
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
34
3240
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
35 switch(nargin)
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
36 case(3),
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
37 [Uret,H,Ucols] = krylov(A,V,k);
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
38 case(4),
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
39 [Uret,H,Ucols] = krylov(A,V,k,eps1);
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
40 case(5),
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
41 [Uret,H,Ucols] = krylov(A,V,k,eps1,pflg);
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
42 otherwise,
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
43 usage("[Uret,Ucols] = krylovb(A,V,k{,eps1,pflg}); %d arguments passed", ...
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
44 nargin);
2e74d8aa1a20 [project @ 1999-04-07 18:33:23 by jwe]
jwe
parents: 3211
diff changeset
45 endswitch
3211
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
46
440b2b28e74a [project @ 1998-11-05 04:16:22 by jwe]
jwe
parents:
diff changeset
47 endfunction