![]() |
Nullstellen
Hy Community,
ich habe folgendes Problem: Ich möchte Nullstellen von Quadratischen Funktionen berechnen. Ich versuche, das mit der PQ-Formel zu lösen, was manchmal klappt, manchmal aber auch nicht, was mich wundert! Hier der Code:
Delphi-Quellcode:
Also die Formel müsste eigentlich stimmen, genauso wie die Klammersetzung, ich habe keinen Fehler feststellen können.
procedure Nullstellen(a, b, c: Double);
begin //Variablen durch a teilen, damit PQ-Formel anwendbar a := a / a; b := b / a; c := c / a; //Prüfen, ob Diskriminante > 0 if (sqr(b/2)) >= c then begin //Nullstellen ausrechnen Null1 := (-b/2) + Sqrt((sqr(b/2)-c)); Null2 := (-b/2) - Sqrt((sqr(b/2)-c)) end; |
Re: Nullstellen
Zitat:
a wird 1 b und c bleiben dann b bzw c da a ja 1 ist. |
Re: Nullstellen
Ja, du hast Recht!
Oh mein Gott, dass mir das nicht selbst aufgefallen ist..... |
Re: Nullstellen
|
Re: Nullstellen
Zitat:
Zitat:
![]() Ich werde wirklich nie verstehen, warum die PQ-Formel überhaupt benutzt wird, wenn man mit der Mitternachtsformel doch eine so schöne und allgemeingültige Formel zur Hand hat :( Warum sollte ich eine Gleichung denn erst künstlich anpassen, wenn ich sie auch direkt - und auch nicht wesentlich komplizierter - lösen kann? |
Re: Nullstellen
Nur sind beide Formeln als Mitternachtsformel bekannt. Je nach Vorliebe
|
Re: Nullstellen
Zitat:
Mir ist noch nie untergekommen, dass jemand die beiden Formeln verwechselt hätte. Dass jemand mal eine nicht kannte, OK, das kommt vor. Ging mir in der Uni nicht anders. Da war ich etwas irritiert, als in einem Übungsblatt die Anwendung der PQ-Formel verlangt wurde... Entsprechend hat dann da natürlich auch jeder seine Vorlieben. Die PQ-Formel hat natürlich auch ihr Anwendungsgebiet, nämlich genau da, wo a=1 ist. Aber warum sollte ich mir erst meine Gleichung entsprechend anpassen? Wie oft habe ich dann Leute gesehen, die sich nach der Umformung mit furchtbaren Zahlen abmühen, anstatt einfach gleich die Mitternachtsformel zu verwenden. Wenn ich ne Suppe essen will, bieg ich mir ja schließlich auch nicht die Gabel zurecht, bis alles passt :zwinker: |
Re: Nullstellen
Ich hatte verschiedene Lehrer, die unter der Mitternachtsformel entwder das eine oder das andere verstanden haben
|
Re: Nullstellen
Zitat:
|
Re: Nullstellen
Nein, Mitternachtsformel heisst, diese ja nur, da man diese aufsagen können sollte, wenn man um Mitternacht geweckt wird, über den Weg sagt das ja nichts aus
|
Re: Nullstellen
Zitat:
Gut, wir können da jetzt noch ewig diskutieren, aber im Allgemeinen wird nunmal der Name Mitternachtsformel für die ABC-Formel benutzt. Der spezielle Fall a=1 wird entsprechend normalerweise nur als PQ-Formel bezeichnet. Ich konnte jetzt auch gerade bei einer kurzen Google-Suche keinen Fall entdecken, in der die PQ-Formel als Mitternachtsformel bezeichnet wird. Das deckt sich absolut mit meinen Erfahrungen ;) |
Re: Nullstellen
Ich würde das Ganze noch mit Out-Parametern und Anzahl der Lösungen aufhübchen:
Delphi-Quellcode:
function BerechneNullstellen(a{*x^2 + }, b{*x + }, c: Double; out Null1,Null2:Double):integer;
var discrim : double; begin if a = 0.0 then begin if b = 0.0 then begin if c = 0.0 then result := 4 // unendlich viele Nullstellen else result := -1; // keine Lösung end else begin Null1 := -c / b; // Funktion ist eine Gerade result := 1; // mit einer Nullstelle end; end else begin //Variablen durch a teilen, damit PQ-Formel anwendbar b := b / a; c := c / a; discrim := sqr(b/2)-c; //Prüfen, ob Diskriminante > 0 if discrim > 0.0 then begin //Nullstellen ausrechnen Null1 := (-b/2.0) + Sqrt(discrim); Null2 := (-b/2.0) - Sqrt(discrim) result := 2; // 2 Lösungen end else if discrim < 0.0 then result := 0; // keine Lösung bzw. Lösung ist im komplexen Zahlenraum else begin Null1 := -b/2.0; Null2 := Null1; result := 1; // doppelte Nullstelle end; end; end; |
Re: Nullstellen
Da beide Formeln absolut identisch sind, ;-) können wir hier in diesem Thread noch ein Jahr weiter diskutieren. Ich nehme die pq-Formel seit 45 Jahren, auch im komplexen Zahlenraum zur Berechnung von z.B. analoger Filterschaltungen und sehe keine Vorteile weder in der einen noch in der anderen Lösungsmöglichkeit.
Seid gegrüßt Wolfgang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz