Blatt 10 - CableLink

Werbung
PS Einführung in die Programmierung
WS 2001/02 (Hagenauer, Linder, Mayer H., Pohlmann)
Blatt 10
Abgabe spätestens bis 18.12.2001 10:00 Uhr
Hinweis: Verwenden Sie für das "Hauptprogramm" als Klassen- und Dateinamen immer
BspXX, wobei XX die Aufgabennummer zweistellig ist, und für weitere Klassendefinitionen
sinnvolle Bezeichner. Fügen Sie jedem Beispiel in Form eines Kommentars das Protokoll
(Ein-Ausgabe) einer kleinen Testanwendung bei (vgl. die Beispiele in der Vorlesung).
24. Entwerfen Sie eine Klasse Complex für die komplexe Arithmetik in kartesischen
Koordinaten in Java und speichern Sie sie in der Datei Complex.java ab. Eine komplexe Zahl
z lässt sich darstellen als
z = x + i ·y
x, y e R,
aus dem Realteil x und Imaginärteil y. Dabei bezeichnet man i als imaginäre Einheit und es
gilt i2 = 1.
Die arithmetischen Grundoperationen für zwei komplexe Zahlen z 1 = x1 + i ·y1 und z2 = x2 + i
·y2 sind folgendermaßen definiert:
z1 + z2 =
x1 + x2 + i ·( y1 + y2 )
(1)
z1  z2 =
x1  x2 + i ·( y1  y2 )
(2)
x1 x2  y1 y2 + i ·( x 1 y2 + y1 x2 )
(3)
z1 ·z 2 =
z1
=
z2
 x1 y2 + y1 x2
x1 x2 + y1 y2
+i·
x22 + y2 2
(4)
x22 + y2 2
Außerdem gilt für den Betrag z einer komplexen Zahl z = x + i ·y:
z = SQRT(x2 + y2)
(5)
Die Klasse Complex soll eine komplexe Zahl repräsentieren und folgende Elemente enthalten:




Zwei private Datenfelder re, im vom Typ double, die den Real- und Imaginärteil
einer komplexen Zahl enthalten.
Einen Konstruktor ohne Parameter, der keinen Code enthält.
Einen Konstruktor mit zwei Parametern vom Typ double, der die privaten
Datenfelder mit den übergebenen Werten initialisiert.
Eine public-Methode toString(), die einen String zurückliefert. Dieser String soll
die Ausgabe der komplexe Zahl in folgender Form liefern:
{re} + i * {im}




Öffentliche Methoden add, subtract, multiply, divide , die die
mathematischen Grundoperationen, wie in (1) bis (4) definiert, implementieren. Dabei
soll eine neue Instanz der Klasse Complex als Ergebnis zurückgeliefert werden.
Eine public-Methode abs mit einem Rückgabewert vom Typ double, die den Betrag
der komplexen Zahl, wie in (5) definiert, berechnet.
Eine public-Methode equals mit einem Parameter vom Typ Complex und
Rückgabewert vom Typ boolean . Sie soll prüfen, ob die komplexe Zahl, die die
Instanz darstellt mit der übergebenen komplexen Zahl komponentenweise
übereinstimmt.
Zwei public-Methoden getRe() und getIm() , die den Realteil bzw. Imaginärteil
einer komplexen Zahl als double-Zahl zurückliefern.
25. Benutzen Sie diese komplexe Arithmetik zur Auswertung eines Polynoms p vom Grad n
mit komplexen Koeffizienten
n
p(z)
=
p ·z
i
i
=
(...((pn ·z + pn1) ·z + pn2) ...) ·z + p0
i=0
Mit der rechten Seite dieser Formel lässt sich der Wert sehr einfach durch wiederholtes
Multiplizieren und Addieren bestimmen (``Horner-Schema'').
Speichern Sie Ihr Programm in einer eigenen Datei HornerComplex.java im gleichen
Verzeichnis wie Complex.java und führen Sie folgende Schritte aus:





Lesen Sie den Grad n des Polynoms ein.
Erzeugen Sie ein Feld p mit n+1 Komponenten vom Typ Complex .
Lesen Sie die Feldelemente pn bis p0 ein.
Lesen Sie eine komplexe Zahl z ein.
Berechnen Sie den Wert p(z) mit Hilfe des Horner-Schemas.
Testen Sie das Beispiel p(z) = 1 ·z2 + (2+i) ·z  2i an der Stelle z = 1+i. Das Ergebnis ist
1+3i.
Herunterladen