Entwickler-Ecke

Free Pascal - Formelberechnung via Lazarus


H.Wagner - Mo 21.12.15 10:10
Titel: Formelberechnung via Lazarus
Moin Leute,
und zwar habe ich folgendes Problem. Ich habe ein Programm geschrieben, welches die P-Q Formel anwendet. Das Compilieren funktioniert aber es kommen sehr falsch klingende werte raus. Es stecckt also ein "Rechenfehler" da drinne, den kann ich aber nicht finden. Ich hinterlege hier mal meinen Quellcode :)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button1Click(Sender: TObject);
VAR x1, x2, q, p ,d : REAL;
begin
  q := StrToFloat (Edit1.text);
  p := StrToFloat (Edit2.text);
  Edit3.text := FloatToStr (x1);
  Edit4.text := FloatToStr (x2);
  D := ((p*p)/4) - q;

  IF           D   >     0 then
               begin
               (x1) := (p/2) + SQRT(D) ;
               (x2) := (p/2) - SQRT(D)  ;
               end
   Else If      D   <        0  then
               begin
                panel1.caption := ('Die eingabe war ungültig')  ;
               end

  ELSE (x1) := (p/2);

Ich habe den Wurzelteil als D dargestellt, um mir unnötige schreibarbeit zu sparen. Ich danke schon mal den Leuten die sich dafür Zeit nehmen:)

Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt


baumina - Mo 21.12.15 10:39

Sicher wäre es sinnvoller zuerst die Werte x1 und x2 zu berechnen und erst danach die Ausgabe der Werte auf dem Bildschirm zu machen und nicht andersrum, denn x1 und x2 sind am Anfang der procedure mit irgendeinem Müll belegt.


frankyboy1974 - Mo 21.12.15 11:38

hallo,

muss es nicht


Delphi-Quelltext
1:
2:
               (x1) := -(p/2) + SQRT(D) ;
               (x2) := -(p/2) - SQRT(D)  ;


heissen?

mfg

Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt


klassiknerd - Mo 21.12.15 16:17

Hallo,

vielleicht solltest du die Ausgabe bei negativen D, was in der Mathematik im Übrigen als Diskriminante bezeichnet wird, von "Die eingabe war ungültig" in "Die Lösungen sind nicht reel" verändern. Den mathematisch gesehen gibt es Lösungen, eben nur keine im Bereich der reellen Zahlen.

Beste Grüße
klassiknerd


H.Wagner - Sa 26.12.15 01:17

Danke für die Zahlreiche hilfe:) Frohe weihnacht euch allen und ein guter rutsch ins neue jahr:)