Mikhail Levin
Искусственный Интеллект
(615612)
5 лет назад
1. есть алгоритм вычисления "уголком", не знаю, как сейчас, раньше в школе проходили, 8-й класс, не сложнее деления уголком.
2. есть древний сверхбыстрый алгоритм (в самом деле - метод Ньютона, он же - касательных).
Хотим извлечь корень из А, обозначим точный корень как r.
Возьмем какое-то начальное приближение r0. Вообще-то можно взять какое попало положительное число, но быстрее будет, если мы возьмем r0 больше, чем r, но не намного больше.
Например, если надо извлечь из А=123456, можно взять 400 - знаков вдвое меньше, первая цифра 4 в начале - что-то около корня из 12. Если лень - можно взять просто r0=A.
А теперь посмотрим на число A/r0: если у нас r0 < r, то A/r0 > r, и наоборот, если у нас r0 > r, то A/r0 < r.
Значит неизвестный нам точный корень r лежит где-то между r0 и A/r0. Давайте возьмем в качестве нового приближения середину этого отрезка, то есть r1=(r0 + A/r0) / 2. Потом так же получим следующее приближение итд.
Такой метод удваивает число точных знаков на каждом шаге, так что долго считать не придется.
Например:
400.00000000000000
354.32000000000000
351.37539850982200
351.36306031259300
351.36306009596400
351.36306009596400
- все сошлось на 15 знаков точности