splspc_getpath Splspc splspc_gmresba

Splspc >> Splspc > splspc_gmresab

splspc_gmresab

AB-GMRES iterative solver

Calling Sequence

x=splspc_gmresab(A, b)
x=splspc_gmresab(A, b, restart)
x=splspc_gmresab(A, b, restart, maxiter)
x=splspc_gmresab(A, b, restart, maxiter, tol)
[x, nbiter]= splsc_gmresab(...)
[x, nbiter, res]= splsc_gmresab(...)
[x, nbiter, res, result]= splsc_gmresab(...)
[x, nbiter, res, result, itertime]= splsc_gmresab(...)

Parameters

A

sparse matrix (size m x n) : the matrix A in the least square problem min(b-Ax)

b

matrix of double (size m x 1) : the vector b in the least square problem min(b-Ax)

restart

matrix of integer (size 1 x 1) : the number of iterations before restarting the algorithm (default = min(m,n))

maxiter

matrix of integer (size 1 x 1) : the maximum number of iterations in the algorithm (default = min(m,n))

tol

matrix of integer (size 1 x 1) : the threshold of tolerance for stopping the algorithm (default = 1.e-6)

x

matrix of double (size n x 1) : solution vector x in the least square problem min(b-Ax)

nbiter

matrix of integer (size 1 x 1) : total number of necessary iterations to find the solution vector

resid

matrix of double (size 1 x 1) : norm of the computed residual r=A^(T)b-A^(T)Ax

result

matrix of integer (size 1 x 1) : 0 if the solution is reached, 1 otherwise

itertime

matrix of double (size 1 x 1) : computation time for the iterative method

Description

This function solves the sparse linear least squares problem min |Ax-b|, with the AB-GMRES method.

Any optional argument equal to the empty matrix [] is replaced by its default value.

The GMRES method consist in solving the least square problem min(b-Ax), for A square matrix. But when A is not square, GMRES can't be directly used and need to be slightly modified.

The AB-GMRES method consist in solving the least square problem min(b-ABx), ie finding x such as the norm of b-ABx is minimal. This method is mainly useful for underdetermined problems, ie m < n for A of size m x n, because the matrix obtained by doing the product of B and A is of size m x m.

Used without a given preconditioner, the method is simply applied with B=A^(T).

Restart can be used to save memory but is not adviced in this case. The initial vector x0 for the iterative process has been set up to a vector of zeros.

Examples

path = fullfile(splspc_getpath(),"tests","matrices");
filename=fullfile(path,"illc1033.mtx");
A = mmread(filename);
A = A';
e = ones(size(A,2),1);
b = A * e;
// With default settings
x=splspc_gmresab(A,b);
norm(A*x-b)/norm(b)
// Configure the options
restart=1000;
max_iter=3000;
tol=1.e-6;
[x,nbiter,resid,result,itertime]=splspc_gmresab(A,b,restart,max_iter,tol);
// Configure only max_iter
x=splspc_gmresab(A,b,[],max_iter);

Authors

1994 - 2008 - Sparselib++ v1.7 - R. Pozo, K. Remington, and A. Lumsdaine

2010 - National Institute of Informatics - K. Hayami, T. Ito and J.-F. Yin

2011 - DIGITEO - Michael Baudin

2011 - National Institute of Informatics - Benoit Goepfert

See Also

splspc_getpath Splspc splspc_gmresba