Προγραμματισμός FORTRAN > Παραδείγματα > Ορίζουσα Πίνακα

Αρχική-HomeΠαραδείγματαΕντολές-ΣυναρτήσειςΟδηγίες-FAQsΣυνδέσεις-Links

ΠΑΡΑΔΕΙΓΜΑ: ΟΡΙΖΟΥΣΑ ΠΙΝΑΚΑ

Να γραφεί πρόγραμμα που να υπολογίζει την ορίζουσα ενός τετραγωνικού πίνακα Α(nxn). Η ορίζουσα ενός τετραγωνικού πίνακα είναι ίση με την ορίζουσα του ισοδύναμου άνω τριγωνικού πίνακα, και η ορίζουσα του άνω τριγωνικού πίνακα είναι ίση με το γινόμενο των στοιχείων της διαγωνίου του. Ο άνω τριγωνικός πίνακας προκύπτει από τον τετραγωνικό βάσει της ιδιότητας ότι η ορίζουσα δεν μεταβάλλεται αν μια στήλη ή γραμμή πολλαπλασιαστεί με έναν αριθμό και προστεθεί σε μια άλλη στήλη ή γραμμή αντίστοιχα (βλ. απαλοιφή Gauss):

          


Κώδικας:

PROGRAM orizousa
IMPLICIT NONE
  INTEGER, PARAMETER:: Nmax = 50
  INTEGER:: N, i, j, k, l, m, zerodet
  REAL:: A(Nmax,Nmax), c, det
  WRITE(*,*) ' Dwse ti Diastasi tou Pinaka (N):'
  READ(*,*) N
  WRITE(*,*) ' Dwse ta stoixeia tou Pinaka A:'
  READ(*,*) ((A(i,j),j=1,N),i=1,N)
  WRITE(*,*) 'A ='
  WRITE(*,'(3(3F6.1/))') ((A(i,j),j=1,N),i=1,N)
!
  DO k = 1, N-1
! - elegxos gia midenika ston pinaka
    IF (A(k,k) == 0.00) THEN
      zerodet = 1
      DO l = k+1, N
        IF (A(l,k) /= 0.00) THEN
          DO m = k, N
            A(k,m) = A(k,m) + A(l,m)
          END DO
          zerodet = 0
        END IF
      END DO
    END IF
    IF (zerodet == 1) EXIT
! - ypologismos trigwnikou
    DO i = k+1, N
      c = A(i,k)/A(k,k)
      DO j = k, N
        A(i,j) = A(i,j) - c*A(k,j)
      END DO
    END DO
  END DO
  WRITE(*,*) 'Atrig ='
  WRITE(*,'(3(3F6.1/))') ((A(i,j),j=1,N),i=1,N)
! - ypologismos orizousas
  IF (zerodet == 1) THEN
    det = 0.00
  ELSE
    det = A(1,1)
    DO i = 2, N
      det = det * A(i,i)
    END DO
  END IF
  WRITE (*,*) 'Orizousa tou A: |A|=', det
END


Εκτέλεση: ENTER

 Dwse ti Diastasi tou Pinaka (N):
3 ENTER
 Dwse ta stoixeia tou Pinaka A:
2 1 3 4 0 2 -1 3 1 ENTER

 A =
  2.0 1.0 3.0
  4.0 0.0 2.0
 -1.0 3.0 1.0

 Atrig =
  2.0   1.0  3.0
  0.0  -2.0 -4.0
  0.0   0.0 -4.5

 Orizousa tou A: |A|= 18.00000


Σχόλια ή Επεκτάσεις

 


©2006 Δρ. Β. Χ. Μούσας, Επικ. Καθ., e-mail Τ.Ε.Ι. ΑθήναςΤμήμα Πολιτικών Έργων Υποδομής