Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.23;
Скачать: CL | DM;

Вниз

Не могу уследить логику работы калькулятора Windows   Найти похожие ветки 

 
alikon1   (2007-11-15 17:37) [0]

В университете дали задание до завтра сделать тригонометические функции Windows калькулятора, т.е перевод между градусами, радианами, градами ну и соответственно sin, cos, tg, arcsin, arccos, arctg, sinh, cosh, tgh. Обрадовался блин, думал сделаю по быстрому. Не тут то было. Начал проверять Windows калькулятор в работе.
Например:
1. Вычисляю гиперболический SIN в градах числа 90. Получаю   6,1020164715892040100135501756818e+38
2. Вычисляю гиперболический COS в градах числа 90. Получаю 6,1020164715892040100135501756818e+38
3. Появляются какие-то сомнения, решил перепроверить.
4. Вычисляю гиперболический SIN в градах числа 12,6. Получаю   148279,28264741545644846389929769
5. Вычисляю гиперболический COS в градах числа 12,6. Получаю 148279,2826507874716826030825092
    Хоть чем-то отличаются :) Вероятно правильно считает.
6. Продолжаю дальше проверять с числом 90. Повторяю действие №2 и сразу же вычисляю обычный COS но уже в радианах. Получаю 0,51706858550891603054408030522943. Возможно тоже верно :)
7. Думаю: а что если не делать шаг №2, а сразу вставить в калькулятор уже полученные ранее 6,1020164715892040100135501756818e+38 и посчитать обычный COS в радианах (по идее то же самое, что и в шаге №6 должно получиться). А получаю 0,44797430819126946207838657359732. И как это называется? Что за расхождения в результатах.
8. Пробую то же самое с синусом сделать. Повторяю действие №1 и сразу же вычисляю обычный SIN но уже в радианах. Получаю 0,85594396889037590270964235513284.
9. Делаю то же самое, что и в шаге №7, но соответственно для SIN. И получаю вообще ОТРИЦАТЕЛЬНОЕ число -0,89404643011454026281280581084783. Мозг начинает разрушаться потихоньку. Ничего больше не соображаю.

Итог: что мне делать??? Ну и как я ТАКИЕ ЖЕ тригонометрические функции как и в Windows калькуляторе завтра в университете показывать буду? Какая логика у этого чертового калькулятора?


 
Jeer ©   (2007-11-15 17:57) [1]

А собственно, что ты хотел ?

sh = e^x + e^(-x)/2

Возведи 2.71 в 90-ю степень и обрадуешься


 
БарЛог ©   (2007-11-15 18:29) [2]

> Какая логика у этого чертового калькулятора?
Это калькулятор Гейтса :)


 
alikon1   (2007-11-15 18:34) [3]

Вообще-то хотелось бы, чтоб результаты в шагах №8 и №9 или №6 и №7 совпадали, хотя бы приблизительно.


> Возведи 2.71 в 90-ю степень и обрадуешься

получил 9,2733399048270831858664513257647e+38
по идее правильно

а в чем подвох? чему радоваться?


 
alikon1   (2007-11-15 18:40) [4]

значит такое в здравом уме не сделать?
да, получается не видать мне "автомата" на экзамене :(


 
Рамиль ©   (2007-11-15 20:22) [5]

Я так и не понял, при чем здесь калькулятор?


 
Che Vingam   (2007-11-15 22:38) [6]


> Какая логика у этого чертового калькулятора?

Железная. Какой вопрос, такой и ответ.
Я уверен, что с точки зрения калькулятора
StrToFloat(FloatToStr(x)) <> x, хотя и близко к нему (в буфер обмена копируется строка, так что ctrl-c, ctrl-v это StrToFloat(FloatToStr())).

Учите матчасть.


>  ТАКИЕ ЖЕ тригонометрические функции как и в Windows калькуляторе

А слабо ТАКИЕ ЖЕ как в учебнике математики? Там хоть написано, откуда результат, не надо эксперименты ставить.


 
alikon1   (2007-11-16 09:19) [7]


> Я уверен, что с точки зрения калькулятора
> StrToFloat(FloatToStr(x)) <> x, хотя и близко к нему

При одинаковых (почти :) ) исходных данных 2 разных результата:
0,85594396889037590270964235513284 и -0,89404643011454026281280581084783


> А слабо ТАКИЕ ЖЕ как в учебнике математики?

Теперь так и буду делать


 
Котик Б   (2007-11-16 11:15) [8]

Как говорил нам преподавательпо теормеху:
"От точности полученного результата зависит точность Вашей оценки" !!!


 
boa_kaa ©   (2007-11-16 11:23) [9]


