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
9576
Москва
Здесь кое-что можно найти
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
9576
Москва
Если просто действительные числа - алгоритм Герона. Для каких-то других числовых систем, а также для очень больших целых - надо что-то иное, но что? Надо уточнить, что считаем.

 Профиль  
                  
 
 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
2921
IvanX в сообщении #1480518 писал(а):
Как по заданной погрешности $\varepsilon$ узнать кол-во итераций? Есть какая-то формула для оценки погрешности?

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

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


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

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

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


21/11/12
1882
Санкт-Петербург
Евгений Машеров в сообщении #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
1882
Санкт-Петербург
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
11589
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  След.

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



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

Сейчас этот форум просматривают: Bing [bot]


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

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