AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Algorithmen Delphi Wurzeln in beliebiger Genauigkeit berechnen
Thema durchsuchen
Ansicht
Themen-Optionen

Wurzeln in beliebiger Genauigkeit berechnen

Ein Thema von inherited · begonnen am 3. Feb 2006 · letzter Beitrag vom 23. Jul 2006
 
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#1

Wurzeln in beliebiger Genauigkeit berechnen

  Alt 3. Feb 2006, 14:22
Hi, hier ein Algorithmus zur Berechnung von Wurzeln ohne Unit "Math" in beliebiger Genauigkeit nach Heron:

Formel des Heron:

http://lamp.clausvb.de/images/heron-formel.gif


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: integer;
  x, y, wurzel: real;
begin
  Wurzel := StrToFloat(edit1.text); //Wurzel ist die Zahl uas der die Wurzel gezogen werden soll
  I:=0; //I und J für die Berechnung gebraucht
  J:=0;
  while j=0 do //Berechnen von J
  begin
    inc(I);
    inc(J);
    if I*I < Wurzel/2 then j:=0; //Solange I² kleiner Wurzel-halbe ist die Schleife wiederholen
  end;
  x:=i;
  y:=wurzel;
  i:=0;

  while I<StrToInt(edit2.text) do //edit2 ist die Genauigkeit sprich Anzahl der Durchläufe
  begin
    inc(i);
    y:=(x+y)/2; //An die Wurzel herantasten
    x:=Wurzel/y;
  end;

  edit3.text:=FloatToStr(x); //Anzeige Wurzel der Zahl
  edit4.text:=FloatToStr(x*x); //Anzeige der Berechneten Zahl zum ² zum überprüfen der Genauigkeit
end;
Chakotay1308 hat den Code in eine eigene Funktion gepackt und somit von der Oberfläche los gelöst:
Delphi-Quellcode:
// Wurzel(n) mit acc Durchläufen nach Heronverfahren berechnen
function SqrHeron(n: real; acc: integer): real;
var
  i, j: integer;
  y: real;
begin
  i := 0;
  j := 0;
  
  while j = 0 do
  begin
    inc(i);
    inc(j);
    if i*i < (n/2) then j := 0;
  end;
  
  Result := i;
  y := n;
  i := 0;
  
  for i := 0 to acc do
  begin
    y := (Result+y)/2;
    Result := n/y;
  end;
end;
[edit=Chakotay1308]Code-Style angepasst und eigenen Code druntergesetzt. Mfg, Chakotay1308[/edit]
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz