Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 37

Тема: Тригонометрические функции OWEN Logic

  1. #21

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    Убедили.....
    Ну, пока убеждал, сам убедился, что реально всё зависит от того, в каком диапазоне нужно вычисление.
    Чтобы расширить диапазон иногда проще использовать sin(x)=sin(pi-x).
    Т.е. не плодить лишние члены ряда, а предварительно уменьшать угол.

    Вот, например, график ошибки для ((x-x3/6+x5/120)*(x<pi/2)+((pi-x)-(pi-x)3/6+(pi-x)5/120)*(x>=pi/2)
    Получается ошибка не более 0.5% на интервале 0..PI, при том, что реализовано будет как "стандартное x-x3/6+x5/120", перед которым SEL(x>PI/2, PI-x, x)

  2. #22

    По умолчанию

    Если хотите - можете попробовать мои наработки. Мне они вполне подошли. Вроде бы и народ тестировал, отзывы были не ругательные. Входные значения - в радианах, без ограничения.
    Вложения Вложения

  3. #23

    По умолчанию

    Цитата Сообщение от Hemann Посмотреть сообщение
    Если хотите - можете попробовать мои наработки. Мне они вполне подошли. Вроде бы и народ тестировал, отзывы были не ругательные. Входные значения - в радианах, без ограничения.
    Давайте я пожалуюсь.
    1) Вычислять "знак числа" через POW(-1, TO_FLOAT(NOT(GT(x, 0)))) это круто.
    С extract'ом же правильно поняли.

    Т.е. XOR(NOT(GT(x, 0)), TO_INT(fDIV(x, pi))) и потом extract нулевого бита.

    2) Подаю на вход sin_x значение 3,14158 (~179.99927 градусов), получаю на выходе -4,3E-04 == -0.00043
    Реальное значение sin(3.14158) == 1.26536e-5 == 0.0000126536
    Ошибка просто огроменная: целых 3600% == (0.0000126536 + 0.00043)/0.0000126536 == 36
    При углах 179.97..180 градусов ошибка превышает 100%

    Конечно, считать sin(x) при x порядка pi это неблагодарное занятие, но если перед "записью в Y" ещё сделать преобразование "если Y>pi/2, то записать pi-Y", то точность около pi повысится просто невероятно. Можно и y^11 выкидывать смело будет.

    Вот график относительной ошибки для вашего алгоритма около pi

  4. #24

    По умолчанию

    Владимир, как говорится у Шекспира, нет в мире совершенства. На значениях Х, близких к 0 или Pi, здорово сказывается ограничение точности как самой ПР-ки, так и метода. Однако, увеличивать количество членов ряда не имеет смысла именно из-за свойств платформы. В любом случае-писал для себя, мне подошло, может кому будет тоже полезно

  5. #25
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,121

    По умолчанию

    Теория хорошо ,а практика лучше ... Часто вспоминаю AI ,умница ,хороший теоретик ,но и знания свои подтверждал примерами (проектами)..Вроде на форуме он ,но что то молчит....
    электронщик до мозга костей и не только

  6. #26

    По умолчанию

    Цитата Сообщение от Hemann Посмотреть сообщение
    Однако, увеличивать количество членов ряда не имеет смысла именно из-за свойств платформы. В любом случае-писал для себя, мне подошло, может кому будет тоже полезно
    Вы меня не поняли.
    Количество членов ряда нужно даже уменьшать.

    x9 и x11 совершенно не нужны -- они никак не добавляют точности (если добавить if (x>pi/2) { y=pi-x; } else { y=x; } предобработку)

    x7 -- нужно, иначе будет некрасиво около 1.57

    Вот я поправил ваш макрос sin: sin_improved.zip

    Выглядит так: sin_improved.png
    Вот вычисление проблемного 3.14158. Видно, что правильный ответ получается с первых же членов ряда: sin_314158.png

    К сожалению, отображение float в OwenLogic крайне неудачно сделано (показывает слишком мало цифр и никак не узнать все). Например, если вычислять sin(1.57), то с первых же членов ряда получается 1e0, а реально там чуть больше должно получаться на первых двух членах -- 1.004 (это при том, что синус больше 1 быть не должен %)

    Разумеется, около pi всё равно будет колбасить (т.к. pi float'ом не представимо), но после поправки pi-x зона расколбаса гораздо уже. Сравните синий и красный графики. Синий ряд до x5, но с предобработкой. Красный -- до x11, но без.
    Последний раз редактировалось Владимир Ситников; 01.02.2016 в 11:58.

  7. #27
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,121

    По умолчанию

    Вот это уже лучше ,с примерами
    электронщик до мозга костей и не только

  8. #28

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    Теория хорошо ,а практика лучше ..
    У меня нет ПР и пока не предвидится. Поэтому могу только руками размахивать и теоретизировать в симуляторах.

    Кстати, интересно:
    1) Можно ли задать порядок выполнения fADD. Теоретически, нужно ряд складывать наоборот: x5/120-x3/6+x. Когда складываешь "совпадающие по величине числа" погрешность float'а меньше копится.
    2) Насколько симулятор верно считает (нет ли там глюка, что внутренние вычисления идут в double)

  9. #29
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,121

    По умолчанию

    1.порядок вычисления можно попробовать изменить если использовать явные обратные связи ...
    2.это к разработчикам...
    Ваши бы знания в макросы втиснуть ,цены бы не было ..
    Последний раз редактировалось rovki; 01.02.2016 в 01:15.
    электронщик до мозга костей и не только

  10. #30
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,121

    По умолчанию

    Практическое пожелание - всегда помните о железе ,да же занимаясь математикой .Точность АЦП по входу ограничена 12 разрядами (двоичными) ,без учета реальных помех а это 3,5 порядка десятичных .Поэтому когда вы оперируете величинами в теоретических изысканиях 0.0000126536 не забывайте о железе. и соизмеряйте желания и возможности ...А в остальном ,СПАСИБО...
    электронщик до мозга костей и не только

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Среда программирования OWEN Logic
    Ответов: 404
    Последнее сообщение: 25.08.2020, 15:17
  2. ПО OWEN Logic !!!
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 3
    Последнее сообщение: 11.10.2011, 16:33
  3. OWEN Logic 1.3 build 17
    от CEkip в разделе Программируемые реле
    Ответов: 12
    Последнее сообщение: 25.07.2011, 16:59
  4. OWEN Logic 1.2.0.14b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 40
    Последнее сообщение: 21.02.2011, 14:16
  5. OWEN Logic 1.1.0.11b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 58
    Последнее сообщение: 12.10.2010, 21:55

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •