Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Nullstellen (https://www.delphipraxis.net/141091-nullstellen.html)

Mysterio08 2. Okt 2009 07:33


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:
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;
Also die Formel müsste eigentlich stimmen, genauso wie die Klammersetzung, ich habe keinen Fehler feststellen können.

mkinzler 2. Okt 2009 07:37

Re: Nullstellen
 
Zitat:

Delphi-Quellcode:
 a := a / a;
  b := b / a;
  c := c / a;

Hier wird der Fehler liegen:

a wird 1
b und c bleiben dann b bzw c da a ja 1 ist.

Mysterio08 2. Okt 2009 07:43

Re: Nullstellen
 
Ja, du hast Recht!
Oh mein Gott, dass mir das nicht selbst aufgefallen ist.....

Wolfgang Mix 2. Okt 2009 08:14

Re: Nullstellen
 
@Mysterio08

Schau 'mal hier:
http://www.delphipraxis.net/internal...t.php?t=161948

Gruß

Wolfgang

leddl 2. Okt 2009 09:37

Re: Nullstellen
 
Zitat:

Zitat von Mysterio08
Ich versuche, das mit der PQ-Formel zu lösen, was manchmal klappt, manchmal aber auch nicht, was mich wundert!

Zitat:

Zitat von mkinzler
a wird 1
b und c bleiben dann b bzw c da a ja 1 ist.

Mit der Mitternachtsformel wäre das nicht passiert :mrgreen:

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?

mkinzler 2. Okt 2009 13:02

Re: Nullstellen
 
Nur sind beide Formeln als Mitternachtsformel bekannt. Je nach Vorliebe

leddl 2. Okt 2009 13:27

Re: Nullstellen
 
Zitat:

Zitat von mkinzler
Nur sind beide Formeln als Mitternachtsformel bekannt. Je nach Vorliebe

:gruebel: Seit wann denn das? Das wäre mir aber komplett neu. Die PQ-Formel ist einfach nur der spezielle Fall der Mitternachtsformel für a = 1.
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:

mkinzler 2. Okt 2009 13:33

Re: Nullstellen
 
Ich hatte verschiedene Lehrer, die unter der Mitternachtsformel entwder das eine oder das andere verstanden haben

leddl 2. Okt 2009 13:56

Re: Nullstellen
 
Zitat:

Zitat von mkinzler
Ich hatte verschiedene Lehrer, die unter der Mitternachtsformel entwder das eine oder das andere verstanden haben

Das lag dann aber eher an geistiger Verwirrung denn daran, dass beide als Mitternachtsformel bekannt sind :mrgreen:

mkinzler 2. Okt 2009 13:59

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

leddl 2. Okt 2009 15:03

Re: Nullstellen
 
Zitat:

Zitat von mkinzler
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

:gruebel: Und? Was hat die Herkunft des Namens damit zu tun? :gruebel:

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 ;)

sx2008 2. Okt 2009 19:55

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;

Wolfgang Mix 2. Okt 2009 20:26

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