Eine Matrix ist eine Tabelle von Zahlen. Dafür lassen sich bestimmte Rechenoperationen definieren (siehe folgende Aufgabe). Matrizen (Plural von Matrix) sind ein wichtiges Mittel, um Zusammenhänge zwischen Daten (aus Naturwissenschaft, Technik, Wirtschaft, Gesellschaft, . . . ) in Software darzustellen und Fragen dazu rechnerisch zu beantworten. Näheres dazu wird Ihnen in Mathematikveranstaltungen erklärt.
Schreiben Sie eine Klasse Matrix, die als (private) Instanzvariable ein zweidimensionales Feld von Gleitkommazahlen enthält. Die Klasse stellt folgende Konstruktoren bereit:
Bei Angabe zweier positiver ganzer Zahlen z und s wird eine Matrix von z Zeilen und s Spalten angelegt, deren Einträge den Wert 0.0 haben.
Bei Angabe einer positiven ganzen Zahl n wird eine quadratische Matrix von n Zeilen und n Spalten angelegt, deren Einträge den Wert 0.0 haben.
Bei Angabe einer Matrix-Referenz wird eine vollständige Kopie dieser Matrix erzeugt.
Nachdem eine Matrix erzeugt wurde, ändert sich ihre Größe nicht mehr.
Die Klasse stellt folgende Instanzmethoden bereit:
zeilen() liefert die Anzahl der Zeilen.
spalten() liefert die Anzahl der Spalten.
get(int z, int s) liefert den Eintrag in Zeile z und Spalte s.
set(int z, int s, double e) setzt den Eintrag in Zeile z und Spalte s auf den Wert e und liefert die Matrix als Resultat.
setAll(double e) setzt alle Einträge der Matrix auf den Wert e und liefert die Matrix als Resultat.
setZeile(int z, double[] a) setzt die Einträge in Zeile z auf die Werte in a und liefert die Matrix als Resultat.
setSpalte(int s, double[] a) setzt die Einträge in Spalte s auf die Werte in a und liefert die Matrix als Resultat.
equals(Matrix m) liefert als Wahrheitswert, ob die Matrix in Struktur und Werten gleich der als Argument gegebenen Matrix ist.
Hinweis: Verwenden Sie die in der Vorlesung vorgestellte und in LEA zu K05 bereitgestellte Methode Zahlen.equals zum Vergleich zweier Gleitkommawerte unter Berücksichtigung von Rundungsabweichungen. Diese Klasse Zahlen wird im Praktomat zu Tests bereitgestellt.
toString() erzeugt eine Darstellung der Matrix als Zeichenkette. Die Darstellung erfolgt zeilenweise. Jede Zeile ist in runde Klammern ( ) eingeschlossen, gefolgt von einem Zeilenumbruch.
Zum Beispiel sähe diese Zeichenkette für die Matrix mit den Werten {{1,2},{3,4},{5,6} folgendermaßen aus:
"( 1.0 2.0 )
( 3.0 4.0 )
( 5.0 6.0 )
"
eingabe(Scanner sc) liest von sc Werte für die Einträge der Matrix in der gleichen Darstellung ein, wie sie durch toString erzeugt wird. Die Matrix wird zurückgegeben.
Aufgabe 2 [Programmierung]
Eine Matrix ist eine Tabelle von Zahlen. Dafür lassen sich bestimmte Rechenoperationen definieren (siehe folgende Aufgabe). Matrizen (Plural von Matrix) sind ein wichtiges Mittel, um Zusammenhänge zwischen Daten (aus Naturwissenschaft, Technik, Wirtschaft, Gesellschaft, . . . ) in Software darzustellen und Fragen dazu rechnerisch zu beantworten. Näheres dazu wird Ihnen in Mathematikveranstaltungen erklärt.
Schreiben Sie eine Klasse Matrix, die als (private) Instanzvariable ein zweidimensionales Feld von Gleitkommazahlen enthält. Die Klasse stellt folgende Konstruktoren bereit:
Bei Angabe zweier positiver ganzer Zahlen z und s wird eine Matrix von z Zeilen und s Spalten angelegt, deren Einträge den Wert 0.0 haben.
Bei Angabe einer positiven ganzen Zahl n wird eine quadratische Matrix von n Zeilen und n Spalten angelegt, deren Einträge den Wert 0.0 haben.
Bei Angabe einer Matrix-Referenz wird eine vollständige Kopie dieser Matrix erzeugt.
Nachdem eine Matrix erzeugt wurde, ändert sich ihre Größe nicht mehr.
Die Klasse stellt folgende Instanzmethoden bereit:
zeilen() liefert die Anzahl der Zeilen.
spalten() liefert die Anzahl der Spalten.
get(int z, int s) liefert den Eintrag in Zeile z und Spalte s.
set(int z, int s, double e) setzt den Eintrag in Zeile z und Spalte s auf den Wert e und liefert die Matrix als Resultat.
setAll(double e) setzt alle Einträge der Matrix auf den Wert e und liefert die Matrix als Resultat.
setZeile(int z, double[] a) setzt die Einträge in Zeile z auf die Werte in a und liefert die Matrix als Resultat.
setSpalte(int s, double[] a) setzt die Einträge in Spalte s auf die Werte in a und liefert die Matrix als Resultat.
equals(Matrix m) liefert als Wahrheitswert, ob die Matrix in Struktur und Werten gleich der als Argument gegebenen Matrix ist. Hinweis: Verwenden Sie die in der Vorlesung vorgestellte und in LEA zu K05 bereitgestellte Methode Zahlen.equals zum Vergleich zweier Gleitkommawerte unter Berücksichtigung von Rundungsabweichungen. Diese Klasse Zahlen wird im Praktomat zu Tests bereitgestellt.
toString() erzeugt eine Darstellung der Matrix als Zeichenkette. Die Darstellung erfolgt zeilenweise. Jede Zeile ist in runde Klammern ( ) eingeschlossen, gefolgt von einem Zeilenumbruch. Zum Beispiel sähe diese Zeichenkette für die Matrix mit den Werten
{{1,2},{3,4},{5,6}
folgendermaßen aus:eingabe(Scanner sc) liest von sc Werte für die Einträge der Matrix in der gleichen Darstellung ein, wie sie durch toString erzeugt wird. Die Matrix wird zurückgegeben.