2014 dxdy logo

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

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


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


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу 1, 2, 3, 4  След.
 
 Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 02:57 


01/03/20
46
Как на компьютере вычисляются корни, показательная функция, логарифмы, тригонометрические функции? В учебниках по вычислительной математике есть разные способы, в том числе ряд Тейлора, итерационные методы. Но из учебников не понятно, какие алгоритмы приводятся для иллюстрации теории, а какие реально используются на практике.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 07:52 
Заслуженный участник
Аватара пользователя


11/03/08
9556
Москва
Здесь кое-что можно найти
http://libarch.nmu.org.ua/handle/Genofo ... tribute=ru
http://www.toroid.ru/ivanovVV.html
Но вообще при выборе метода надо учитывать архитектуру конкретной ЭВМ.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 08:42 


20/01/12
194
IvanX в сообщении #1480468 писал(а):
Как на компьютере вычисляются корни, тригонометрические функции?

CORDIC

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 13:02 


01/03/20
46
В приведенных книгах много методов, без примеров, не понятно, что именно выбрать :roll:
Попробую уточнить вопрос. Хочу написать программку на C++, которая вычисляет квадратный корень данного числа $x$ с заданной точностью $\varepsilon$. Какой именно алгоритм использовать?

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 13:07 
Заслуженный участник
Аватара пользователя


11/03/08
9556
Москва
Если просто действительные числа - алгоритм Герона. Для каких-то других числовых систем, а также для очень больших целых - надо что-то иное, но что? Надо уточнить, что считаем.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 13:20 


01/03/20
46
Евгений Машеров в сообщении #1480516 писал(а):
Если просто действительные числа - алгоритм Герона.
Как по заданной погрешности $\varepsilon$ узнать кол-во итераций? Есть какая-то формула для оценки погрешности?
У меня получилось доказать сходимость последовательности Герона только для $a>1$. Доказал, что эта последовательность ограничена снизу и не убывает. Как доказать при $0<a<1$?

Евгений Машеров в сообщении #1480516 писал(а):
Надо уточнить, что считаем.
Для чисел double. Пусть я хочу написать свою функцию sqrt для C++. И желательно осмысленно, оптимально, с минимальным числом итераций по заданной погрешности.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 13:30 


23/04/17
305
Россия
IvanX в сообщении #1480468 писал(а):
Как на компьютере вычисляются корни

Например, так это делается на ассемблере: http://ww1.microchip.com/downloads/en/AppNotes/00544d.pdf

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 14:24 


14/01/11
2919
IvanX в сообщении #1480518 писал(а):
Как по заданной погрешности $\varepsilon$ узнать кол-во итераций? Есть какая-то формула для оценки погрешности?

Этими вопросами занимается вычислительная математика. Берите учебник и изучайте. В частности, итерационная формула Герона для нахождения квадратного корня - это не что иное, как применение метода Ньютона к уравнению $x^2-a=0$, а сходимость метода Ньютона давно исследована и описана.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 14:49 


05/09/16
11548
IvanX в сообщении #1480468 писал(а):
Как на компьютере вычисляются корни,

Вот так: http://cs.uccs.edu/~cs591/bufferOverflo ... 4/e_sqrt.c

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 14:53 
Заслуженный участник
Аватара пользователя


21/11/12
1881
Санкт-Петербург
Евгений Машеров в сообщении #1480516 писал(а):
... а также для очень больших целых - надо что-то иное

Важно еще в какой форме должен быть выражен результат. В простых дробях квадратный радикал из натурального $m$ может вычисляться так: $\dfrac{p_{n+1}}{q_{n+1}}=\dfrac{2p_n^2-1}{2p_nq_n}$, где $\dfrac{p_1}{q_1}$ — первое (или некоторое) решение ур. Пелля. Быстрее вряд ли что найдется. Пример: $\sqrt{2}=\dfrac{3}{2},\dfrac{17}{12},\dfrac{577}{408},\dfrac{665857}{470832},...$ уже $12$ дес. знаков.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 17:55 
Заслуженный участник


16/02/13
4115
Владивосток
IvanX в сообщении #1480515 писал(а):
Какой именно алгоритм использовать?
Как вы думаете, писали бы толстенные книжки по вычислительным методам, если б существовал Самый Наилучший Алгоритм?
Andrey A в сообщении #1480529 писал(а):
В простых дробях
Чем ещё хорош подобный метод — очень просто вычисляется погрешность. Поскольку имеет место быть сходящийся ряд побольше-поменьше. А напоследок можно не постесняться да разделить, дабы получить десятичную дробь.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 18:25 
Заслуженный участник
Аватара пользователя


21/11/12
1881
Санкт-Петербург
iifat в сообщении #1480544 писал(а):
... не постесняться да разделить

Можно. Если разовые затраты, к которым нужно отнести и решение Пелля, не сопоставимы с общими — прямой смысл. С рациональным $m$ это работает не хуже, тот же период, а вот для радикалов степени $>2$ периода нет. Но если нужна именно простая дробь, есть другие способы помучиться.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 18:43 
Заслуженный участник
Аватара пользователя


01/08/06
3054
Уфа
Забавную вещь обнаружил: если число, не меньшее 1, записанное в стандартном формате IEEE-754 одинарной или двойной точности, побитово сдвинуть вправо, то получится неплохое начальное приближение для квадратного корня из этого числа.
Интересно, это так задумано, или случайно получилось?
UPD: К сожалению, не работает, см. коммент ниже.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 18:54 
Заслуженный участник
Аватара пользователя


15/10/08
11587
worm2 в сообщении #1480558 писал(а):
Интересно, это так задумано, или случайно получилось?
Случайно ли получилось, что $x/2$ - хорошее начальное приближение для $\sqrt x $? Наверное, это больше зависит не от стандарта, а от алгоритма.

 Профиль  
                  
 
 Re: Как на компьютере вычисляются корни и др мат. функции?
Сообщение24.08.2020, 19:03 
Заслуженный участник
Аватара пользователя


01/08/06
3054
Уфа
Там не $x/2$ получается, а $\sqrt{1+x} \approx 1+x/2$ при $x < 1$, т.е. прямо по Тэйлору.

P.S. А нет, дьявол, не получается! Экспонента-то в этом формате сдвинута на 127 (для Single, для Double — на 1023), так что так просто не сработает. А так красиво было! экспонента тоже на два бы делилась, а нечётная давала бы подходящую прибавку в мантиссу :-(

-- Пн авг 24, 2020 21:17:40 --

Видимо, похожий хак применяется в алгоритме "Fast inverse square root".

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

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



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

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


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

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