LANBPRO Lanczos bidiagonalization with partial reorthogonalization. LANBPRO computes the Lanczos bidiagonalization of a rectangular matrix using partial reorthogonalization. [U_k,B_k,V_k,R,ierr,work] = LANBPRO(A,K,R0,OPTIONS,U_old,B_old,V_old) [U_k,B_k,V_k,R,ierr,work] = LANBPRO('Afun','Atransfun',M,N,K,R0, ... OPTIONS,U_old,B_old,V_old) Computes K steps of the Lanczos bidiagonalization algorithm with partial reorthogonalization (BPRO) on the M-by-N matrix A with M-by-1 starting vector R0, producing a lower bidiagonal K-by-K matrix B_k, an N-by-K matrix V_k, an M-by-K matrix U_k and a M-by-1 vector R such that A*V_k = U_k*B_k + R Partial reorthogonalization is used to keep the columns of V_K and U_k semiorthogonal: MAX(MAX(ABS(EYE(K) - V_K'*V_K))) <= OPTIONS.delta and MAX(MAX(ABS(EYE(K) - U_K'*U_K))) <= OPTIONS.delta. B B_k = LANBPRO(...) returns the bidiagonal matrix only. The first input argument is either a real matrix, or a string containing the name of an M-file which applies a linear operator to the columns of a given matrix. In the latter case, the second input must be the name of an M-file which applies the transpose of the same linear operator to the columns of a given matrix, and the third and fourth arguments must be M and N, the dimensions of then problem. The OPTIONS structure is used to control the reorthogonalization: OPTIONS.delta: Desired level of orthogonality (default = sqrt(eps/K)). OPTIONS.eta : Level of orthogonality after reorthogonalization (default = eps^(3/4)/sqrt(K)). OPTIONS.cgs : Flag for switching between different reorthogonalization algorithms: 0 = iterated modified Gram-Schmidt (default) 1 = iterated classical Gram-Schmidt OPTIONS.elr : If OPTIONS.elr = 1 (default) then extended local reorthogonalization is enforced. OPTIONS.onesided : If OPTIONS.onesided = 0 (default) then both the left (U) and right (V) Lanczos vectors are kept semiorthogonal. OPTIONS.onesided = 1 then only the columns of U are are reorthogonalized. OPTIONS.onesided = -1 then only the columns of V are are reorthogonalized. OPTIONS.waitbar : The progress of the algorithm is display graphically. If both R0, U_old, B_old, and V_old are provided, they must contain a partial Lanczos bidiagonalization of A on the form A V_old = U_old B_old + R0 . In this case the factorization is extended to dimension K x K by continuing the Lanczos bidiagonalization algorithm with R0 as a starting vector. The output array work contains information about the work used in reorthogonalizing the u- and v-vectors. work = [ RU PU ] [ RV PV ] where RU = Number of reorthogonalizations of U. PU = Number of inner products used in reorthogonalizing U. RV = Number of reorthogonalizations of V. PV = Number of inner products used in reorthogonalizing V. References: R.M. Larsen, Ph.D. Thesis, Aarhus University, 1998. G. H. Golub & C. F. Van Loan, "Matrix Computations", 3. Ed., Johns Hopkins, 1996. Section 9.3.4. B. N. Parlett, ``The Symmetric Eigenvalue Problem'', Prentice-Hall, Englewood Cliffs, NJ, 1980. H. D. Simon, ``The Lanczos algorithm with partial reorthogonalization'', Math. Comp. 42 (1984), no. 165, 115--142. Rasmus Munk Larsen, Stanford University, 2000