Om de vierkantswortel uit een positief getal $$g$$ te berekenen, kan volgend iteratief schema gebruikt worden:
$$ \left\{ \begin{array}{ll} a_0 = 1 & \\ a_{i+1} = \frac{1}{2} \left( a_i + \frac{g}{a_i} \right) & \textrm{ als } i > 0 \end{array} \right. $$
Schrijf een programma dat een positief, reëel getal $$g>1$$ inleest, en de vierkantswortel uit $$g$$ als resultaat oplevert. Stop de iteratie zodra $$a_i^2$$ dichter bij $$g$$ ligt dan een eveneens in te lezen strikt positieve constante. Druk als resultaat de berekende vierkantswortel af, naast het aantal vereiste iteraties om tot dit resultaat te komen.

Voorbeeld

Stel dat $$g$$ = 2 en de tolerantie gelijk aan 0.0001

  1. Iteratie 1: $$a_{1} = \frac{1}{2} \left(a_{0} + \frac{g}{a_{0}}\right) = \frac{1}{2} \left(1 + \frac{2}{1}\right) = 1.5$$
    Check: $$|2 - 1.5^2| = 0.25 > 0.0001$$

  2. Iteratie 2: $$a_{2} = \frac{1}{2} \left(1.5 + \frac{2}{1.5}\right) = 1.4166666666666665$$
    Check: $$|2 - 1.4166666666666665^2| = 0.006944444444444198 > 0.0001$$

  3. Iteratie 3: $$a_{3} = \frac{1}{2} \left(1.4166666666666665 + \frac{2}{1.4166666666666665}\right) = 1.4142156862745097$$
    Check: $$|2 - 1.4142156862745097^2| = 6.007304882427178e-06 < 0.0001$$

Invoer

Twee reële getallen, namelijk het getal $$g > 0$$ (waarvoor de vierkantswortel moet bepaald worden) en de tolerantie waarmee dit moet gebeuren (eveneens strikt groter dan 0)

Uitvoer

Twee regels met daarop:

Voorbeeld

Invoer:

2.0
0.0001
    

Uitvoer:

1.4142156862745097
3