2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Вычисление гиперболических функций
Сообщение02.11.2019, 23:18 
Заслуженный участник
Аватара пользователя


01/09/13
4680
Добрый день!
Подскажите, пожалуйста, где можно найти алгоритмы точного и эффективного вычисления прямых и обратных гиперболических функций (для $\cosh$, по всей видимости, также понадобится $\operatorname{coshm1}(x)=\cosh(x)-1$ и $\operatorname{acosh1p}(x)=\operatorname{acosh}(1+x)$, а для $\tanh$ - $\operatorname{tanhc}(x)=1-\tanh(x)$ (но с этим, кажется, всё просто)).
В распоряжении имеются "обычные" четыре действия, квадратный корень, экспонента, логарифм, а также $\operatorname{expm1}(x)=\exp(x)-1$ и $\operatorname{log1p}(x)=\log(1+x)$.
Под "точностью" понимается работа в формате double ($2^{1024}=\inf$, $1+2^{-53}=1$ и т.п.).
Под "эффективностью" - скорость вычисления (экспонента/логарифм/корень примерно в 10 раз дольше умножения/сложения/проверки условий).

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 00:00 
Заслуженный участник
Аватара пользователя


15/10/08
30/12/24
12599
Geen в сообщении #1423662 писал(а):
В распоряжении имеются "обычные" четыре действия, квадратный корень, экспонента, логарифм
Что-то мешает воспользоваться определением $\operatorname{ch} x = (e^x  + e^{ - x} )/2$ и т.п. ?

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 00:03 
Заслуженный участник


27/04/09
28128
Как понимаю, ситуация такая, что обычные $\operatorname{cosh} x = 0{,}5\cdot(\exp x + \exp(-x))$ или $\operatorname{coshm1} x = 0{,}5 (\operatorname{expm1} x + \operatorname{expm1}(-x))$ недостаточно эффективны (согласен, две экспоненты хуже, чем одна) или точны. (Так?) И под точностью всё-таки имеется в виду близость результата к самому точному представлению настоящего ответа? (Понятно, что при сложении двух экспонент она будет хуже, чем у одинарной экспоненты, но важно ли это небольшое отличие для интересующих вас приложений?)

А вот $\mathrm{acosh1p}$ и вообще обратные функции — это да, тут лучше всё-таки свериться с книгой численных рецептов и не пытаться выдумывать. Попытался найти у себя подобную книгу и не нашёл, так что ничего не посоветую, а присоединюсь к вопросу.

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 00:08 
Заслуженный участник
Аватара пользователя


01/09/13
4680
arseniiv в сообщении #1423670 писал(а):
И под точностью всё-таки имеется в виду близость результата к самому точному представлению настоящего ответа?

Да, очень желательно бы.

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 00:12 
Заслуженный участник


09/05/12
25179
А их обязательно реализовывать вручную? Просто надо еще поискать ситуацию, чтобы и встроенные отсутствовали, и библиотек не было...

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 00:13 
Заслуженный участник
Аватара пользователя


01/09/13
4680
Утундрий в сообщении #1423667 писал(а):
Что-то мешает воспользоваться определением $\operatorname{ch} x = (e^x  + e^{ - x} )/2$ и т.п. ?

Да - $2^{-1022}$ (и даже меньше) не равны нулю, а $1\pm2^{-53}=1$ "тождественно".

-- 03.11.2019, 00:14 --

Pphantom в сообщении #1423673 писал(а):
Просто надо еще поискать ситуацию, чтобы и встроенные отсутствовали, и библиотек не было...

IE11... :-)

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 00:46 
Заслуженный участник


09/05/12
25179

(Оффтоп)

Geen в сообщении #1423675 писал(а):
IE11...
Да, месье знает толк в извращениях...

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 01:07 
Заслуженный участник


27/04/09
28128
А, мне тут сказали, что моё определение coshm1 страдает от сокращения всё равно и тогда exp1m(0.5 * log1p(sinh(x) ** 2)) может быть лучше. Это пока нет ссылок на что-то более приятное полнотой.

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 01:13 
Заслуженный участник
Аватара пользователя


01/09/13
4680
Pphantom в сообщении #1423677 писал(а):

(Оффтоп)

Geen в сообщении #1423675 писал(а):
IE11...
Да, месье знает толк в извращениях...

Ну так случилось - я бы взял "полифил" и не морочился бы... но, суммирование трёхсот членов $\operatorname{log1p}$ для всех $x<1$ меня подкосило... :mrgreen:

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 01:38 
Заслуженный участник


27/04/09
28128
Geen
Ещё может пригодиться: вот код из библиотеки для джавы, по этой ссылке как раз coshm1, но там есть и другие вещи:
https://github.com/jeffhain/jafama/blob/master/src/main/java/net/jafama/StrictFastMath.java#L709
Понятно, ничего джавоспецифического там нет (по крайней мере в тех функциях, которые я пробежал).

 Профиль  
                  
 
 Re: Вычисление гиперболических функций
Сообщение03.11.2019, 01:59 
Заслуженный участник
Аватара пользователя


01/09/13
4680
arseniiv в сообщении #1423681 писал(а):
Ещё может пригодиться: вот код из библиотеки для джавы, по этой ссылке как раз coshm1,

Ага, спасибо, завтра попробую проверить.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

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