home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / matrix / matrixtest.mod < prev    next >
Text File  |  1995-04-25  |  3KB  |  109 lines

  1. (*--------------------------------------------------------------------
  2.  
  3. :Program.       MATRIXTest.mod
  4. :Author.        Michael Meyer
  5. :Address.       Würmseestrasse 28, 81476 München
  6. :EMail.         ZNet: M.MEYER@AMC.ZER.SUB.ORG
  7. :EMail.         Fido: Michael Meyer 2:2480/21.100
  8. :Version.       1.0
  9. :Date.          6 Feb 1994
  10. :Copyright.     1994 Michael Meyer
  11. :Contents.      Test der einzelnen Funktionen des Moduls MATRIX
  12. :Language.      Oberon-2
  13. :Translator.    Amiga Oberon 3.00d
  14.  
  15. --------------------------------------------------------------------*)
  16.  
  17. MODULE MATRIXTest;
  18.  
  19. IMPORT m    : MATRIX,
  20.        io   : io,
  21.        d    : Dos,
  22.        LRio : LongRealInOut;
  23.  
  24. PROCEDURE WriteMatrix * (a: m.MATRIX);
  25. VAR
  26.   i, j: LONGINT;
  27. BEGIN
  28.   FOR i := 0 TO a.DimM()-1 DO
  29.     FOR j := 0 TO a.DimN()-1 DO
  30.       IF LRio.WriteReal(a.Get(i, j), 4, 2, FALSE) THEN END;
  31.       io.WriteString("  ");
  32.     END;
  33.     io.WriteLn;
  34.   END;
  35.   io.WriteLn;
  36.   d.Delay(25);
  37. END WriteMatrix;
  38.  
  39. VAR
  40.   a, b, c: m.MATRIX;
  41.   i, j, dim: LONGINT;
  42.   x: LONGREAL;
  43.   str: ARRAY 2 OF CHAR;
  44. BEGIN
  45.   io.WriteString("Dies ist ein Test des Moduls MATRIX.\n");
  46.   io.WriteString("\n");
  47.   io.WriteString("MATRIX ist Copyright 1994 by Michael Meyer.\n");
  48.   io.WriteString("\n");
  49.   io.WriteString("\n");
  50.   REPEAT
  51.     io.WriteString("Geben Sie die Dimension Ihrer quadratischen Matrix an.\n");
  52.     io.WriteString("(z.B. 3) : ");
  53.     REPEAT UNTIL io.ReadInt(dim);
  54.     io.WriteString("[Zeile|Spalte]\n");
  55.     io.WriteString("Geben Sie Matrix A ein.\n");
  56.     a := m.Create(dim,dim);
  57.     FOR i := 0 TO dim-1 DO
  58.       FOR j := 0 TO dim-1 DO
  59.         io.WriteString("[");io.WriteInt(i,1);io.WriteString(" | ");
  60.         io.WriteInt(j,1);io.WriteString("] = ");
  61.         REPEAT UNTIL LRio.ReadReal(x);
  62.         a.Put(i, j, x);
  63.       END;
  64.       io.WriteLn;
  65.     END;
  66.     io.WriteString("Geben Sie Matrix B ein.\n");
  67.     b := m.Create(dim,dim);
  68.     FOR i := 0 TO dim-1 DO
  69.       FOR j := 0 TO dim-1 DO
  70.         io.WriteString("[");io.WriteInt(i,1);io.WriteString(" | ");
  71.         io.WriteInt(j,1);io.WriteString("] = ");
  72.         REPEAT UNTIL LRio.ReadReal(x);
  73.         b.Put(i, j, x);
  74.       END;
  75.       io.WriteLn;
  76.     END;
  77.     io.WriteString("A = \n");
  78.     WriteMatrix(a);
  79.     io.WriteString("B = \n");
  80.     WriteMatrix(b);
  81.     io.WriteString("A + B =\n");
  82.     WriteMatrix(a.Add(b)(m.MATRIX));
  83.     io.WriteString("A - B =\n");
  84.     WriteMatrix(a.Sub(b)(m.MATRIX));
  85.     io.WriteString("A x B =\n");
  86.     WriteMatrix(a.Mul(b)(m.MATRIX));
  87.     io.WriteString("A x 4.7 =\n");
  88.     WriteMatrix(a.SkalarMul(4.7)(m.MATRIX));
  89.     io.WriteString("A transponiert =\n");
  90.     WriteMatrix(a.TransposeMatrix()(m.MATRIX));
  91.     io.WriteString("Gauss auf A =\n");
  92.     WriteMatrix(a.Gauss()(m.MATRIX));
  93.     io.WriteString("Determinante von A =");
  94.     IF LRio.WriteReal(a.Det(), 10, 4, FALSE) THEN END;
  95.     io.WriteLn();
  96.     IF a.Det()=0.0 THEN
  97.       io.WriteString("Determinante von A = 0 => A ist singulär \n");
  98.     ELSE
  99.       io.WriteString("Determinante von A # 0 => A ist regulär \n");
  100.       io.WriteString("Inverse Matrix von A =\n");
  101.       WriteMatrix(a.Neg()(m.MATRIX));
  102.       io.WriteString("A x (A x exp(-1)) = E = \n");
  103.       WriteMatrix(a.Mul(a.Neg()(m.MATRIX))(m.MATRIX));
  104.     END;
  105.     io.WriteString("Nochmal? j=Ja n=Nein :");
  106.     io.ReadString(str);
  107.   UNTIL ~(str="j");
  108. END MATRIXTest.
  109.