Skip to content
/ GKD Public

A Golub-Kahan Davidson Method for Accurately Computing a Few Singular Triplets

License

Notifications You must be signed in to change notification settings

sgoldenCS/GKD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GKD

A Golub-Kahan Davidson Method for Accurately Computing a Few Singular Triplets

Usage:

Outputs:

[U,S,V,H,UD] = GKD(...);

U             Left Singular Vectors
S             Singular Values
V             Right Singular Vectors
H             Convergence History
UD            User Data

Inputs:

[U,S,V,H,UD] = GKD(A,numVals,...)

A             m by n matrix
numValues     number of singular values to return

Additional Options for GKD (Name, Value pairs)

tol           residual norm tolerance
SIGMA         Sets which values are desired ('L' or 'S')
target_fn     Function used for expanding the basis
                   [index,userdata] = target_fn(solverdata,userdata)
stop_fn       Function used for stopping the solver
                   [done,numVals,userdata] = stop_fn(numVals,solverdata,userdata)
maxMV         maximum number of matrix-vector multiplications
maxTime       maximum allowed computed time
normA         norm(A) estimate
display       Prints partial history to console if set
v0            Initial vector for V
b             Block size
minRestart    Number of vectors to maintain after restart
maxBasis      max number of basis vectors in V,U
numOld        number of +k vectors to keep after restart
maxQMR        max number of inner solver iterations
seed          random seed
m             number of rows in A (if A is a function_handle)
n             number of cols in A (if A is a function_handle)
P             preconditioner for AtA
user_data     User supplied data structure for stopping/targeting

Default Options Settings

tol          1e-6
SIGMA        'L' (Largest)
target_fn    Targeting based on first values with residuals above 'tol'
stop_fn      Stopping based on residual tolerance ('tol')
maxMV        inf (No stopping based on matvecs)
maxTime      inf (No stopping based on time)
normA        Largest value seen (Accurate when SIGMA = 'L')
display      0 (Off)
v0           Gaussian random vectors
b            1
minRestart   max(7, numVals + b)
maxBasis     max(15, numVals + 3*b)
numOld       1
maxQMR       0
seed         'shuffle' (sets rng based on current time)
P            1 (Identity matrix)
user_data    []

About

A Golub-Kahan Davidson Method for Accurately Computing a Few Singular Triplets

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages