***PURPOSE Solve the real band system A*X=B or TRANS(A)*X=B using
the factors computed by DGBCO or DGBFA.
***CATEGORY D2A2
***TYPE DOUBLE PRECISION (SGBSL-S, DGBSL-D, CGBSL-C)
***KEYWORDS BANDED, LINEAR ALGEBRA, LINPACK, MATRIX, SOLVE
***AUTHOR Moler, C. B., (U. of New Mexico)
***DESCRIPTION
DGBSL solves the double precision band system
A * X = B or TRANS(A) * X = B
using the factors computed by DGBCO or DGBFA.
On Entry
ABD DOUBLE PRECISION(LDA, N)
the output from DGBCO or DGBFA.
LDA INTEGER
the leading dimension of the array ABD .
N INTEGER
the order of the original matrix.
ML INTEGER
number of diagonals below the main diagonal.
MU INTEGER
number of diagonals above the main diagonal.
IPVT INTEGER(N)
the pivot vector from DGBCO or DGBFA.
B DOUBLE PRECISION(N)
the right hand side vector.
JOB INTEGER
= 0 to solve A*X = B ,
= nonzero to solve TRANS(A)*X = B , where
TRANS(A) is the transpose.
On Return
B the solution vector X .
Error Condition
A division by zero will occur if the input factor contains a
zero on the diagonal. Technically this indicates singularity
but it is often caused by improper arguments or improper
setting of LDA . It will not occur if the subroutines are
called correctly and if DGBCO has set RCOND .GT. 0.0
or DGBFA has set INFO .EQ. 0 .
To compute INVERSE(A) * C where C is a matrix
with P columns
CALL DGBCO(ABD,LDA,N,ML,MU,IPVT,RCOND,Z)
IF (RCOND is too small) GO TO ...
DO 10 J = 1, P
CALL DGBSL(ABD,LDA,N,ML,MU,IPVT,C(1,J),0)
10 CONTINUE
***REFERENCES J. J. Dongarra, J. R. Bunch, C. B. Moler, and G. W.
Stewart, LINPACK Users' Guide, SIAM, 1979.
***ROUTINES CALLED DAXPY, DDOT
***REVISION HISTORY (YYMMDD)
780814 DATE WRITTEN
890531 Changed all specific intrinsics to generic. (WRB)
890831 Modified array declarations. (WRB)
890831 REVISION DATE from Version 3.2
891214 Prologue converted to Version 4.0 format. (BAB)
900326 Removed duplicate information from DESCRIPTION section.
(WRB)
920501 Reformatted the REFERENCES section. (WRB)
***END PROLOGUE DGBSL
***FIRST EXECUTABLE STATEMENT DGBSL
Namespace: DotNumerics.ODE.DVodeAssembly: DWSIM.MathOps.DotNumerics (in DWSIM.MathOps.DotNumerics.dll) Version: 1.0.0.0 (1.0.0.0)
Syntax public void Run(
double[] ABD,
int offset_abd,
int LDA,
int N,
int ML,
int MU,
int[] IPVT,
int offset_ipvt,
ref double[] B,
int offset_b,
int JOB
)
Public Sub Run (
ABD As Double(),
offset_abd As Integer,
LDA As Integer,
N As Integer,
ML As Integer,
MU As Integer,
IPVT As Integer(),
offset_ipvt As Integer,
ByRef B As Double(),
offset_b As Integer,
JOB As Integer
)
Request Example
View SourceParameters
- ABD Double
-
DOUBLE PRECISION(LDA, N)
the output from DGBCO or DGBFA.
- offset_abd Int32
-
- LDA Int32
-
INTEGER
the leading dimension of the array ABD .
- N Int32
-
INTEGER
the order of the original matrix.
- ML Int32
-
INTEGER
number of diagonals below the main diagonal.
- MU Int32
-
INTEGER
number of diagonals above the main diagonal.
- IPVT Int32
-
INTEGER(N)
the pivot vector from DGBCO or DGBFA.
- offset_ipvt Int32
-
- B Double
-
DOUBLE PRECISION(N)
the right hand side vector.
- offset_b Int32
-
- JOB Int32
-
INTEGER
= 0 to solve A*X = B ,
= nonzero to solve TRANS(A)*X = B , where
TRANS(A) is the transpose.
See Also