PDF version (NAG web site
, 64-bit version, 64-bit version)
NAG Toolbox: nag_sparse_direct_real_gen_solve (f11mf)
Purpose
nag_sparse_direct_real_gen_solve (f11mf) solves a real sparse system of linear equations with multiple right-hand sides given an
factorization of the sparse matrix computed by
nag_sparse_direct_real_gen_lu (f11me).
Syntax
[
b,
ifail] = f11mf(
trans,
iprm,
il,
lval,
iu,
uval,
b, 'n',
n, 'nrhs_p',
nrhs_p)
[
b,
ifail] = nag_sparse_direct_real_gen_solve(
trans,
iprm,
il,
lval,
iu,
uval,
b, 'n',
n, 'nrhs_p',
nrhs_p)
Description
nag_sparse_direct_real_gen_solve (f11mf) solves a real system of linear equations with multiple right-hand sides
or
, according to the value of the argument
trans, where the matrix factorization
corresponds to an
decomposition of a sparse matrix stored in compressed column (Harwell–Boeing) format, as computed by
nag_sparse_direct_real_gen_lu (f11me).
In the above decomposition is a lower triangular sparse matrix with unit diagonal elements and is an upper triangular sparse matrix; and are permutation matrices.
References
None.
Parameters
Compulsory Input Parameters
- 1:
– string (length ≥ 1)
-
Specifies whether
or
is solved.
- is solved.
- is solved.
Constraint:
or .
- 2:
– int64int32nag_int array
-
The column permutation which defines
, the row permutation which defines
, plus associated data structures as computed by
nag_sparse_direct_real_gen_lu (f11me).
- 3:
– int64int32nag_int array
-
The dimension of the array
il
must be at least
as large as the dimension of the array of the same name in
nag_sparse_direct_real_gen_lu (f11me)
Records the sparsity pattern of matrix
as computed by
nag_sparse_direct_real_gen_lu (f11me).
- 4:
– double array
-
The dimension of the array
lval
must be at least
as large as the dimension of the array of the same name in
nag_sparse_direct_real_gen_lu (f11me)
Records the nonzero values of matrix
and some nonzero values of matrix
as computed by
nag_sparse_direct_real_gen_lu (f11me).
- 5:
– int64int32nag_int array
-
The dimension of the array
iu
must be at least
as large as the dimension of the array of the same name in
nag_sparse_direct_real_gen_lu (f11me)
Records the sparsity pattern of matrix
as computed by
nag_sparse_direct_real_gen_lu (f11me).
- 6:
– double array
-
The dimension of the array
uval
must be at least
as large as the dimension of the array of the same name in
nag_sparse_direct_real_gen_lu (f11me)
Records some nonzero values of matrix
as computed by
nag_sparse_direct_real_gen_lu (f11me).
- 7:
– double array
-
The first dimension of the array
b must be at least
.
The second dimension of the array
b must be at least
.
The by right-hand side matrix .
Optional Input Parameters
- 1:
– int64int32nag_int scalar
-
Default:
the first dimension of the array
b.
, the order of the matrix .
Constraint:
.
- 2:
– int64int32nag_int scalar
-
Default:
the second dimension of the array
b.
, the number of right-hand sides in .
Constraint:
.
Output Parameters
- 1:
– double array
-
The first dimension of the array
b will be
.
The second dimension of the array
b will be
.
The by solution matrix .
- 2:
– int64int32nag_int scalar
unless the function detects an error (see
Error Indicators and Warnings).
Error Indicators and Warnings
Errors or warnings detected by the function:
-
-
Constraint: .
Constraint: .
Constraint: .
On entry, .
Constraint: or .
-
-
Incorrect row permutations in array
iprm.
-
-
Incorrect column permutations in array
iprm.
-
An unexpected error has been triggered by this routine. Please
contact
NAG.
-
Your licence key may have expired or may not have been installed correctly.
-
Dynamic memory allocation failed.
Accuracy
For each right-hand side vector
, the computed solution
is the exact solution of a perturbed system of equations
, where
is a modest linear function of
, and
is the
machine precision, when partial pivoting is used.
If
is the true solution, then the computed solution
satisfies a forward error bound of the form
where
.
Note that
can be much smaller than
, and
can be much larger (or smaller) than
.
Forward and backward error bounds can be computed by calling
nag_sparse_direct_real_gen_refine (f11mh), and an estimate for
can be obtained by calling
nag_sparse_direct_real_gen_cond (f11mg).
Further Comments
nag_sparse_direct_real_gen_solve (f11mf) may be followed by a call to
nag_sparse_direct_real_gen_refine (f11mh) to refine the solution and return an error estimate.
Example
This example solves the system of equations
, where
Here
is nonsymmetric and must first be factorized by
nag_sparse_direct_real_gen_lu (f11me).
Open in the MATLAB editor:
f11mf_example
function f11mf_example
fprintf('f11mf example results\n\n');
n = int64(5);
nz = int64(11);
icolzp = [int64(1); 3; 5; 7; 9; 12];
irowix = [int64(1); 3; 1; 5; 2; 3; 2; 4; 3; 4; 5];
a = [2; 4; 1; -2; 1; 1; -1; 1; 1; 2; 3];
b = [ 1.56, 3.12;
-0.25, -0.50;
3.60, 7.20;
1.33, 2.66;
0.52, 1.04];
spec = 'M';
iprm = zeros(1, 7*n, 'int64');
[iprm, ifail] = f11md( ...
spec, n, icolzp, irowix, iprm);
thresh = 1;
nzlmx = int64(8*nz);
nzlumx = int64(8*nz);
nzumx = int64(8*nz);
[iprm, nzlumx, il, lval, iu, uval, nnzl, nnzu, flop, ifail] = ...
f11me( ...
n, irowix, a, iprm, thresh, nzlmx, nzlumx, nzumx);
trans = 'N';
[x, ifail] = f11mf( ...
trans, iprm, il, lval, iu, uval, b);
disp('Solutions');
disp(x);
f11mf example results
Solutions
0.7000 1.4000
0.1600 0.3200
0.5200 1.0400
0.7700 1.5400
0.2800 0.5600
PDF version (NAG web site
, 64-bit version, 64-bit version)
© The Numerical Algorithms Group Ltd, Oxford, UK. 2009–2015