Fehler in den automatischen Main-Tests bei der Aufgabe 3.4-d [NewtonIteration]

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Fehler in den automatischen Main-Tests bei der Aufgabe 3.4-d [NewtonIteration]
Hey,
Ist - denke ich - nur ein kleiner Fehler

In Aufgabe d) steht dass man als Startwert für y_alt 1 verwenden kann, aber nicht muss!

Ich habe vorerst einen anderen Wert gewählt

=> Main-Test: Ausrufezeichen

Hat ne weile gedauert bis ich dahinter gekommen bis, dass man y_alt eplizlit auf 1 setzen sollte

Ihr solltet die Tests anpassen, dass sie auf variablen y-Werte reagieren können [Ist vlt. etwas kompliziert den y_alt-Startwert auszulesen, aber machbar! ]

Oder Ihr schreibt in das Aufgabenblatt, dass man y_alt nicht bspw. auf 1 setzen soll, sondern es auf 1 setzen muss

lg knotenpunkt


Eventuell Präzisionsfehler? Ich habe es jetzt gerade nicht da, könnt aber daran liegen. Deswegen hast du auch das EPSILON.

Also, angenommen du hast nicht 0 als Startwert genommen, das läuft nämlich gleich in die Hose.


Nehmt 1 als Startwert - dann seid ihr auf der sicheren Seite.


Hm, ich habe es mit diversen Zahlen groesser 0 probiert, und es stimmt trotzdem. Bei negativen Startwerten kommt halt bei ungeraden Graden negative Zahlen raus, was aber noch stimmt (woran aber niemand denkt). Bei 0 als Startwert gibts NaN (was ja mehr oder weniger logisch ist, wenn du dir das Differential anschaust).

Ich wuesste jetzt also nicht, wie das EST also auf diese Fehler kommt.
@Tutoren
Benutzt ihr statische Analyse? Checkt ihr explizit, dass wir 1 als Startwert genommen haben? Ist meine einzige Erklaerung.


Nein, wenn du die gleichen Ergebnisse (± einem Epsilon) bekommst wie mit Startwert 1 ist alles super.


Also wenn mich meine Erinnerung ans Newtonverfahren nicht trügt dürfte das völlig unmöglich sein?


Es handelt sich um ein Annäherungsverfahren, das irgendwo anfängt und sich an die Lösung iterativ „ranschleicht“. Was also kein Problem für Startwerte sein dürfte, außer für 0.


Wieso das denn? Zwischen x und x+dx liegen bei dx != 0 unendlich viele Zahlen und es kann durchaus passieren, dass für einen Startwert das Ergebnis eine Zahl a aus (x, x+dx) (Grenzen seien mal vernachlässigt) und für die andere Zahl eine andere Zahl b aus (x, x+dx) herauskommt. Zwar ist |a-b|<=dx, aber nicht 0.

Zum Beispiel kommt bei yOld = 1 raus:

„Die 7-te Wurzel aus 1024.0 ist ungefaehr 2.6918003852647123

was nicht dasselbe ist, wie bei yOld = 2:

„Die 7-te Wurzel aus 1024.0 ist ungefaehr 2.6918003852647128“.


Der Aufgabensteller kennt wahrscheinlich einiges aus der jUnit-API:wink:


Aber die Studenten kennen wahrscheinlich die Größe von „delta“ nicht. :frowning:
Da allerdings bei mir beide EST-Testfälle funktionierten, würde ich den Fehler ohnehin ausschließen.