2014 dxdy logo

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

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




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


01/09/13
4744
Добрый день!
Подскажите, пожалуйста, где можно найти алгоритмы точного и эффективного вычисления прямых и обратных гиперболических функций (для $\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
12856
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
4744
arseniiv в сообщении #1423670 писал(а):
И под точностью всё-таки имеется в виду близость результата к самому точному представлению настоящего ответа?

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

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


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

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


01/09/13
4744
Утундрий в сообщении #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
4744
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
4744
arseniiv в сообщении #1423681 писал(а):
Ещё может пригодиться: вот код из библиотеки для джавы, по этой ссылке как раз coshm1,

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

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

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



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

Сейчас этот форум просматривают: Dmitriy40


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

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