Python :: Aufgabe #163
3 Lösungen

Wurzel ziehen mit Intervallschachtelung
Anfänger - Python
von Felix
- 11.07.2017 um 21:30 Uhr
Schreibe eine Methode die aus einer Zahl die Wurzel zieht, benutze dafür die Intervallschachtelung.
Lösungen:

upper = 0 lower = 0 zahl = float(input("Zahl eingeben: ")) precision = int(input("Genauigkeit (max 16): ")) for i in range(precision): while lower**2 < zahl: lower += 1/10**i upper = lower lower -= 1/10**i print() print("Untere Grenze von Wurzel", int(zahl), ":", round(lower, precision)) print("Obere Grenze von Wurzel", int(zahl), ":", round(upper, precision))

import math def get_numbers(number, lower, upper): if lower == 0: stellen = 0 elif not '.' in str(lower): stellen = 1 else: stellen = len(str(lower).split('.')[1]) +1 for i in range(9): i = i/ math.pow(10,stellen) if number >= math.pow(lower + i,2) and number <= math.pow(lower+i+1,2): lower = (lower + i) upper = lower + i + 1/math.pow(10,stellen) return lower, upper def iterate_over_steps(number, number_steps): for i in range(number_steps): if i == 0: lower = 0 upper = number lower, upper = get_numbers(number, lower, upper) print('The square root of %f: the lower bound is %f and the upper %f' %(number, lower, upper)) iterate_over_steps(3.12, 30)

# Python 2.7 # -*- coding: utf-8 -*- from __future__ import print_function import math zahl = input("Wurzel ziehen aus: ") # Erste Grenzpaarung ermitteln def grenzen_ermitteln(zahl): l = [] # Untergrenze for i in range(zahl, 0, -1): if math.pow(i, 2) < zahl: l.append(i) break # Obergrenze for j in range(zahl): if math.pow(j, 2) > zahl: l.append(j) break return l # Intervallschachtelung def intervallschachtelung(zahl): a = float(grenzen_ermitteln(zahl)[0]) b = float(grenzen_ermitteln(zahl)[1]) genauigkeit = (float(1) / 10) while genauigkeit > 0.001: while a < b: if math.pow(a, 2) > zahl: b = a - genauigkeit a, b = b, a break a = a + genauigkeit genauigkeit = genauigkeit / 10 return a print("\nDie Wurzel aus " + str(zahl) + " ist: " + str(intervallschachtelung(zahl)))