Determinant and permanent: Difference between revisions
Content added Content deleted
(→{{header|Simula}}: reduced overspecification; conditional index instead of four-branch-if-else in firstMINOR) |
|||
Line 1,978: | Line 1,978: | ||
BEGIN |
BEGIN |
||
INTEGER PROCEDURE LENGTH(A); |
INTEGER PROCEDURE LENGTH(A); ARRAY A; |
||
LENGTH := UPPERBOUND(A, 1) - LOWERBOUND(A, 1) + 1; |
LENGTH := UPPERBOUND(A, 1) - LOWERBOUND(A, 1) + 1; |
||
! Set MAT to the first minor of A dropping row X and column Y ; |
|||
PROCEDURE MINOR(A, X, Y, MAT); ARRAY A, MAT; INTEGER X, Y; |
|||
BEGIN |
BEGIN |
||
INTEGER I, J, M; M := LENGTH(A) - 1; |
INTEGER I, J, rowA, M; M := LENGTH(A) - 1; ! not a constant; |
||
FOR I := 1 STEP 1 UNTIL M DO |
FOR I := 1 STEP 1 UNTIL M DO BEGIN |
||
⚫ | |||
FOR J := 1 STEP 1 UNTIL M DO |
FOR J := 1 STEP 1 UNTIL M DO |
||
⚫ | |||
⚫ | |||
END |
|||
MAT(I, J) := A(I, J) |
|||
ELSE IF I >= X AND J < Y THEN |
|||
MAT(I, J) := A(I + 1, J) |
|||
⚫ | |||
MAT(I, J) := A(I, J + 1) |
|||
ELSE ! I > X AND J > Y ; |
|||
⚫ | |||
END |
|||
END MINOR; |
END MINOR; |
||
Line 2,045: | Line 2,039: | ||
INTEGER I, J; |
INTEGER I, J; |
||
FOR I := 1 STEP 1 UNTIL SIZE DO |
FOR I := 1 STEP 1 UNTIL SIZE DO BEGIN |
||
! may be need here: INIMAGE; |
|||
FOR J := 1 STEP 1 UNTIL SIZE DO |
FOR J := 1 STEP 1 UNTIL SIZE DO |
||
A(I, J) := INREAL |
A(I, J) := INREAL |
||
⚫ | |||
OUTTEXT("DETERMINANT ... : "); OUTREAL(DET (A), 10, 20); OUTIMAGE; |
OUTTEXT("DETERMINANT ... : "); OUTREAL(DET (A), 10, 20); OUTIMAGE; |
||
OUTTEXT("PERMANENT ..... : "); OUTREAL(PERM(A), 10, 20); OUTIMAGE; |
OUTTEXT("PERMANENT ..... : "); OUTREAL(PERM(A), 10, 20); OUTIMAGE; |
||
END |
END |
||
COMMENT THE FIRST INPUT IS THE SIZE OF THE MATRIX, FOR EXAMPLE: |
|||
! FOR EXAMPLE: |
|||
COMMENT |
|||
! 2 |
! 2 |
||
! 1 2 |
! 1 2 |
||
Line 2,073: | Line 2,066: | ||
! PERMANENT: 6778800.0 ; |
! PERMANENT: 6778800.0 ; |
||
END |
END</lang> |
||
</lang> |
|||
Input: |
Input: |
||
<pre> |
<pre> |