NAME
zspsl - solve the linear system Ax = b for a symmetric
matrix A in packed storage, which has been UDU-factored by
xSPCO or xSPFA, and vectors b and x.
SYNOPSIS
SUBROUTINE DSPSL (DA, N, IPIVOT, DB)
SUBROUTINE SSPSL (SA, N, IPIVOT, SB)
SUBROUTINE ZSPSL (ZA, N, IPIVOT, ZB)
SUBROUTINE CSPSL (CA, N, IPIVOT, CB)
#include <sunperf.h>
void dspsl(double *dap, int n, int *kpvt, double *b) ;
void sspsl(float *sap, int n, int *kpvt, float *b) ;
void zspsl(doublecomplex *zap, int n, int *kpvt, doublecom-
plex *b) ;
void cspsl(complex *cap, int n, int *kpvt, complex *b) ;
ARGUMENTS
xA UDU factorization of the matrix A, as computed by
xSPCO or xSPFA.
N Order of the matrix A. N >= 0.
IPIVOT Pivot vector as computed by xSPCO or xSPFA.
xB On entry, the right-hand side vector b. On exit,
the solution vector x.
SAMPLE PROGRAM
PROGRAM TEST
IMPLICIT NONE
C
INTEGER LENGTA, N
PARAMETER (N = 3)
PARAMETER (LENGTA = (N * N + N) / 2)
C
DOUBLE PRECISION A(LENGTA), B(N), RCOND, WORK(N)
INTEGER IPIVOT(N)
C
EXTERNAL DSPCO, DSPSL
C
C Initialize the array A to store in packed symmetric format
C the matrix A shown below. Initialize the array B to store
C the vector b shown below.
C
C 1 0 4 15
C A = 0 2 0 b = 12
C 4 0 1 15
C
DATA A / 1.0D0, 0.0D0, 2.0D0, 4.0D0, 0.0D0, 1.0D0 /
DATA B / 1.5D1, 1.2D1, 1.5D1 /
C
PRINT 1000
PRINT 1010, A(1), A(2), A(4)
PRINT 1010, A(2), A(3), A(5)
PRINT 1010, A(4), A(5), A(6)
PRINT 1020
PRINT 1030, B
CALL DSPCO (A, N, IPIVOT, RCOND, WORK)
IF ((RCOND + 1.0D0) .EQ. RCOND) THEN
PRINT 1040
END IF
CALL DSPSL (A, N, IPIVOT, B)
PRINT 1050
PRINT 1030, B
C
1000 FORMAT (1X, 'A:')
1010 FORMAT (3(3X, F4.1))
1020 FORMAT (/1X, 'b:')
1030 FORMAT (3X, F4.1)
1040 FORMAT (1X, 'A may be singular to working precision.')
1050 FORMAT (/1X, 'A**(-1) * b:')
C
END
SAMPLE OUTPUT
A:
1.0 0.0 4.0
0.0 2.0 0.0
4.0 0.0 1.0
b:
15.0
12.0
15.0
A**(-1) * b:
3.0
6.0
3.0
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |