Найти - Пользователи
Полная версия: вычисление cos и sin библиотекой math, как упростить?
Начало » Центр помощи » вычисление cos и sin библиотекой math, как упростить?
1
BrevnouT
Требуется помощь в упрощении велосипедов написанных для эмулятора http://www.codeskulptor.org имеющего некоторые ограничения по поддерживаемым библиотекам.
Сделан полный импорт - from math import *
Имеются два выражения:
Int((float(('%f' % cos(radians(угол_в_градусах)))))
Int((float(('%f' % sin(radians(угол_в_градусах)))))

Цель этих выражений воводить целые значения углов 0, 90, 180, 270, 360 для синуса и косинуса. Т.е числа 0, 1 и -1.
Codesculptor имеет некоторые ограничения в виду чего такие сложные выражения, вопрос можно ли это дело упростить?
py.user.next
>>> import math
>>> 
>>> def conv_trig_int(angle, tfunc):
...     return str(int(tfunc(math.radians(angle))))
... 
>>> message = ' '.join(conv_trig_int(i, math.cos)
...                    for i in (0, 90, 180, 270, 360))
>>> 
>>> message
'1 0 -1 0 1'
>>> message = ' '.join(conv_trig_int(i, math.sin)
...                    for i in (0, 90, 180, 270, 360))
>>> message
'0 1 0 -1 0'
>>>

BrevnouT
Codesculptor имеет некоторые ограничения
Вообще выдаёт неправильные результаты. Для синуса выдаёт 0 1 1 -1 -2, а для косинуса — 1 6 -1 -1 1.
BrevnouT
py.user.next
Спасибо за помощь. Благодаря вашему интересному примеру нашел в чем проблема. На примере косинуса.
В консоли python 2.7.3:
Cos(radians(угол)) для углов 0, 90, 180, 270, 360 равно
1, 6.12323…e-17, -1, -1.83697…e-16, 1
При использовании конструкции
Int(Cos(radians(угол))) получаем результаты
1, 0, -1, 0, 1
А при использовании этой же конструкции в Int(Cos(radians(угол))) в codesculptor получаем:
1 6 -1 -1 1
Т.е. в codesculptor коряво работает функция int -
пойду писать отчет об этом в службу поддержки. Спасибо за помощь.

П.с. я думал я полный идиот оказалось я баг обошел
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