Python :: Aufgabe #163

3 Lösungen Lösungen öffentlich

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:

vote_ok
von jigga (2880 Punkte) - 13.07.2017 um 15:36 Uhr
Quellcode ausblenden Python-Code
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))
vote_ok
von ZRX88 (2030 Punkte) - 23.08.2017 um 22:46 Uhr
Quellcode ausblenden Python-Code
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)
vote_ok
von Nachbar (2460 Punkte) - 29.08.2017 um 19:43 Uhr
Quellcode ausblenden Python-Code
# 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)))