Sie sind hier: Fortran > Fortran Programme > Operator Eigenschaften

Operator Eigenschaften

Donnerstag 01. 1970 von
Simon Praetorius
Sei eine binäre Operation ∗ auf eine endliche Menge M:={0,...,n-1} gegeben. Dann lässt sich die binäre Operation ∗:MxM->M durch eine n x n-Matrix A (Operationsmatrix) darstellen.
Beispiel: Multiplikation in Z(5):
Schreiben Sie ein Fortran95-Programm, welches eine zu der algebraische Struktur (M,∗) gehörende quadratische Matrix auf Assoziativität, Kommutativität und ein eventuell exitierendes Einselement hin untersucht!

Lösungshinweise


Eine Operation ∗:MxM → M
  • heißt assoziativ, wenn ∀ i,j,k ∈ M gilt: (i∗j)∗k = i∗(j∗k)
  • heißt kommutativ, wenn ∀ i,j ∈ M gilt: i∗j = j∗i
  • besitzt ein eindeutig bestimmtes Einselement e, wenn ∀ j ∈ M gilt e∗j = j∗e = j

Die Überprüfung soll durch Funktionen realisiert werden.

Lösung


fortran Code
  • PROGRAM operator_eigenschaften
  • IMPLICIT NONE
  • INTEGER :: n,i
  • INTEGER,DIMENSION(:,:),ALLOCATABLE :: m
  •  
  • write(*,*) 'Anzahl elemente n:'
  • read(*,*) n
  • allocate(m(0:n-1,0:n-1))
  •  
  • write(*,*) 'Operationsmatrix A zeilenweise eingeben:'
  • do i=0,n-1
  • read(*,*) m(i,:)
  • end do
  •  
  • write(*,*) 'A ist Assoziativ?',assoziativ(m)
  • write(*,*) 'A ist kommutativ?',kommutativ(m)
  • write(*,*) 'Einselement?',einselement(m)
  •  
  • deallocate(m)
  • stop
  •  
  • CONTAINS
  •  
  • FUNCTION assoziativ(m)
  • INTEGER,DIMENSION(0:,0:),INTENT(in) :: m
  • LOGICAL :: assoziativ
  • INTEGER :: i,j,k
  •  
  • assoziativ=.true.
  • aussen: do i=0,size(m,1)-1
  • do j=0,size(m,1)-1
  • do k=0,size(m,1)-1
  • if(m(m(i,j),k) /= m(i,m(j,k))) then
  • assoziativ=.false.
  • EXIT aussen
  • end if
  • end do
  • end do
  • end do aussen
  • END FUNCTION assoziativ
  •  
  • FUNCTION kommutativ(m)
  • INTEGER,DIMENSION(0:,0:),INTENT(in) :: m
  • LOGICAL :: kommutativ
  • INTEGER :: i,j
  •  
  • kommutativ=.true.
  • aussen: do i=0,size(m,1)-1
  • do j=0,size(m,1)-1
  • if(m(i,j) /= m(j,i)) then
  • kommutativ=.false.
  • EXIT aussen
  • end if
  • end do
  • end do aussen
  • END FUNCTION kommutativ
  •  
  • FUNCTION einselement(m)
  • INTEGER,DIMENSION(0:,0:),INTENT(in) :: m
  • INTEGER :: i,j,einselement
  •  
  • einselement = -1
  • eins: do i=0,size(m,1)-1
  • do j=0,size(m,1)-1
  • if(m(i,j) /= j) then
  • cycle eins
  • end if
  • end do
  • einselement = i
  • EXIT
  • end do eins
  • END FUNCTION einselement
  •  
  • END PROGRAM operator_eigenschaften
An die Funktionien wird jeweils eine Matrix übergeben, wobei die erste Spalte/Zeile mit 0 indiziert wird. Der Rückgabewerte ist ein logischer Wert.
Besucher: 7979 | Permalink | Kategorie: Fortran
Tags: , ,

Kommentar hinzufügen

Dieses Feld bitten nicht ausfüllen: