Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Вниз
Корень числа Найти похожие ветки
← →
Radgar © (2007-02-20 22:11) [0]Здраствуйте.
Подскажите, пожалуйста, как вычислить корень N-ой степени числа с точностью до целых.
← →
palva © (2007-02-20 22:14) [1]А цифр в числе много? Если немного, то воспользоваться стандартной программой pow и округлить результат. Если много, то итерации Ньютона.
← →
ferr © (2007-02-20 22:59) [2]Блин... а что у тебя есть? калькулятор, бумашка, дельфи, джава?
Альтернативу Newton"у можно Taylor"а. Мне не очевидно что ньютон n-ой степени правильно будет себя вести если считать в целых числах...
← →
ferr © (2007-02-20 23:00) [3]Вообще если заданы ограничения то такие задачи классически решаются бинарным поиском..
← →
Radgar © (2007-02-26 10:43) [4]2 ferr ©
Число до 1000 знаков, поэтому бинарный поиск явно не поможет.
2 palva ©
А подробнее про итерации Ньютона можно?
← →
palva © (2007-02-26 10:52) [5]Radgar © (26.02.07 10:43) [4]
А подробнее про итерации Ньютона можно?
Ну, метод касательных и выводим формулу. Чичас выведу.
← →
Alarm © (2007-02-26 11:00) [6]То есть Y:= корень N-ой степени из X
А, что если попробовать обычным способомY:= Exp((1/N)*Ln(X));
Ну а потом округлить до целого
← →
Radgar © (2007-02-26 11:04) [7]2 Alarm ©
Не катит число до 1000 знаков.
← →
Alarm © (2007-02-26 11:10) [8]В каком месте не катит?
Extended
3.6 x 10^–4951 .. 1.1 x 10^4932
:)
← →
Рамиль © (2007-02-26 11:13) [9]
> Alarm © (26.02.07 11:10) [8]
А значащих знаков сколько?
← →
Думкин © (2007-02-26 11:15) [10]> Alarm © (26.02.07 11:10) [8]
С точностью до целых. :)
Для начала надо иметь бюиблиотеку для работы с такими числами.
Потом считать. Но можно обойтись таблицей логарифмов нескольких простых чисел, если точность не сильно нужна. По крайней мере - прикинуть в легкую.
Кстати, у того же Перельмана есть - как легко вычисляются целые корни большой степени. :о)
← →
Alarm © (2007-02-26 11:17) [11]> Рамиль © (26.02.07 11:13) [9]
Я ж не спрашиваю у автора откуда берутся такие (...) задачи :)
← →
Radgar © (2007-02-26 11:20) [12]2 Alarm ©
Вот-вот, не хватает.
← →
Думкин © (2007-02-26 11:21) [13]Например:
1. Посчитать корень 100-й степени из числа в десятичной записи с 31 знаком
2. ----//------ с 48 знаками..
← →
Radgar © (2007-02-26 11:21) [14]А пример кто-нибудь дать может?
← →
palva © (2007-02-26 11:31) [15]Ищем корень n-й степени из a (a>=0).
Начальное значение x0 можно положить a/n
Далее итерации по следующей формуле:
xkplus1 = xk - (xk^n-a)/(n*xk^(n-1))
Делать итерации, до тех пор пока xkplus не перестанет отличаться от k (надеюсь, что алгоритм деления целых устроен у вас так, что округление до целого идет в меньшую сторону)
Саму формулу можно проверить на следующем примере:
{$APPTYPE CONSOLE}
uses Math;
var
a, xk, xk1: Double;
n: Integer;
begin
a := 27.0;
n := 6;
// Используем стандартную функцию
WriteLn(Power(a, 1/n)); // 1.73205080756888E+0000
// А теперь метод касательных с точностью 0.0001
xk1 := a/n;
repeat
xk := xk1;
xk1 := xk - (Power(xk, n)-a)/(n*Power(xk,n-1));
until abs(xk-xk1) < 0.0001;
WriteLn(xk1); // 1.73205080780224E+0000
end.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c