Найти - Пользователи
Полная версия: ошибка overflow encountered in cosh
Начало » Python для новичков » ошибка overflow encountered in cosh
1
eiyawii
при вычислении выражения

s=4
B=cosh(((cosh(10**s))**(-1))/N)
возникает ошибка overflow encountered in cosh, из-за чего может появиться эта ошибка и как её избежать?
VasCraft
Во-первых, приведите полный код программы, так как можно сразу сказать, что встроенной функции cosh нет, она присутствует в модуле math. Во-вторых, а нельзя ли распределить вторую строку на несколько более простых операций, это даст возможность более детально отладить скрипт.
Кроме того, у Вас не определена переменная N, что в данном случае, если вы это выполняете в консоли, будет грубой ошибкой.
Также, следуя из названия ошибки, можно предположить, что произошло переполнение значения одной из величин за пределы значения, предусмотренного типом данной величины, что неудивительно с такой зубодробительной формулой.
VasCraft
Ради интереса посмотрел про данную функцию - cosh, он же ch, он же косинус гиперболический. Если интересно почитать про гиперболические функции, и про предмет разговора в частности - пожалуйста, простая информация для анализа.
http://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BF%D0%B5%D1%80%D0%B1%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8
Вообще, эмпирически можно доказать, что вычисление функции math.cosh(10000), а именно такое у Вас значение аргумента, приведет к переполнению значения величины, так, что даже типа long integer будет мало для записи значения данной функции.

P. S. Как мне кажется, Вы решили проверить от винта вычислительные возможности языка? Боюсь Вас огорчить, в языке встроена защита от таких действий, как переполнение значения переменной и прочие веселые казусы. Если хотите что-то тестировать - тестируйте, но в размерах разумного.
py.user.next
eiyawii
cosh(10**s)
калькулятор даёт бесконечность
doza_and
:) cosh(10**s)=4.40340911283146079363074800382228050176000204279575446821228538138111
6447638099342762367697243108264620491895671647486586075475575083254757
3371091375201917574857522741433341453070578994929809523424833566578422
0252256160212141870846544331134205559765630624368153078565412789211878
6861623291898206927520213163804147127029112664946952191444403169256898
624051604852309657679313564794810100666066158945503e+4342
Carzil
VasCraft
что даже типа long integer будет мало для записи значения данной функции
у python встроенная длинная арифметика
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB