home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
coders
/
matrix
/
matrixtest.mod
< prev
next >
Wrap
Text File
|
1995-04-25
|
3KB
|
109 lines
(*--------------------------------------------------------------------
:Program. MATRIXTest.mod
:Author. Michael Meyer
:Address. Würmseestrasse 28, 81476 München
:EMail. ZNet: M.MEYER@AMC.ZER.SUB.ORG
:EMail. Fido: Michael Meyer 2:2480/21.100
:Version. 1.0
:Date. 6 Feb 1994
:Copyright. 1994 Michael Meyer
:Contents. Test der einzelnen Funktionen des Moduls MATRIX
:Language. Oberon-2
:Translator. Amiga Oberon 3.00d
--------------------------------------------------------------------*)
MODULE MATRIXTest;
IMPORT m : MATRIX,
io : io,
d : Dos,
LRio : LongRealInOut;
PROCEDURE WriteMatrix * (a: m.MATRIX);
VAR
i, j: LONGINT;
BEGIN
FOR i := 0 TO a.DimM()-1 DO
FOR j := 0 TO a.DimN()-1 DO
IF LRio.WriteReal(a.Get(i, j), 4, 2, FALSE) THEN END;
io.WriteString(" ");
END;
io.WriteLn;
END;
io.WriteLn;
d.Delay(25);
END WriteMatrix;
VAR
a, b, c: m.MATRIX;
i, j, dim: LONGINT;
x: LONGREAL;
str: ARRAY 2 OF CHAR;
BEGIN
io.WriteString("Dies ist ein Test des Moduls MATRIX.\n");
io.WriteString("\n");
io.WriteString("MATRIX ist Copyright 1994 by Michael Meyer.\n");
io.WriteString("\n");
io.WriteString("\n");
REPEAT
io.WriteString("Geben Sie die Dimension Ihrer quadratischen Matrix an.\n");
io.WriteString("(z.B. 3) : ");
REPEAT UNTIL io.ReadInt(dim);
io.WriteString("[Zeile|Spalte]\n");
io.WriteString("Geben Sie Matrix A ein.\n");
a := m.Create(dim,dim);
FOR i := 0 TO dim-1 DO
FOR j := 0 TO dim-1 DO
io.WriteString("[");io.WriteInt(i,1);io.WriteString(" | ");
io.WriteInt(j,1);io.WriteString("] = ");
REPEAT UNTIL LRio.ReadReal(x);
a.Put(i, j, x);
END;
io.WriteLn;
END;
io.WriteString("Geben Sie Matrix B ein.\n");
b := m.Create(dim,dim);
FOR i := 0 TO dim-1 DO
FOR j := 0 TO dim-1 DO
io.WriteString("[");io.WriteInt(i,1);io.WriteString(" | ");
io.WriteInt(j,1);io.WriteString("] = ");
REPEAT UNTIL LRio.ReadReal(x);
b.Put(i, j, x);
END;
io.WriteLn;
END;
io.WriteString("A = \n");
WriteMatrix(a);
io.WriteString("B = \n");
WriteMatrix(b);
io.WriteString("A + B =\n");
WriteMatrix(a.Add(b)(m.MATRIX));
io.WriteString("A - B =\n");
WriteMatrix(a.Sub(b)(m.MATRIX));
io.WriteString("A x B =\n");
WriteMatrix(a.Mul(b)(m.MATRIX));
io.WriteString("A x 4.7 =\n");
WriteMatrix(a.SkalarMul(4.7)(m.MATRIX));
io.WriteString("A transponiert =\n");
WriteMatrix(a.TransposeMatrix()(m.MATRIX));
io.WriteString("Gauss auf A =\n");
WriteMatrix(a.Gauss()(m.MATRIX));
io.WriteString("Determinante von A =");
IF LRio.WriteReal(a.Det(), 10, 4, FALSE) THEN END;
io.WriteLn();
IF a.Det()=0.0 THEN
io.WriteString("Determinante von A = 0 => A ist singulär \n");
ELSE
io.WriteString("Determinante von A # 0 => A ist regulär \n");
io.WriteString("Inverse Matrix von A =\n");
WriteMatrix(a.Neg()(m.MATRIX));
io.WriteString("A x (A x exp(-1)) = E = \n");
WriteMatrix(a.Mul(a.Neg()(m.MATRIX))(m.MATRIX));
END;
io.WriteString("Nochmal? j=Ja n=Nein :");
io.ReadString(str);
UNTIL ~(str="j");
END MATRIXTest.