Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Brauche Hilfe bei dem Heron Verfahren (https://www.delphipraxis.net/58725-brauche-hilfe-bei-dem-heron-verfahren.html)

Tobias88 11. Dez 2005 17:13


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

glkgereon 11. Dez 2005 17:25

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:
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;
Keine Garantie für Fehlerfreiheit^^

marabu 12. Dez 2005 09:37

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:
function Wurzel(a: extended): extended;
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.

Delphi-Quellcode:
const epsilon: extended = 1 / 1000000; // 6 Nachkommastellen
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.

Und jetzt bist du dran.

Grüße vom marabu

TeronG 12. Dez 2005 09:50

Re: Brauche Hilfe bei dem Heron Verfahren
 
Zitat:

Zitat von Tobias88
Kann mir jemand ein passendes Programm zukommen lassen oder irgendwie helfen.

Zukommenlassen? Ich hoffe mal nicht aber helfen gerne ... Poste doch erstmal was du schon hast das Verfahren an sich werdet ihr ja bestimmt schon in der Schule durchgenommen haben. Wie sehen nun deine ersten versuche aus die in Delphi umzusetzen?

Alexander Roth 6. Okt 2006 19:12

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:
http://www.delphipraxis.net/internal...ighlight=heron

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 9. Okt 2006 00:59

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 12:37 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