![]() |
Brauche Hilfe bei dem Heron Verfahren
Mein Name ist Tobias,ich bin neu im Delphi `Geschäft` und brauche Hilfe bei dem Heron Verfahren.Ich arbeite in meiner Schule jetzt mit Delphi und muss am Freitag ein Programm abgeben,aber ich kann Delphi nicht so wirklich.
Das Projekt:Wir sollen aus einem Rechteck zum Beispiel mit dem Flächeninhalt 8 ein Quadrat mit dem gleichen flächeninhalt erzeugen.Man soll den Flächeninhalt angeben und dann soll anhand dem heron verfahren rauskommen wie lang die Seite ist.Ich denke es ist sicher einfach aber ich kann es einfach nicht. Kann mir jemand ein passendes Programm zukommen lassen oder irgendwie helfen.Habe aus der stunde noch ein paar sachen aufgeschrieben und hier als anhang beigefügt.Schaut nach falls noch was unklar ist oder fragt einfach nochmal nach. Danke Tobias |
Re: Brauche Hilfe bei dem Heron Verfahren
soweit ich mich erinnern kann, berechnet der Heron-Algo die Quadratwurzel einer Zahl mithile von Annäherung (oder?)
wenn das stimmt kann man ihn ähnlich wie folgt implementieren
Delphi-Quellcode:
Keine Garantie für Fehlerfreiheit^^
function GetSqrtHeron(x,y, Genauigkeit: Extended): Extended;
var D, Diff: Extended; begin D:=1; //Um wieviel je schritt angenähert wird Diff:=Abs(X-Y); //Differenz der Werte while Diff>Genauigkeit do //Solange noch zu ungenau begin while D>Diff do //Größenordnung anpassen D:=D / 10; if x>y then //Wenn X größer begin X:=X-D; //X verkleinern Y:=Y+D; //Y vergrößern end else begin X:=X+D; //X vergrößern Y:=Y-D; //Y verkleinern end; Diff:=Abs(X-Y); //Differenz neu berechnen end; Result:=(X+Y) / 2; //Durchschnitt => Erhöhte Genauigkeit end; |
Re: Brauche Hilfe bei dem Heron Verfahren
Herzlich willkommen in der Delphi-PRAXiS, Tobias.
Bis Freitag ist ja noch reichlich Zeit. Ich vermute, dass das Näherungsverfahren nach Heron mit dem mir bekannten Babylonischen Wurzelziehen identisch ist. Mit den Vorgaben deines Lehrers steht die Signatur deiner Funktion schon fest:
Delphi-Quellcode:
Die Lösungsidee hast du ja auch schon genannt bekommen. Du prüfst in einer Schleife - schließlich ist es ja ein Näherungsverfahren - für einen geeigneten Startwert r (z.B. 1 oder a/2) ob das Quadrat dieses Wertes nahe genug bei deinem Wert a liegt. Du brauchst also noch eine Konstante epsilon, mit der du das Abbruchkriterium der konvergierenden Folge in deiner Schleife formulieren kannst.
function Wurzel(a: extended): extended;
Delphi-Quellcode:
Solange der Abstand noch zu groß ist, ersetzt du den Ausgangswert r durch einen verbesserten Näherungswert, indem du das arithmetische Mittel aus r und a/r - das sind genau die Seitenlängen eines Rechtecks mit der Fläche a - bildest.
const epsilon: extended = 1 / 1000000; // 6 Nachkommastellen
Und jetzt bist du dran. Grüße vom marabu |
Re: Brauche Hilfe bei dem Heron Verfahren
Zitat:
|
Re: Brauche Hilfe bei dem Heron Verfahren
Hi,
hier das Forum hat eine super Code Library und da findest du genau das was du brauchst: ![]() Doch ich rate dir dringend den Code nicht zu kopieren einzubauen und irgendwie auszuprobieren damit es in den meisten Fällen funktioniert. Das ist auch nicht der Sinn einer Code-Library. Deshalb: Schau dir genau die ansätze an, VERSTEHE sie und dann kannst du sie einbauen. |
DP-Maintenance
Dieses Thema wurde von "alcaeus" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Ist eine Delphi-spezifische Frage. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz