Názor ke článku Jak spočítat přeponu trojúhelníka od Ondrej Certik - V Pythonu jsem taky jednou napsal sqrt() pomoci...

  • 27. 5. 2011 23:23

    Ondrej Certik (neregistrovaný)

    V Pythonu jsem taky jednou napsal sqrt() pomoci Newtonovy metody:

    def sqrt(x):
    eps = 1e-10
    x = float(x)
    r = x/2
    residual = r**2 - x
    while abs(residual) > eps:
    r -= residual/(2*r)
    residual = r**2 - x
    return r

    Pro predstavu, je potreba radove 5 iteraci pro presnost 1e-10 pro cisla kolem 10.

    Pro integery jsem udelal tuto verzi pomoci Newtonovy metody:

    def prep2(a, b):
    x = a**2 + b**2
    r = x/2
    residual = r**2 - x
    r_old = r+1
    while 1:
    r -= residual/(2*r)
    residual = r**2 - x
    if r == r_old:
    break
    r_old = r
    return r

    Pouziva se jen integer division. Melo by to byt presny +-1 (integer). Porad to ale vypada pomalejsi nez ten trik v blogu.