|
Determinante von Matrix in Pascal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(* Gruppe : 1 Autor : J. B. Schule : Gewerbeoberschule "Max Valier" Bozen Klasse : 3Ia Aufgabe : Laplacescher Entwicklungssatz Beschreibung : Implementierung des Laplaceschen Entwicklungssatzes in Pascal mit Hilfe von rekursivenFunktionen Lizenz : GPL Anmerkung : Beschränken Sie die Matrix auf 10 x 10, da man sonst einerseits zu viele Werte eingeben werden müssen, andererseits der Rechenaufwand zu hoch wird (bei meinen Tests dauerte die Berechnung der Determinante einer 10 x 10 REAL-Matrix auch schon mal 10 Sekunden!) *) PROGRAM laplace; TYPE tmat = ARRAY [1..10, 1..10] OF REAL; (*Untermatrix bilden*) PROCEDURE TakeUntermat (mat : tmat; VAR untermat :tmat; grosse : INTEGER; auslass : INTEGER); VAR i, j : INTEGER; (*Laufvariablen*) spalte : INTEGER; (*Zu streichendeStelle*) BEGIN (*Initialisierung*) spalte := 0; (*Wandere durch Spalten*) FOR j := 1 TO grosse DO IF j <> auslass THEN BEGIN (*Spalte der Untermatrix*) spalte := spalte + 1; (*Uebernehme gesamte Spalte*) FOR i := 1 TO grosse - 1 DO untermat[i, spalte] := mat [i+1,j] END END; (*Rekursive Funktion zur Berechnung der Determinanten der Matrix*) FUNCTION Det (mat : tmat; grosse : INTEGER) : REAL; VAR sum : REAL; (*Variable fuer die Summe*) fakt : INTEGER; (*Variable fuer dieVorzeichen*) j : INTEGER; (*Laufvariable*) untermat : tmat; (*Untermatrix*) BEGIN (*Initialisierung*) fakt := -1; sum := 0; (*Ausstiegsbedingung*) IF grosse = 1 THEN Det := mat[1, 1] ELSE BEGIN FOR j := 1 TO grosse DO BEGIN (*Vorzeichen*) fakt := fakt * (-1); TakeUntermat(mat, untermat, grosse,j); (*Aufsummieren*) sum := sum + mat[1, j] * fakt *Det(untermat, grosse - 1) END; (*Wertuebergabe*) Det := sum END END; (*Benutzerabfrageprozedur*) PROCEDURE BeneAbfr (VAR tab : tmat; VAR n : INTEGER); VAR i, j : INTEGER; (*Laufvariable*) BEGIN (*Initialisierung*) n := 11; WHILE n > 10 DO BEGIN Write(' Zeilen- und Spaltenanzahl der Matrix (max =10) : '); Readln(n); END; Writeln; FOR i := 1 TO n DO FOR j := 1 TO n DO BEGIN Write(' Wert in der ',i,'. Zeile, ',j,'. Spalte: '); Readln(tab[i, j]) END END; (*=============================Hauptprogramm========================*) VAR matrix : tmat; grosse : INTEGER; (*Anzahl der Zeilenund Spalten*) i, j : INTEGER; (*Laufvariable*) BEGIN Writeln; BeneAbfr(matrix, grosse); Writeln; Write(' Die Determinante der Matrix'); {AusReaMat(matrix, grosse);} Writeln(' betraegt'); Writeln(' ',Det(matrix, grosse):0:3); Readln END.
-Zruück zum Pseudocode -Zurück zur Aufgabenstellung
|
|
|
|
|
|
|
|
|
Letzte Änderung: 09.02.2007
© Pädagogisches Institut für die deutsche Sprachgruppe
- Bozen. 2000 -
|
|
|
|
|
|
|
|
|