Промышленный лизинг
Методички
IOMATJ = J-1+1OMAT lUMATJ = J-l+IUMAT AD(J) = A(IOMATJ) CD(J) = C(IUMATJ) A(IOMATJ) =0.0 C(IUMATJ) = 0.0 20 CONTINUE CALL MULPUT(AD,D(IIVEC),D(I0VEC),ORDER) DO 22 J=l,ORDER IOMATJ = IOMAT+(J-1)*ORDER IIMATJ = I1MAT+(J-1)*0RDER CALL MULPUT(AD,C(I1MATJ),B(IOMATJ),ORDER) CALL MULPUT(AD,A(IIMATJ),A(IOMATJ)/ORDER) 22 CONTINUE CALL LUDECO(B(I0MAT),ORDER) CALL LUSOLV(B(IOMAT),D(IOVEC)jD(IOVEC),ORDER) DO 24 J=l,ORDER IOMATJ = IOMAT+(J-1)*ORDER CALL LUSOLV(B(IOMAT),C(IOMATJ),C(IOMATJ),ORDER) CALL LUSOLV(B(I0MAT),A(IOMATJ),A(IOMATJ),ORDER) 24 CONTINUE CALL MULPUT(CD,D(I1VEC),D(IUVEC),ORDER) DO 26 J=l,ORDER lUMATJ = IUMAT+(J-1)*0RDER IIMATJ = I1MAT+(J-1)*0RDER CALL MULPUT(CD,A(I1MATJ),B(IUMATJ).ORDER) CALL MULPUT(CD,С(IIMATJ),С(lUMATJ),ORDER) 26 CONTINUE 200 CONTINUE C... DO 30 J=l,ORDSQ lUMATJ = J-l+IUMAT AD(J) = A(IUMATJ)+C(IUMATJ) 30 CONTINUE CALL MULPUT(AD,D(IEVEC),D(IUVEC),ORDER) DO 32 J=l,ORDER lUMATJ = IUMAT+(J-1)*0RDER lEMATJ = IEMAT+(J-1)*0RDER CALL MULPUT(AD,C(IEMATJ),B(IUMATJ),ORDER) CALL MULPUT(AD,A(IEMATJ),B(IUMATJ),ORDER) 32 CONTINUE CALL LUDECO(B(lUMAT),ORDER) CALL LUSOLV(B(IUMAT),D(IUVEC),D(IUVEC).ORDER) C... C...BACK SUBSTITUTION C... DO 40 IBAC = IL,IE I = lE-IBAC+IL lOMAT = 1+(I-1)*0RDSQ lOVEC = 1+(I-1)*0RDER IIVEC = lOVEC+ORDER CALL MULPUT(A(lOMAT),D(IUVEC),D(IOVEC).ORDER) CALL MULPUT(C(IOMAT),D(I1VEC),D(IOVEC).ORDER) 40 C0NTIN4JE C... с... с...SUBROUTINE ТО CALCULATE L-U DECOMPOSITION С...OF А GIVEN MATRIX А AND STORE RESULT IN A C...(NO PIVOTING STRATEGY IS EMPLOYED) C... SUBROUTINE LUDECO(A,ORDER) DIMENSION A(0RDER,1) INTEGER ORDER DO"8 JC=2,ORDER 8 A(1,JC) = A(1,JC)/A(1,1) JRJC = 1 10 CONTINUE JRJC = JRJC+1 JRJCMl = JRJC-1 JRJCPr= JRJC+1 DO 14 JR=JRJC,ORDER SUM = A(JR,JRJC) DO 12 JM=1,JRJCMl 12 SUM = SUM-A(JR,JM)*A(JM,JRJC) 14 A(JR,JRJC) = SUM IF (JRJC.EQ.ORDER) RETURN DO 18 JC = JRJCPl,ORDER SUM = A(JRJC,JC) DO 16 JM=1,JRJCMl 16 SUM = SUM-A(JRJC,JM)*A(JM,JC) 18 A(JRJC,JC) = SUM/A(JRJC,JRJC) GO TO 10 c... C...SUBROUTINE TO MULTIPLY A VECTOR В BY A MATRIX A, C*. . . SUBTRACT RESULT FROM ANOTHER VECTOR С AND STORE C...RESULT IN C. THUS VECTOR С IS OVERWRITTEN. C... SUBROUTINE MULPUT(A,B,C,ORDER) DIMENSION A(1),B(1),C(1) INTEGER ORDER DO 200 JR=1,ORDER SUM = 0.0 DO 100 JC=1,ORDER lA = JR+(JC-1)"ORDER 100 SUM = SUM+A(IA)VB(JC) 200 C(JR) = C(JR)-SUM c... RETURN END с... с...SUBROUTINE то SOLVE LINEAR ALGEBRAIC SYSTEM OF С...EQUATIONS A*C=B AND STORE RESULTS IN VECTOR C. C...MATRIX A IS INPUT IN L-U DECOMPOSITION FORM. C...(NO PIVOTING STRATEGY HAS BEEN EMPLOYED TO C...COMPUTE THE L-U DECOMPOSITION OF THE MATRIX A). SUBROUTINE LUSOLV(A,B,C,ORDER) DIMENSION A(0RDER,1),B(1),C(1) INTEGER ORDER C... C...FIRST L(INV)*B C. . . C(l) » C(l)/A(l,l) DO 14 JR=2,ORDER JRMl s JR-1 SUM = B(JR) DO 12 JM=1,JRM1 12 SUM a SUM-A(JR,JM)*C(JM) 14 C(JR) = SUM/A(JR,JR) C... C...NEXT U(INV) OF L(INV)*B • •.DO 18 JRJR=2,ORDER JR « ORDER-JRJR+1 JRPl « JR+1 SUM = C(JR) DO 16 JMJM = JRPl,ORDER JM = ORDER-JMJM+JRPl 16 SUM = SUM-A(JR,JM)VC(JM) 18 C(JR) * SUM RETURN END 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [ 91 ] 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |