Wurzel nach Heron von Alexandria
Es ist ein anwenderfreundliches Delphiprogramm zu erstellen, welches die Wurzel aus einer reellen Zahl mit beliebiger Genauigkeit ausrechnet.
Heron von Alexandria hatte dazu folgende Idee:
Wir zerlegen die Zahl in zwei Faktoren, die anfangs noch ganz und gar nicht gleich sind. Dann werden die Zahlen schrittweise einander angenähert, wobei ihr Produkt immer gleich der Zahl bleiben muss. Mit jedem Schritt wird der Betrag der Differenz zwischen den beiden Faktoren immer kleiner und unterschreitet irgend wann unsere Forderung für die höchstzulässige Abweichung von der richtigen Wurzel.
Heron begann als Anfangswerte der beiden Faktoren mit der Zahl selbst und 1. Deren Produkt ist ja genau die Zahl.
Dann nahm er als ersten Faktor den Mittelwert aus den beiden letzten Faktoren und als zweiten Faktor den Quotienten aus der Zahl und dem neuen ersten Faktor. Damit ist gesichert, dass auch von diesen beiden neuen Faktoren das Produkt genau die Zahl ist.
Dieser Vorgang wird so lange wiederholt, bis sich die beiden neuen Faktoren nur noch so wenig unterscheiden, dass es für die letzte gültige Stelle keine Bedeutung mehr hat.
Das ist genau die Logik für eine fußgesteuerte Schleife REPEAT UNTIL.
Lassen Sie auch die Anzahl der durchlaufenen Schleifen zählen und ausgeben.
|
|
| Komponente |
Eigenschaft |
Wert |
Bemerkungen |
| Form1 |
Caption |
‘Wurzel nach Heron von Alexandria’ |
Überschrift in der Kopfleiste des Programmfensters |
| Label1 |
Caption |
‘Eingabe’ |
Eingabeaufforderung |
| Label2 |
Caption |
‘Wurzel aus ’ |
Eingabeaufforderung |
| Edit1 |
Text |
‘0’ |
Eingabefeld für die Zahl |
| Label3 |
Caption |
‘ auf ’ |
Eingabetext |
| Edit2 |
Text |
‘0’ |
Eingabefeld für die Stellenzahl |
| Label4 |
Caption |
‘ Stellen genau ’ |
Eingabetext |
| Label5 |
Caption |
‘ ist ’ |
Ausgabetext |
| Edit3 |
Text |
‘0’ |
Ausgabefeld für die Wurzel |
| Label6 |
Caption |
‘Dazu brauchte das Programm ’ |
Ausgabetext |
| Edit4 |
Text |
‘0’ |
Ausgabefeld für die Schleifenzahl |
| Label7 |
Caption |
‘ Schleifen’ |
Ausgabetext |
| BitButton1 |
Caption |
‘berechnen’ |
OK-Button für den Start der Berechnung |
| BitButton2 |
Caption |
‘löschen’ |
Cancel-Button für eine Neuberechnung |
| BitButton3 |
Caption |
‘Ende’ |
Close-Button für das Programmende |
|
|
Um die unzuverlässigen Ziffern nicht anzuzeigen, benutzen Sie entweder das Rundungsprogramm aus dem Beispiel unter FOR TO DO oder die Funktion FloatToStrF().
|
| Lösung |
|

|
|
|