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.')
2092538

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.