Python :: Aufgabe #185
2 Lösungen

Babylonisches Wurzelziehen / Heron-Verfahren / Heronsches Näherungsverfahren
Anfänger - Python
von Exception
- 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.')