Как вычисляется корень квадратный арифметический в компьютере?

задан 28 Фев '12 13:36

изменен 28 Фев '12 14:31

%D0%A5%D1%8D%D1%88%D0%9A%D0%BE%D0%B4's gravatar image


5525

Что значит "в компьютере"? В нем есть:
- встроенный калькулятор, в том числе инженерный
- редактор Excel, в котором можно вычислять разные функции, к том числе КОРЕНЬ()
- разные языки программирования, в которые обычно встроена функция sqrt()
и т.п.

(28 Фев '12 17:30) DocentI

Я думаю, имеется в виду не работа с приложениями, а внутренняя "кухня". Исходя из этого я и ответил на вопрос.

(28 Фев '12 17:39) Андрей Юрьевич

Про Вас-то ясно! А вот понимает ли автор, как следует задавать вопрос - в этом сомнения. Мне почему-то кажется, если автор не может четко сформулировать вопрос, он не сможет понять и ответ. Впрочем, могут быть исключения...

(28 Фев '12 22:58) DocentI

Вот здесь взгляните http://hashcode.ru/questions/60180/%D0%BA%D0%B0%D0%BA-%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D0%BD%D1%8C%D1%8E%D1%82%D0%BE%D0%BD%D0%B0-%D0%BD%D0%B0-c

(2 Мар '12 14:28) BuilderC

Речь идет о разных методах Ньютона. Прямую итерацию для извлечения квадратных корней тоже впервые применил Ньютон (как и метод касательных для решения алгебраических уравнений).

(2 Мар '12 16:48) Андрей Юрьевич

@Андрей Юрьевич, формула "b(n+1)=(b(n)+a/b(n))/2" в Вашем ответе - это в точности метод касательных.

(2 Мар '12 20:54) BuilderC
1

И правда! Почему-то мне это не приходило в голову. Спасибо.

(2 Мар '12 23:13) Андрей Юрьевич
показано 5 из 7 показать еще 2
10|600 символов нужно символов осталось
2

Итерационной процедурой b(n+1)=(b(n)+a/b(n))/2, она сходится к b=sqrt(a) и есть в системе команд любого процессора. Но есть и команда вычисления a^s при любом s, включая s=1/2, через ряд экспоненты.

ссылка

отвечен 28 Фев '12 14:13

изменен 28 Фев '12 14:16

@Андрей Юрьевич, скажите пожалуйста, каким образом устанавливается начальное приближение b(0)?

(28 Фев '12 19:23) BuilderC

В общем-то, процесс сходится при любом начальном приближении (кроме 0). По-моему, в процессорах заделывается b(0)= a/2, но точно сказать не могу.

(28 Фев '12 21:30) Андрей Юрьевич
10|600 символов нужно символов осталось
0

Можно ограничить аргумент значениями от 0 до 1 и приводить к нему все аргументы большей размерности $%\sqrt{a} = n\sqrt{b}, b \in (0;1)$%. Тогда $%\sqrt{b}$% считается

  • таблично: значения просчитываются заранее с определенным шагом и прописываются в таблицу.
  • рядами: $%\sqrt{1+x}=1+\frac{1}{2}x-\frac{1}{8}x^2+...$%
ссылка

отвечен 28 Фев '12 21:22

Насколько я понял, вопрос был об алгоритмах, реально реализованных в математическом сопроцессоре компьютера. Предложенный Вами алгоритм не очень эффективен, т.к. ряд слишком медленно сходится. Что касается таблицы - все равно между узлами нужно интерполировать, но сама идея используется, например, при вычислении экспоненты.

(28 Фев '12 21:40) Андрей Юрьевич
10|600 символов нужно символов осталось
0

Андрей Юрьевич,

Но есть и команда вычисления a^s при любом s, включая s=1/2, через ряд экспоненты.

Квадратный корень непосредственно в процессоре вычисляется одним способом, самым быстрым, методом Ньютона. и пока никто не придумает способ быстрее и практичнее, будут пользоваться им.

ссылка

отвечен 2 Мар '12 11:49

изменен 2 Мар '12 12:05

Это не совсем так. Если Вы в языке пишете оператор sqrt(2), то, он действительно, транслируется в команду метода Ньютона, но если Вы пишете 2^(1/2), а, тем более, 2^(0.5), то запускается общий алгоритм вычисления степени через экспоненту. Но это все уже зависит от конкретного транслятора. В самом процессоре есть обе возможности, о чем я и написал.

(2 Мар '12 14:07) Андрей Юрьевич
10|600 символов нужно символов осталось
Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

Математика - это совместно редактируемый форум вопросов и ответов для начинающих и опытных математиков, с особенным акцентом на компьютерные науки.

Присоединяйтесь!

отмечен:

×136

задан
28 Фев '12 13:36

показан
6889 раз

обновлен
2 Мар '12 23:13

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии

Дизайн сайта/логотип © «Сеть Знаний». Контент распространяется под лицензией cc by-sa 3.0 с обязательным указанием авторства.
Рейтинг@Mail.ru