Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Nullstellen
WOOH - Fr 30.11.07 21:48
Titel: Nullstellen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button1Click(Sender: TObject); begin Label5.Caption := ' Bitte Warten!'; i := 0; eins := Power (strtofloat (Edit1.Text),3); zwei := Power (strtofloat (Edit2.Text),2); drei := Power (strtofloat (Edit3.Text),1); vier := strtofloat (edit4.Text); repeat
i := i + 0.0000000000000001; Label6.Caption := floattostr (i); FX := eins*i+zwei*i+drei * i + vier;
if FX = 0 then Label5.Caption := 'Die erste positive Nullstelle findet sich bei ' + floattostr (i) + ' .'
until FX = 0; |
Das ist bis jetz mein Quelltext!
Dabei stürzt mein Programm imma ab^^
Kann mir bitte einer helfen?^^
Moderiert von
Gausi: Delphi-Tags hinzugefügt
mkinzler - Fr 30.11.07 21:53
In welcher Zeile?
Delete - Fr 30.11.07 21:54
Hallo und :welcome: im Delphi-Forum.
2 Dinge, die sehr wichtig sind. Nicht nur für uns sondern auch für Dich.
- Bitte poste Delphi-Codes innerhalb der Delphi-Tags, damit Deine Posts für alle übersichtlicher werden. Die findest Du unter "Bereiche", wenn Du einen Beitrag schreibst.
- Bitte formuliere Dein Anliegen etwas klarer. Was willst Du mit dem Programm erreichen und was für einen Fehler gibt er Dir an welcher Zeile aus?
Viele Grüße
Gausi - Fr 30.11.07 21:56
Hallo und :welcome:
Ich nehme mal an, dass du Nullstellen von Polynomen dritten Grades bestimmen willst - aber so, wie du das da vorhast, funktioniert das vorne und hinten nicht ;-)
Ich nehme einfach mal an, dass das Programm scheinbar abstürzt, weil du eine Quasi-Endlosschleife drin hast. Das Programm reagiert dann nicht mehr auf Eingaben.
WOOH - Fr 30.11.07 22:35
Genau das isset!^^
Gibbet denn dazu eine Alternative?^^ Möglichst eine funktionnierende?^^
Gausi - Fr 30.11.07 22:45
Schau dir deinen Code mal genauer an und guck, was du da potenzierst - auf jeden Fall nicht das "x" ;-)
Dann: Ein Vergleich von Floats (= 0) ist immer eine schlechte Idee, was mit der Zahldarstellung im Rechner und damit verbundenen Ungenauigkeiten zu tun hat.
Weiter: Überleg mal, wie lang deine Berechnung dauert, wenn die Nullstelle weiter hinten liegt...du machst das in 0.0000000000000001-er Schritten. D.h. du brauchst 1.000.000.000.000.000 Schritte, um eine Nullstelle bei 1 zu finden.
Ich weiß, dass es eine Formel für Gleichungen dritten Grades gibt - schau mal bei Wikipedia, da sollte man das nachlesen können. Ansonsten helfen iterative Verfahren wie z.B. das Newton-Verfahren, um eine Nullstelle zu finden.
Die andere Frage hab ich mal gelöscht - Bitte erstelle dafür einen eigenen Thread ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!