Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 13, 2011 18:30:00

eiyawii
От:
Зарегистрирован: 2011-08-04
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка overflow encountered in cosh

при вычислении выражения

s=4
B=cosh(((cosh(10**s))**(-1))/N)
возникает ошибка overflow encountered in cosh, из-за чего может появиться эта ошибка и как её избежать?



Офлайн

#2 Дек. 13, 2011 18:46:14

VasCraft
От:
Зарегистрирован: 2010-08-23
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка overflow encountered in cosh

Во-первых, приведите полный код программы, так как можно сразу сказать, что встроенной функции cosh нет, она присутствует в модуле math. Во-вторых, а нельзя ли распределить вторую строку на несколько более простых операций, это даст возможность более детально отладить скрипт.
Кроме того, у Вас не определена переменная N, что в данном случае, если вы это выполняете в консоли, будет грубой ошибкой.
Также, следуя из названия ошибки, можно предположить, что произошло переполнение значения одной из величин за пределы значения, предусмотренного типом данной величины, что неудивительно с такой зубодробительной формулой.



Отредактировано (Дек. 13, 2011 18:52:49)

Офлайн

#3 Дек. 13, 2011 19:09:51

VasCraft
От:
Зарегистрирован: 2010-08-23
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка overflow encountered in cosh

Ради интереса посмотрел про данную функцию - 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. Как мне кажется, Вы решили проверить от винта вычислительные возможности языка? Боюсь Вас огорчить, в языке встроена защита от таких действий, как переполнение значения переменной и прочие веселые казусы. Если хотите что-то тестировать - тестируйте, но в размерах разумного.



Отредактировано (Дек. 13, 2011 19:10:27)

Офлайн

#4 Дек. 13, 2011 20:57:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9979
Репутация: +  857  -
Профиль   Отправить e-mail  

ошибка overflow encountered in cosh

eiyawii
cosh(10**s)
калькулятор даёт бесконечность



Офлайн

#5 Дек. 14, 2011 08:53:35

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

ошибка overflow encountered in cosh

:) cosh(10**s)=4.40340911283146079363074800382228050176000204279575446821228538138111
6447638099342762367697243108264620491895671647486586075475575083254757
3371091375201917574857522741433341453070578994929809523424833566578422
0252256160212141870846544331134205559765630624368153078565412789211878
6861623291898206927520213163804147127029112664946952191444403169256898
624051604852309657679313564794810100666066158945503e+4342



Отредактировано (Дек. 14, 2011 08:54:56)

Офлайн

#6 Дек. 14, 2011 13:37:21

Carzil
От:
Зарегистрирован: 2010-05-26
Сообщения: 106
Репутация: +  0  -
Профиль   Отправить e-mail  

ошибка overflow encountered in cosh

VasCraft
что даже типа long integer будет мало для записи значения данной функции
у python встроенная длинная арифметика



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version