Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1172873858
arturich
2007-03-03 01:17
2007.03.25
отправить метод post в форму


11-1148150920
Виталий(гость)
2006-05-20 22:48
2007.03.25
Неожиданно возникшие Проблемы :-(


6-1160830636
Вася
2006-10-14 16:57
2007.03.25
свойства протокола TCP/IP в реестре WINDOWS XP


4-1162362348
romick
2006-11-01 09:25
2007.03.25
Как проверить наличие бумаги в USB-принтере?


2-1172954302
dreamse
2007-03-03 23:38
2007.03.25
Системные сервисы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский