Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.25;
Скачать: CL | DM;

Вниз

Корень числа   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
15-1172632302
Slider007
2007-02-28 06:11
2007.03.25
С днем рождения ! 28 февраля


3-1167670766
alex_dorin
2007-01-01 19:59
2007.03.25
midas -использование нескольких серверов приложений


3-1167223500
wipr
2006-12-27 15:45
2007.03.25
Поломка базы IB (checksum error on database page 38260)


11-1152110257
oleg_l_k
2006-07-05 18:37
2007.03.25
Библиотека доступа к IB/FB/Yaffil на базе KOL


6-1160476510
Zorro666
2006-10-10 14:35
2007.03.25
реализация сетевого протокола поверх tcp соединения