NAME
dptsl - solve the linear system Ax = b for a symmetric posi-
tive definite tridiagonal matrix A and vectors b and x.
SYNOPSIS
SUBROUTINE DPTSL (N, DDIAG, DOFFD, DB)
SUBROUTINE SPTSL (N, SDIAG, SOFFD, SB)
SUBROUTINE ZPTSL (N, ZDIAG, ZOFFD, ZB)
SUBROUTINE CPTSL (N, CDIAG, COFFD, CB)
#include <sunperf.h>
void dptsl(int n, double *d, double *e, double *b) ;
void sptsl(int n, float *d, float *e, float *b) ;
void zptsl(int n, doublecomplex *d, doublecomplex *e, doub-
lecomplex *b) ;
void cptsl(int n, complex *d, complex *e, complex *b) ;
ARGUMENTS
N Order of the matrix A. N >= 0.
xDIAG Main diagonal elements of A.
xOFFD Off diagonal elements of A. OFFD(1) through
OFFD(N*1) contains the off diagonal elements;
OFFD(N) is not referenced.
xB On entry, the right-hand side vector b. On exit,
the solution vector x.
SAMPLE PROGRAM
PROGRAM TEST
IMPLICIT NONE
C
INTEGER N
PARAMETER (N = 4)
C
DOUBLE PRECISION B(N), SUBD(N), DIAG(N)
C
EXTERNAL DPTSL
C
C Initialize the arrays SUBD and DIAG to store the subdiagonal
C and diagonal of the tridiagonal positive definite matrix A
C shown below. Initialize the array B to store the right hand
C side vector b shown below.
C
C 2 -1 6
C A = -1 2 -1 b = 12
C -1 2 -1 12
C -1 2 6
C
DATA SUBD / -1.0D0, -1.0D0, -1.0D0, 8D8 /
DATA DIAG / 4*2.0D0 /
DATA B / 6.0D0, 1.2D1, 1.2D1, 6.0D0 /
C
PRINT 1000
PRINT 1010, DIAG(1), SUBD(1)
PRINT 1020, SUBD(1), DIAG(2), SUBD(2)
PRINT 1030, SUBD(2), DIAG(3), SUBD(3)
PRINT 1040, SUBD(3), DIAG(4)
PRINT 1050
PRINT 1060, B
CALL DPTSL (N, DIAG, SUBD, B)
PRINT 1070
PRINT 1060, B
C
1000 FORMAT (1X, 'A:')
1010 FORMAT (1X, 2(2X, F4.1))
1020 FORMAT (1X, 3(2X, F4.1))
1030 FORMAT (1X, 6X, 3(2X, F4.1))
1040 FORMAT (1X, 12X, 2(2X, F4.1))
1050 FORMAT (/1X, 'b:')
1060 FORMAT (3X, F6.1)
1070 FORMAT (/1X, 'A**(-1) * b:')
C
END
SAMPLE OUTPUT
A:
2.0 -1.0
-1.0 2.0 -1.0
-1.0 2.0 -1.0
-1.0 2.0
b:
6.0
12.0
12.0
6.0
A**(-1) * b:
18.0
30.0
30.0
18.0
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |