Hausübung 7

ChristianK
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 127
Registriert: 13. Sep 2007 01:15
Wohnort: Darmstadt
Kontaktdaten:

Hausübung 7

Beitrag von ChristianK » 3. Dez 2007 18:10

Im Kommentar heißt es zur Multiplikationsoperation:

// Implement a method mul, which consumes an other polynomial or an integer
// and returns an polynomial

Ist es nicht so, dass die Methode mul einen einzelnen Term (nicht ein ganzes Polynom) oder einen Integer konsumieren soll? Weil in der entspechenden Aufgabe der Gruppenübung steht:

"Bei der Multiplikation kann u.a. auch mit einfachen Termen (z.B.ax2) multipliziert werden"

Und in der Test-Datei ist auch ein Beispiel bei dem nur ein einfacher Term übergeben wird...

Benutzeravatar
giftnudel
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 112
Registriert: 3. Mai 2005 11:26

Beitrag von giftnudel » 3. Dez 2007 19:40

Ja so ist das auch in der Musterlösung.

Benutzeravatar
mantra
Computerversteher
Computerversteher
Beiträge: 385
Registriert: 23. Okt 2005 23:56
Wohnort: Wiesbaden

Beitrag von mantra » 3. Dez 2007 21:02

Na und, das bisschen Polynommultiplikation. Mit FFT geht das dann sogar in O(n log n).

ChristianK
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 127
Registriert: 13. Sep 2007 01:15
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von ChristianK » 3. Dez 2007 23:48

ähm und noch was: Muss man bei findX nur nach positiven ganzen Zahlen suchen oder auch nach negativen Zahlen? Bzw. wie weit soll man suchen? Bis man was gefunden hat? Nur manchmal gibts vielleicht gar keine Lösung... also bei z.B. 1000 durchläufen abbrechen? Und es soll immer nur eine Lösung (also die zuerst gefundene) ausgegeben werden? Also braucht man bei der pq-formel z.B. nur + und nicht - machen? Und man kann davon ausgehen, dass ein Polynom immer so aufgebaut ist: ax^4+bx^3+cx^2+dx+e? Also das x^2 kann nicht z.B. an 2. Stelle stehn z.B. : ax^3+bx^2+cx+d+e? Und kann man bei der PQ Formel nur Gleichungen der Form x^2+ax+c bekommen oder muss man, wenn man ax^2+bx+c bekommt erst noch durch a teilen?

Sorry für die vielen dummen Fragen, aber ich finde die Aufgabe sehr schwammig formuliert und weiß nicht wie genau man da sein muss...

Benutzeravatar
giftnudel
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 112
Registriert: 3. Mai 2005 11:26

Beitrag von giftnudel » 4. Dez 2007 12:32

Hallo,

ich beantworte erstmal die leichten Fragen:
Du bestimmst wie ein Polynom aufgebaut ist, mit der Klasse (und der Aufgabenstellung).
Du kannst überprüfen, ob das Polynom so ist, wie es sein soll.
Du kannst durch a teilen, wenn du das willst.

Jetzt die doofe Aufgabenstellung:
Such wie du willst. Mach was sinnvolles. Fang irgendwo an, geh bis irgendwo hin, schreib in einen Kommentar warum du das machst. Hast du keine Lust nachzudenken, dann fang bei etwa -2 Milliarden an und hör bei etwa 2 Milliarden auf, dass das nicht sinnvoll ist, ist klar, löst aber die Aufgabe.

Edit:
Polynommultplikation geht nicht immer, da eure Klasse das nicht unterstützt (versucht mal (x^4+x^3+x^2+x^1+1)^2, und überlegt euch, warumd as nicht geht)

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Hausübung 7

Beitrag von guido » 4. Dez 2007 13:14

ChristianK hat geschrieben:Im Kommentar heißt es zur Multiplikationsoperation:

// Implement a method mul, which consumes an other polynomial or an integer
// and returns an polynomial

Ist es nicht so, dass die Methode mul einen einzelnen Term (nicht ein ganzes Polynom) oder einen Integer konsumieren soll? Weil in der entspechenden Aufgabe der Gruppenübung steht:

"Bei der Multiplikation kann u.a. auch mit einfachen Termen (z.B.ax2) multipliziert werden"

Und in der Test-Datei ist auch ein Beispiel bei dem nur ein einfacher Term übergeben wird...
Es soll in der Tat zwei Methoden zur Multiplikation geben: eine, die eine konstante Zahl (=int) heranmultipliziert und eine, die einen einzelnen Term heranmultipliziert. In beiden Fällen hat das Polynom nachher maximal 5 Terme, da sich höchstens die Exponenten "verschieben".

Tut mir leid, dass das nicht ganz klar war bzw. durch den JavaDoc-Kommentar verwirrend ist...

Guido

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Beitrag von guido » 4. Dez 2007 13:17

giftnudel hat geschrieben:Hallo,

ich beantworte erstmal die leichten Fragen:
Du bestimmst wie ein Polynom aufgebaut ist, mit der Klasse (und der Aufgabenstellung).
Du kannst überprüfen, ob das Polynom so ist, wie es sein soll.
Du kannst durch a teilen, wenn du das willst.

Jetzt die doofe Aufgabenstellung:
Such wie du willst. Mach was sinnvolles. Fang irgendwo an, geh bis irgendwo hin, schreib in einen Kommentar warum du das machst. Hast du keine Lust nachzudenken, dann fang bei etwa -2 Milliarden an und hör bei etwa 2 Milliarden auf, dass das nicht sinnvoll ist, ist klar, löst aber die Aufgabe.
Richtig; ähnlich wie die Aussage "wenn es nicht geht, gib 0 zurück" stoßen wir
hier an die Grenzen dessen,was mit Eurem unterstellten (vorlesungsbezogenen) Wissen in Java schon "hilfreich" machbar ist...

Wer es schon "besser" weiß (Stichwort u.a.: Exceptions), kann das natürlich auch gerne so lösen! :wink:

Guido

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Beitrag von s!mon » 5. Dez 2007 20:20

Was ist denn mit "implement this algorithm in 3 ways, in a for-loop, a while-loop and recursive" gemeint? Im Endeffekt kann ich doch nur eins davon benutzen. Soll ich die anderen zwei implementieren und dann auf Kommentar setzen oder verstehe ich grad was falsch :)?

gismo
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 10. Jan 2007 17:06
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von gismo » 5. Dez 2007 21:30

Hi,

damit ist gemeint, dass du für jede der drei Varianten eine Hilfsmethode implementierst und die Hilfsmethoden dann über deine Methode findX aufrufst, wobei du alle drei Aufrufe hinschreibst und 2 davon dann auskommentierst.

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Beitrag von s!mon » 5. Dez 2007 22:21

ok dank dir..

FeG
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 182
Registriert: 6. Dez 2007 07:01

Re: Hausübung 7

Beitrag von FeG » 6. Dez 2007 07:27

Hi,
guido hat geschrieben: Es soll in der Tat zwei Methoden zur Multiplikation geben: eine, die eine konstante Zahl (=int) heranmultipliziert und eine, die einen einzelnen Term heranmultipliziert. In beiden Fällen hat das Polynom nachher maximal 5 Terme, da sich höchstens die Exponenten "verschieben".
... danke erstmal für die Erläuterungen. Mein Tutor hat mir nämlich gestern auf die Frage hin, was ich machen soll, wenn ich zwei Polynome multipliziere und dann mehr als fünf Terme habe, erklärt, ich solle dann einfach alle Terme mit Exponent > 4 verwerfen, was zwar so nicht in den Tests stand, aber anders kann man diese Aufgabe ja mit "unserem Wissensstand" nicht lösen.
Von daher ist das jetzt schonmal logischer ;)

Vielleicht wäre es gut, wenn man einen entsprechenden Hinweis auf die GdI-Seite setzt..

Was in dem Zusammenhang evtl. auch noch zu sagen wäre, ist, dass man in Java mehrere Prozeduren mit gleichem Namen aber unterschiedlichen Parametern definieren kann, wie hier für mul benötigt.. das habe ich nämlich eben auch nur durch Ausprobieren herausgefunden..
(Sollte das in der Vorlesung schon gesagt worden sein, bitte ich vielmals um Entschuldigung :roll:)

Gruß
FeG

FeG
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 182
Registriert: 6. Dez 2007 07:01

Beitrag von FeG » 6. Dez 2007 07:35

Hmpf...

kaum wieder drangesetzt, fällt mir das nächste Problem auf ;)

Angenommen, ich addiere diese beiden Polynome:

\(x^4 + x^3 + x^2 + x + 1\)

\(x^9 + x^8 + x^7 + x^6 + x^5\)

Dann erhalte ich ja ein Polynom mit 10 Termgliedern... was tun?

(Hier war der Lösungsvorschlag von meinem Tutor wieder anwendbar... es konnte ja nur Polynome mit Grad 4 geben ;))

Gruß
FeG

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Beitrag von guido » 6. Dez 2007 08:46

FeG hat geschrieben: (Hier war der Lösungsvorschlag von meinem Tutor wieder anwendbar... es konnte ja nur Polynome mit Grad 4 geben ;))
Richtig :wink:

Guido

FeG
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 182
Registriert: 6. Dez 2007 07:01

Beitrag von FeG » 6. Dez 2007 09:01

Das heißt also, ich kann hier einfach die Terme nacheinander addieren?

Zugegeben: Auf diese Weise klappen alle Tests in Tests.java, von daher wird's wohl so sein...

Danke jedenfalls..
FeG

gismo
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 10. Jan 2007 17:06
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von gismo » 6. Dez 2007 10:23

Also, um die Zahl der Glieder musst du dir nicht großartig sorgen machen, denn in Aufgabe 6 (Vorbereitung für die HÜ) steht, dass die Ausgangspolynome für die Berechnungen maximal Grad 4 haben.
Grad 4 bedeutet, dass der höchste Exponent den Wert 4 hat, von daher kann da auch kein x^9+x^8... vorkommen und bei der Addition sollten auch keine 10 Termglieder auftreten.
Die Aufgabe ist eben auf Grund eures aktuellen Wissensstandes so angelegt, dass es immer nur 5 Glieder gibt.

Antworten

Zurück zu „Archiv“