blikk info infothek forum galerie sitemap

Determinante von Matrix in Pseudocode

anfang zurueck weiter ende nach oben

Autor: J.B. - Gruppe 1

Für die folgenden Funktionen und Prozeduren benötigt man einen Typ tmat, der wie folgt definiert ist:
  tmat= Array [1..10, 1..10] von Gleikommazahlen;

(*Diese Prozedur holt sich die Untermatrix aus einer Matrix durch Entfernung der 1. Zeile und einer beliebigen Spalte. Die Untermatrix wird als Ausgabeparameter deklariert*)
Prozedur TakeUntermat (mat vom Typ tmat
              VAR untermat vom Typ tmat
                    grosse vom Typ Ganzzahl
                   auslass vom Typ Ganzzahl
Variable
  i, j   vom Typ Ganzzahl
  spalte vom Typ Ganzzahl
Start
  spalte soll sein 0
  Für j soll sein 1 bis grosse tue
    Wenn j <> auslass dann
      spalte soll sein spalte + 1
      Für i soll sein 1 bis grosse - 1 tue
        Untermat[i, spalte] soll sein mat[i + 1, j]
      Ende Für
    Ende Wenn
  Ende Für
Ende Prozedur 

(*Dieserekursive Funktion errechnet die Determinante einer n x n Matrix. Sie verwendet die oben genannte Funktion TakeUntermat. Der Ausstiegspunkt der Rekursion wird erreicht, wenn die eingegeben Matrix nur noch die Größe 1 x 1 besitzt*)
Funktion Det (mat vom Typ tmat;
           grosse vom Typ Ganzzahl) vom Typ Gleitkommazahlen;
Variablen
  sum      vom Typ Gleitkommazahlen
  fakt     vom Typ Ganzzahl
  j        vom Typ Ganzzahl
  untermat vom Typ tmat
Start
  fakt soll sein -1
  sum soll sein 0
  Wenn grosse = 1 dann
    Det soll sein mat[1, 1]
  Ansonsten
    Für j soll sein 1 bis grosse tue
      Fakt soll sein fakt * -1
      TakeUntermat(mat, untermat, grosse, j)
      Sum soll sein sum + mat[1, j] * fakt * Det(untermat, grosse –1)
    Ende Für
    Det soll sein sum
  Ende Ansonsten
Ende Funktion

(*Eine einfacheBenutzerabfrageprozedur vollendet das Programm*)
Prozedur BeneAbfr (VAR tab vom Typ tmat
                         n : Ganzzahl)
Variable
  i, j, : Ganzzahl
Start
  n := 11
  Solange n > 10 tue
    Schreibe(Zeilen- und Spaltenanzahlder Matrix (max = 10) :);
  Ende Solange
  Für i := 1 bis n tue
    Für j := 1 bis n tue
      Schreibe(Wert in der i. Zeile, j.Spalte:);
      Lese(tab[i,j])
   
EndeFür
  Ende Für
Ende Prozedur

(*Hauptprogramm*)
Variable
 
Writeln;
  BeneAbfr(matrix, grosse);
  Writeln;
  Write(' Die Determinante der Matrix');
  Writeln(' betraegt');
  Writeln('    ',Det(matrix, grosse):0:3);
  Readln
END.



 
-Zurück zur Aufgabenstellung
-Weiter zum Pascalcode

nach oben