> alikon1   (15.11.07 17:37)

Учебник по элементарной математике открой.
Программист, блин...


 
alikon1   (2007-11-16 17:40) [10]


> Учебник по элементарной математике открой.
> Программист, блин...

Вообще-то вопрос был: почему 2 разных результата при одинаковых исходных данных.
Программист, блин... Читай внимательно, гений


 
isasa ©   (2007-11-16 21:08) [11]

alikon1   (16.11.07 17:40) [10]

Откуда он знает, что ты с этими числами делаешь. Может это противозаконно.

e+38 - похоже просто "машинное число", средняя температура на Марсе ...


 
boa_kaa ©   (2007-11-16 21:42) [12]


> alikon1   (16.11.07 17:40) [10]

если такой вопрос возник, то дело еще хуже...


 
alikon1   (2007-11-19 22:03) [13]

так и объяснили бы доходчиво, "на пальцах", если кто знает наверняка. Сам бы знал, так и не спрашивал бы. А то: причем здесь калькулятор, читай математику, или, если возник такой вопрос - то ты дурак (даун, имбицил и т.д. и т.п.).


 
Jeer ©   (2007-11-20 11:12) [14]

Я вот "одного" не пойму:
1. Взять учебник арифметики и выяснить

sh(x) = (e^x - e^-x)/2 = 0.5*e^x - 0.5/e^x
ch(x) = (e^x + e^-x)/2 = 0.5*e^x + 0.5/e^x

Т.е. sh и ch отличаются вторым слагаемым, которое при больших x пренебрежимо мало, по ср. с первым слагаемым.

При x = 90 (и при чем тут грады, градусы и радианы ?)
sh(90) ~ ch(90) = 6.1020164715892E38

2. Любой программный калькулятор создается на основе арифметических операций (+,-,*,/) в конечной машинной или виртуальной сетках.
Если рассматривать Delphi и естественную машинную сетку для платформы i32, то длина мантиссы Extended равна 64 бит, а машинный нуль равен 2^64 или EPS = 0.5E-19. Это значит, что два числа программно и аппаратно неотличимы, если разница между ними меньше EPS.

Для случая sh и ch первый член имеет порядок E38, а второй член порядок E-40, т.е. суммарный порядок составляет 78, что намного превышает порядок различения E19.

Windows калькулятор имеет EPS = 1E-32, что впрочем тоже недостаточно для различения E78 :))

3. Есть еще одна особенность Win Calc - у него внутренний формат хранения рациональных чисел не плавающий, а дробный. Т.е. 1/3 хранится именно так, а не как 0.333..
Возможно, что при больших порядках и при использовании "буфера обмена" возникают небольшие проблемы:))

4. Функции Sin и Cos периодические и нет смысла выполнять вычисления при A > 2*pi
Теоретически, алгоритм вычисления sin или cos, заложенный в тот или иной калькулятор,
должен выполнять приведение в диапазон 2*pi (на самом деле даже pi/2 достаточно),
а потом уже использовать тот или иной метод вычисления функции.

5. Не путайте гиперболические функции с тригонометрическими и будет вам счастье.

Итого - в учебник.


 
alikon1   (2007-11-20 18:49) [15]

Спасибо. Теперь более-менее понятно.


 
студиозус   (2007-11-20 20:00) [16]

>При x = 90 (и при чем тут грады, градусы и радианы ?)
при том, что sh(90) = гиперболический синус от 90 радиан.
прямой угол = 90 градусов = 1 радиан = 100 град.


 
Чайник ©   (2007-11-21 00:23) [17]


> студиозус   (20.11.07 20:00) [16]
>
> прямой угол = 90 градусов = 1 радиан = 100 град.


прямой угол = пи/2 радиан


 
Jeer ©   (2007-11-21 10:24) [18]


> студиозус   (20.11.07 20:00) [16]


Родной мой, для шинуса и кошинуса единицы измерения отсутствуют.
Точнее, геометрическое определение этих функций - площадь криволинейного треугольника.

Так при чем здесь градусы, грады и радианы ?

Впрочем, судя по Вашему комментарию - хоть "в попугаях".



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.013 c
2-1196023535
Бэтман
2007-11-25 23:45
2007.12.23
Как проверить являеться ли строка числом ?


2-1196229163
d@nger
2007-11-28 08:52
2007.12.23
Как узнать противоположный цвет?


4-1181467494
lyberzon
2007-06-10 13:24
2007.12.23
Системные курсоры


2-1195904979
PASZLIB
2007-11-24 14:49
2007.12.23
Большие числа


15-1195705163
Alex___
2007-11-22 07:19
2007.12.23
Opera 9.24