Guten Tag die Herrschaften,
seit einiger Zeit muss ich mit der Aufgabe beschäftigen, die da heißt:
Ich solle eine Methode finden, um die Nullstellen zu berechnen...
Da gäbe es ja zwei Ansätze: das Newtonsche Verfahren und dann das Verfahren der Annäherung (genauer Name ist mir gerade entfallen)
Ich habe ein bißchen im Internet gesucht, gefunden, eingefügt und siehe da es "geht" aber leider nur bedingt.
Denn wenn ich Werte eingebe, die dem Programm nicht "passen" bleibt es entweder hängen (also endlosschleife) oder es gibt keine Nullstellen (also eig. gibt es eine er zeigt sie nur nicht an), zeichnet aber die Fkt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function f(x:real):real; begin f:=k5*power(x,5)+k4*power(x,4)+k3*power(x,3)+k2*power(x,2)+k1*x+k0; end; procedure TPlotter.GetNull; var x0,x1,x2:real; begin x0:= -100; x1:= 100; repeat x2:= x1-f(x1)*(x1-x0)/(f(x1)-f(x0)); x0:=x1; x1:=x2; until abs(f(x2))<0.0000001 ;Memo1.Lines.Add(FloatToStr(x2)); end; |
woran kann das liegen?
Ist irgendwo ein Fehler drin?
Moderiert von
Christian S.: Quote- durch Delphi-Tags ersetzt