@matsincos

Почему не существует не итерационных/точных методов для вычисления корня из числа?

Многие методы приближенного вычисления корня, такие как метод бисекции, метод Ньютона и метод половинного деления, являются итерационными. Они используют последовательные приближения для приближенного нахождения корня.

Меня настиг вопрос, почему нету не итерационного или точного метода
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ответы на вопрос 5
AshBlade
@AshBlade
Просто хочу быть счастливым
Если не нравится итерация - сделай через рекурсию.
Точных нет, потому что числа иррациональные
Ответ написан
wataru
@wataru Куратор тега Математика
Разработчик на С++, экс-олимпиадник.
Есть же методы: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D...

Они обычно медленнее и более трудоемкие, поэтому из и не используют особо.
Ответ написан
Alexandroppolus
@Alexandroppolus
кодир
В компьютерной науке, где-то глубоко под капотом (может, даже на уровне аппаратной реализации), все вычисления итерационные в той или иной мере.

А по поводу точности - иррациональные числа не только вычислить, а даже записать точно нельзя, например тип double - это всего 8 байт, и не получится сколько угодно после запятой. Потому в рамках типа double (или любого другого) можно говорить о "точном" значении корня из двух - о наиболее точном приближении приближении, которое поместилось в тип
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
Всё крайне просто.
Потому что, начиная с рационального числа и проводя четыре арифметических действия, +−×: , мы будем оставаться в поле рациональных чисел. А корень в большинстве случаев иррациональный.
Мы можем получить лишь рациональное число, достаточно близкое к нашему корню.
И все «нормальные» методы вычисления корня работают так: если ещё немного повычислять, можно получить более точный корень. То есть итерационные.

Пример НЕитерационного метода предложили Ын, Уолш и Таролли, но более он известен по игре Quake III: придумать приближение логарифма, разделить на 2 и обратить это самое приближение. Но этот метод не масштабируем: если точности не хватает, придётся брать в руки какой-нибудь метод Ньютона и дотягивать точность. Ну или придумывать более точное приближение логарифма — исходное было всего лишь прочтением компьютерного дробного как целого числа. То есть придётся рубить его на мантиссу и порядок, порядок брать как есть, а мантиссу преобразовывать каким-то многочленом (если читать дробное как целое, то наш многочлен — банальная линейная функция, log₂(1+x)≈x).

А лучше порядок превратить в несмещённый, поделить надвое, вернуть опять к смещённому, и остаётся только найти приближение — многочленом или таблицей — для x∈[1,4).

Другой НЕитерационный алгоритм — банальная таблица. Каким-то раком предвычислить таблицу, а то, что в таблицу не попадает, приблизить любым доступным методом, да хоть линейной интерполяцией или многочленами Эрмита.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Тоже самое можно спросить про синус или логарифм. Все они вычисляются через числовые ряды.
Делая итерации.

Если тебе нужен аналог таблично решения - то ты можешь расчитать функцию заранее
в некоторых точках и пользуясь гладкостью просто вычислять интерполяцию.

Вот тебе и будет почти точный метод.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы