Python :: Aufgabe #185

2 Lösungen Lösungen öffentlich

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

...
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:

vote_ok
von jigga (4260 Punkte) - 05.06.2018 um 11:58 Uhr
Quellcode ausblenden Python-Code
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)
vote_ok
von JND1992 (50 Punkte) - 29.11.2018 um 20:24 Uhr
Quellcode ausblenden Python-Code
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.')