Как калькуляторы считают тригонометрию

Тема в разделе "WASM.HEAP", создана пользователем Shwanz, 11 июн 2007.

  1. Shwanz

    Shwanz Артём

    Публикаций:
    0
    Регистрация:
    11 июн 2007
    Сообщения:
    3
    Адрес:
    Новосибирск
    Сопсна озадачился, мош кто знает?
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    мануал по FPU - и вперёд!
     
  3. mix_mix

    mix_mix Михаил

    Публикаций:
    0
    Регистрация:
    8 окт 2005
    Сообщения:
    277
    Адрес:
    Токио
    Ну или по таблицам: быстрее и точность больше какая угодно может быть.
    Некоторые проги еще используют функциональные ряды - тут точность какая угодно может быть, но, правда, это долго считать.
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Shwanz
    ИХМО калькуляторы синус в ряд фурье раскладывают до заданной точности и считают...
     
  5. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    TermoSINteZ
    Ха, прикольно сказал, учитывая что ряды фурье и есть разложение по синусам и косинусам...
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    TermoSINteZ
    В ряд Тэйлора.
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    TermoSINteZ
    а по мойму там таблицы вовсю юзаются.
    хотя кто их знает. не дизасмил прошивку калькуляторов еще ;)
    мож как-нить на досуге займусь.
     
  8. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Ну не знаю как сей час, но раньше даже делали ПЗУ с прошивкой таблиц SIN & COS.
    Название даже и не вспомню. ДАвно это было.
     
  9. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    Quantum
    Да вы правы, перепутал. Конечно Тейлора
     
  10. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    В сети есть исходники с коментариями пзухи MK-85. очень даже забавно (даже эмулятор есть, и MK-90 тоже. =)
     
  11. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    китайские считают по таблицам, наши - хз как :) наткнулся как-то на их мануал, там опция была - сброс внутренних таблиц
     
  12. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Интересно а сколько весят таблицы Брадиса в байтах;) да ещё в китайских.
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    У Брадиса же точность до 5 знаков после запятой? не думаю что много это все будет весить.
    на число 15 бит надо.
     
  14. bers

    bers New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2005
    Сообщения:
    139
    Адрес:
    Russia
    n0name
    а почему 15? если 5 знаков, то по 3 бита на знак, что маловато.
    может я чего-то не понимаю? )
     
  15. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Вот только перед подсчётом значения sin/cos через ряд Тейлора нужно приводить аргумент хотя бы по модулю 2\pi (за счёт периодичности), а то если аргумент большой по модулю, то ряд, конечно, сходится, и даже с некоторого момента очень быстро, но до этого момента члены ряда успевают сильно вырасти и при вычислении фактически получается разность двух очень близких чисел, что губительно для точности.
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    bers
    да я написал пять, а подумал про 4 :)
    для 5и - 18 бит на число, они же будут варьироватся в пределах [-100000..100000]
     
  17. Lord_De_Seis

    Lord_De_Seis New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2005
    Сообщения:
    55
    Не знаю как там.
    НО самый простой и халявный способ иметь сотни 2-3 значений в таблице, между ними считать заменяя приращение функции её дифференциалом, к примеру:
    всем известно
    (sin(x))' = cos(x)
    (cos(x))' = -sin(x)
    тогда что бы вычислить к примеру sin(x) берём ближайшее значение из таблицы - x0 и тогда
    sin(x) = sin(x0) + delta, где delta = sin(x) - sin (x0)
    delta заменяем на d(sin(x0)) = cos(x0)dx = cos(x0)(x-x0)
    получаем sin(x) = sin(x0) + cos(x0)(x-x0) Точность будет зависеть от кол-ва значений в таблице, но хранить мегабаты таблиц Брадиса не придётся. Ряд тейлора - фигня, могу показать пример как ряд тейлора у вас получит 3 точных знака, только где нибудь после 10^5 ИТЕРАЦИЙ.
     
  18. Lord_De_Seis

    Lord_De_Seis New Member

    Публикаций:
    0
    Регистрация:
    18 авг 2005
    Сообщения:
    55
    Впринципе это одно что приближать рядом Тейлора, только берётся только один первый член.
    Но есть большая разница, там у вас так называемое разложение в ряд Маклорена то есть по степеням x:
    sin(x) = x - x^3 / 3! + x^5/ 5! - ... x^(2n+1) / (2n+1)! *(-1)^n ....
    а в той штуке что я рассказал разложение в ближайшей табличной точке, что гараздо лучше, но уже по общей формуле.
    В дифференциальной форме записывается так:
    f(x0) = f(x0) + df(x0) + d2f(x0)/2! + ...
    но берётся только первый член используя формулы остаточного члена даже погрешность легко оценить:
    f(x0) = f(x0) + df(x0) + o(dx) то есть погрешность будет величиной большего порядка малости чем (x-x0).
    Если хочется точнее можно (но это уже только для синусов и косинусов годится), зная то что дифференцирование переводит sin cos в друг друга, мы можем получить любое коллличество членов ряда тейлора в окрестности табличной точки. Ну и конечно по школьным формулам так можно и тангенсы катангенсы считать. Вот с обратными будет сложнее.
     
  19. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Да ну? Допустим, мы взяли аргумент по модулю 2\Pi и считаем sin x от аргумента из отрезка [-2\pi, 2\pi] (если вниательно следить за знаками, можно добиться и [-\pi/2,\pi/2]). Возьмём первые 10 членов. Нетрудно убедиться, что начиная уже с 4-го все последующие убывают по модулю и ряд знакочередующийся, так что остаток ряда (погрешность при приближении sin суммой первых 10 членов ряда) по модулю оценивается первым отбрасываемым членом, то есть x^23/23!, который в свою очередь не превосходит (2\pi)^23/23! = 0.0000882..., то есть получаем 4 правильных знака после запятой. Если взять 20 членов, то оценка будет уже 0.347...*10^(-18).
     
  20. dbrain

    dbrain New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2007
    Сообщения:
    197
    А ты почитай про ряд Тэйлора. Там мтребуется шоб остаточный член стремился к нулю