Python :: Aufgabe #185
2 Lösungen
Babylonisches Wurzelziehen / Heron-Verfahren / Heronsches Näherungsverfahren
Anfänger - Python
von Gelöschte Person
- 03.06.2018 um 08:27 Uhr
Die zu schreibende Anwendung soll eine positive Zahl entgegennehmen und durch das Heron-Verfahren näherungsweise die Quadratwurzel berechnen.
Zusatz:
Es werden die einzelnen Schritte ausgegeben, siehe Beispiel.
Beispiel: mit Wurzel aus 12
~ Viel Spaß :)
Zusatz:
Es werden die einzelnen Schritte ausgegeben, siehe Beispiel.
Beispiel: mit Wurzel aus 12
...
Die Wurzel aus 12 ist zwischen 3.5 und 3.4
...
Die Wurzel aus 12 ist zwischen 3.45 und 3.46
...
~ Viel Spaß :)
Lösungen:
import math
a = float(input("Positive Zahl eingeben: "))
x_0 = math.floor((a+1)/2)
while x_0**2-a > 0.00001:
x_0 = (x_0 + a/x_0)/2
print(x_0)
def heronverfahren(eingegebene_zahl, zahl_der_naeherung):
wurzel_der_zahl = (1/2) * (zahl_der_naeherung + (eingegebene_zahl/zahl_der_naeherung))
return(wurzel_der_zahl)
#Aufforderung zur Eingabe
print('Bitte die Zahl eingeben, aus der die Wurzel gezogen werden soll:')
#Abfangen eines Fehlers bei der Eingabe einer Zahl
try:
# Eingabe der Zahl, aus der die Wurzel gezogen werden soll
zahl_aus_der_die_wurzel_gezogen_werden_soll = float(input())
if zahl_aus_der_die_wurzel_gezogen_werden_soll <= 0:
print('Es kann nur aus positiven Zahlen eine Wurzel gezogen werden.')
raise exit()
#Ermitteln des Startwertes für die Wurzelberechnung
#Schätzung für den Startwert erhält man aus der Taylorreihen-Entwicklung der binomischen Reihe um 1
schaetzung_des_startwertes = ( 1 + zahl_aus_der_die_wurzel_gezogen_werden_soll ) /2
while schaetzung_des_startwertes*schaetzung_des_startwertes != zahl_aus_der_die_wurzel_gezogen_werden_soll:
schaetzung_des_startwertes = heronverfahren(zahl_aus_der_die_wurzel_gezogen_werden_soll, schaetzung_des_startwertes)
if schaetzung_des_startwertes*schaetzung_des_startwertes == zahl_aus_der_die_wurzel_gezogen_werden_soll:
wurzel = schaetzung_des_startwertes
#Ausgabe der eingegebenen Zahl als float-Wert
print('Eingegebene Zahl: ' + str(zahl_aus_der_die_wurzel_gezogen_werden_soll))
#Ausgabe der Zahl für die schätzung
print('Wert der Zahl nach der 1. Schätzung: ' + str(schaetzung_des_startwertes))
#Ausgabe der Wurzel der Zahl
print('Die Wurzel der Zahl ist: ' + str(wurzel))
print(str(wurzel) + ' * ' + str(wurzel) + ' = ' + str(wurzel*wurzel))
#Ausnahme, falls keine Zahl eingegeben wurde
except:
print('Syntax wurde nicht eingehalten.')