Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Eine ganzzahl herrausfinden?

  Alt 20. Mai 2008, 21:09
Herzlich willkommen in der Delphi-PRAXiS, heru1990.

Du suchst iterativ in Schritten von 1E-4 nach einer ganzzahligen Lösung einer Funktion. Dein Abbruchkriterium ist aber unzuverlässig, da dein Rechner ganzzahlige Ergebnisse oft nach Art der ersten Taschenrechner nur näherungsweise als Fließkommazahl wiedergeben kann. Notwendig ist da ein Epsilon-Test:

Delphi-Quellcode:
const
  EPSILON = 1E-8;

function F(x: Double): Double;
begin
  Result := (-8/5) * x + Sqrt(39 / 25 * x * x - 19);
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  x, y: Double;
begin
  x := -100;
  repeat
    x := x + 0.0001;
    y := F(x);
  until IsZero(y - Round(y), EPSILON);
  ShowMessage(Format('%0.4f %.0n', [x, y]));
end;
Getippt und nicht getestet.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat