2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В раздел Пургаторий будут перемещены спорные темы (преимущественно псевдонаучного характера), относительно которых администрация приняла решение о нецелесообразности продолжения дискуссии.
Причинами такого решения могут быть, в частности: безграмотность, бессодержательность или псевдонаучный характер темы, нарушение автором принципов ведения дискуссии, принятых на форуме.
Права на добавление сообщений имеют только Модераторы и Заслуженные участники форума.



Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Улучшение способа извлечения кв. корня из больших чисел
Сообщение03.01.2013, 12:07 
Заблокирован


03/09/06

188
Украина, г. Харьков
Не хочу далее донимать своими вопросами в чужой теме: Поиск простых чисел.
Отвечайте мне здесь, пожалуйста!


tolstopuz в сообщении #666252 писал(а):
да какая там секунда...

http://code.activestate.com/recipes/577 ... -function/

Код:
def isqrt(x):
    if x < 0:
        raise ValueError('square root not defined for negative numbers')
    n = int(x)
    if n == 0:
        return 0
    a, b = divmod(n.bit_length(), 2)
    x = 2**(a+b)
    while True:
        y = (x + n//x)//2
        if y >= x:
            return x
        x = y

print(isqrt(int('1234567890'*30) ** 2))

Уважаемые nnosipov, tolstopuz
И первый, и второй коды мне ничего проясняют (смотрю на них как Баран на калитку).
Прошу ответить: какой диапазон вводимых знаков и необрезаются ли младшие разряды при завершении вычисления?

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение03.01.2013, 12:14 
Заслуженный участник


20/12/10
8858
anwior в сообщении #666520 писал(а):
какой диапазон вводимых знаков и необрезаются ли младшие разряды при завершении вычислиния?
С диапазоном поэкспериментируйте сами. Вычисления точные, т.е. находится именно $[\sqrt{N}]$.

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение03.01.2013, 15:26 
Заслуженный участник


12/09/10
1547
anwior,
предъявленные алгоритмы основаны на итерационном способе нахождения квадратного корня, известном еще древним грекам. А именно: последовательность $x_0=a$, $x_{n+1}=\frac 12(x_n+\frac{a}{x_n})$ очень быстро сходится к величине $\sqrt a$. Для обоснования этого метода можно заметить, что это есть не что иное, как метод Ньютона нахождения корня уравнения $x^2-a=0$.
Метод Ньютона имеет квадратичную скорость сходимости, или же, грубо говоря, порядок расхождения с искомым результатом каждого следующего значения уменьшается примерно в два раза. Т.е. для числа порядка $10^{600}$ потребуется около ... 10-15 итераций (начальное приближение требуется, правда, поточнее). В общем случае, если нам дано $N$-значное число, то число итераций будет порядка $O(\log N)$.
Далее рассмотрим насколько трудоемка одна итерация. У нас используется одна операция сложения, одна операция деления и одна операция деления пополам. Операции сложения и деления пополам (сдвиг на 1 бит) практически бесплатны, а вот операция деления достаточно трудоемка. Например, классический алгоритм деление уголком требует порядка $N^2$ операций. Но и здесь придумано множество быстрых алгоритмов со сложностью порядка $N\log N$. Любопытно, что одним из способов вычисления $a/b$ является поиск всё тем же методом Ньютона корня уравнения $\frac 1x= b$ с последующим "быстрым" умножением на $a$. Исследование показывает, что данный алгоритм требует всего лишь в 3 раза больше времени, затрачиваемого на умножение.
Итого на поиск квадратного корня из $N$-значного числа требуется порядка $O(N \log^2 N)$ элементарных операций (сложение, умножение однозначных чисел).
Стоит также отметить, что современное ПО работает с 64-битовой арифметикой, то бишь в системе счисления по основанию $2^{64}$, где ваше страшное $10^{650}$ имеет всего 34 знака. И проблем с извлечением корня у чисел порядка $10^{1000000}$ нет никаких.

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение03.01.2013, 16:53 
Заблокирован


03/09/06

188
Украина, г. Харьков
Cash
Огромное СПАСИБО!
Ваша информация самодостаточна, исчерпывающа. Не смог сегодня пополнить сим-карту.
Завтра, (надеюсь) удастся предложить информацию достойную внимания для Вас и коллег.

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение13.01.2013, 17:46 
Заблокирован


03/09/06

188
Украина, г. Харьков
Я не спасовал. Задержка связана с тщательной подготовкой набора аргументов.
Хочу прозондировать следующее:
Можно ли назвать ту или иную программу хорошей (эфектной), если в неё вводится
очень много (чересчур много и еще раз много) избыточных данных, но результат точен?
Отдаётся ли в этом случае предпочтение точности в ущерб увеличению используемой опер. памяти?

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение13.01.2013, 19:15 
Заслуженный участник
Аватара пользователя


06/10/08
6422
anwior
Поясните, пожалуйста. Мы хотим вычислить какую то функцию $F$ от параметра $x$, но алгоритм кроме $x$ принимает на вход какие-то еще значения? То есть на самом деле мы вычисляем какую-то другую функцию $G(x, y)$, которая равна $F(x)$, если мы правильно подберем $y$?

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение13.01.2013, 19:26 
Заслуженный участник


27/04/09
28128

(Оффтоп)

anwior в сообщении #671166 писал(а):
эфектной
Скорее, эффективной.

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение13.01.2013, 21:02 
Заблокирован


03/09/06

188
Украина, г. Харьков
Xaositect в сообщении #671201 писал(а):
anwior
Поясните, пожалуйста. Мы хотим вычислить какую то функцию $F$ от параметра $x$, но алгоритм кроме $x$ принимает на вход какие-то еще значения? То есть на самом деле мы вычисляем какую-то другую функцию $G(x, y)$, которая равна $F(x)$, если мы правильно подберем $y$?

Нет, алгоритм иных значений не принимает!
Мои вопросы исключительно в контексте данной темы.
arseniiv в сообщении #671201 писал(а):

Скорее, эффективной.

Я спрашивал об эфекте; и только. Я в Excel тоже эффективно вычисляю кв. корни.

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение13.01.2013, 21:48 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Тогда что Вы имели в виду, когда говорили, что "в программу вводится много избыточных данных"? Приведите пример, пожалуйста.

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение14.01.2013, 21:31 
Заблокирован


03/09/06

188
Украина, г. Харьков

(Оффтоп)

Xaositect в сообщении #671270 писал(а):
Приведите пример, пожалуйста.

Нет проблем.
Уявите, что эта тема есть наша алгоритм-машина. Машина запущена!
Изобрёвший её вводит "очень много избыточных данных", а именно:
anwior в сообщении #671166 писал(а):
Хочу прозондировать следующее:
Можно ли назвать ту или иную программу хорошей (эфектной), если в неё вводится
очень много (чересчур много и еще раз много) избыточных данных, но результат точен?
Отдаётся ли в этом случае предпочтение точности в ущерб увеличению используемой опер. памяти?

Состояние: машина ожидает ввода ответов--да, нет; --да, да; --нет, нет; --нет, да.
В зависимости от ввода 1 - ой из 4-ех пар, по соответствующему ветвлению начнёт что-то там делать. По окончании работы мы получим: полное описание анонсированного изобретения.

До нашей машины к пульту ввода добрался мистер К и ввёл чересчур много избыточных данных, а именно:
Xaositect в сообщении #671201 писал(а):
anwior
Поясните, пожалуйста. Мы хотим вычислить какую то функцию $F$ от параметра $x$, но алгоритм кроме $x$ принимает на вход какие-то еще значения? То есть на самом деле мы вычисляем какую-то другую функцию $G(x, y)$, которая равна $F(x)$, если мы правильно подберем $y$?

Машина поскрипела, позвенела, позеленела, .. но выдала ответ!

anwior в сообщении #671251 писал(а):

Нет, алгоритм иных значений не принимает!
Мои вопросы исключительно в контексте данной темы.


Состояние машины: ждущий режим! никто не знает какую из 4-ех пар (да, нет) выбрать для ввода.
Меж тем, мистер К опять у пульта ввода данных и на сей раз ввёл чересчур много и ещё раз много избыточных данных, а именно:
Xaositect в сообщении #671270 писал(а):
Тогда что Вы имели в виду, когда говорили, что "в программу вводится много избыточных данных"? Приведите пример, пожалуйста.

Похоже машина за-вис-ла!
А я говорил мистеру К, что все четыре ответа на его вопросы он увидел бы в:
полном описании анонсированного изобретения.

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение14.01.2013, 22:13 
Заслуженный участник


27/04/09
28128
anwior в сообщении #671688 писал(а):
Состояние машины: ждущий режим! никто не знает какую из 4-ех пар (да, нет) выбрать для ввода.
Пусть она тогда по очереди выбирает каждую и отрабатывает, раз уж она их так ждала. 4 пары — не 10000 пар. (А если ей лень, пусть выберет всего одну пару случайным образом.)

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение15.01.2013, 11:46 
Заблокирован


03/09/06

188
Украина, г. Харьков
arseniiv в сообщении #671716 писал(а):
anwior в сообщении #671688 писал(а):
Состояние машины: ждущий режим! никто не знает какую из 4-ех пар (да, нет) выбрать для ввода.
Пусть она тогда по очереди выбирает каждую и отрабатывает, раз уж она их так ждала. 4 пары — не 10000 пар. (А если ей лень, пусть выберет всего одну пару случайным образом.)

С таким советом надо стоять рядом с сапёром (опытный Вас пошлет, неопытный, возможно, клюнет), который обезвреживает ядерную бомбу.
Я могу ошибиться, но в первом случае думаю результат будет эффективный, в другом -- эфектен!
А ежели серьезно-- дайте ответы на мои два вопроса.

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение15.01.2013, 15:26 
Заслуженный участник


27/04/09
28128
Мне-то вообще всё равно, но пусть будет (нет, да). Подходит, или другой ответ сгенерировать?

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение15.01.2013, 16:57 
Заблокирован


03/09/06

188
Украина, г. Харьков
arseniiv в сообщении #671936 писал(а):
Мне-то вообще всё равно, но пусть будет (нет, да). Подходит, ...?

Подходит! Вариант очень приемлем для меня.
arseniiv в сообщении #671936 писал(а):
... или другой ответ сгенерировать?

Спасибо! Больше не утруждайте себя.
Одно неказистое "но". Я ранее "забыл" озвучить:
Вы имеете право молчать. Всё сказанное Вами может быть использовано против Вас.
Сейчас ухожу на перерыв (1-2 часа), а вернувшись -- выполню обещанное.
Сим-карту даже заранее пополнил.

 Профиль  
                  
 
 Re: Улучшение способа извлечения кв. корня из больших чисел
Сообщение16.01.2013, 10:26 
Заблокирован


03/09/06

188
Украина, г. Харьков
"anwior'' ранее писал:
Сейчас ухожу на перерыв (1-2 часа), а вернувшись -- выполню обещанное.
Сим-карту даже заранее пополнил
.
Не вкладываюсь в сроки. Приношу извинения. Вчера вдруг вспомнил, что не рассмотрел такой важный аспект, как приложение способа к извлечению корней кубических и выше. Стараюсь оперативно наверстать упущенное.

-- Ср янв 16, 2013 10:11:41 --

(Оффтоп)

Какая падлюка колдует здесь одновременно при редактировании?
Обьявись и згинь навеки.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу 1, 2, 3  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group