Heron Algo. Wurzelziehen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Heron Algo. Wurzelziehen

Beitrag von X0r »

Code: Alles auswählen

Procedure.f heronalg(Zahl.f,Startwert.f)
a.f=Zahl
b.f=Startwert
n.f=0.0
last.f=0.0
Repeat
n=(b+(a/b))/2
If last=n
  Break
EndIf
  last=n
    If n=a
      Break
    Else
     b=n
    EndIf
ForEver
ProcedureReturn n
EndProcedure 


Debug heronalg(0.5,1)
Diese (überflüssige) Prozedur berechnet die Wurzel einer Zahl mit dem Heron Algo.
Zuletzt geändert von X0r am 21.08.2008 19:53, insgesamt 2-mal geändert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Diese Berechnungen sind aber falsch wenn die Wurzel aus einer Zahl nicht Ganzzahlig ist, oder die Zahl selber nicht Ganzahlig ist.
Hier eine verbesserung :

Code: Alles auswählen

Procedure.f Heron(Zahl.f, Start.f)
 y.f = Zahl / Start
 m.f = (Start + y) / 2
 q.f = m*m
 Repeat
  Start = m
  y = Zahl / Start
  m = (Start + y) / 2
  q = m*m
 Until m = Start
 ProcedureReturn m
EndProcedure
Debug Heron(16, 1)
Debug Heron(256, 1000)
Debug Heron(2, 8)
Debug Heron(8, 2)
Debug Heron(0.25, 6)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Hatte einen kleinen fehler gemacht(Wegen int(b)).

Fehler behoben!
Antworten