NAME dspsl - 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-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |