Pull to refresh

Comments 20

Добрый день.

По моему разумению ваше определение автоматического дифференцирования не является классическим . И даже противоречит ссылке, которую вы привели.

"In contrast to the more traditional numerical methods based on finite differences, auto-differentiation is 'in theory' exact."

Вы же привели вариант конечно-разностный. И разница для меня этих походов принципиальная. Или я что-то упускаю в вашей логике?

Добрый день. Все сложнее..

Во первых в Википедии что то очень странное написано, но если разобраться, то про то же самое. Во вторых автоматическое дифференцирование из того, что я видел, чаще применяется матричное. Но все способы сводится к использованию нильпотентного элемента в выражении.

Вот же хорошая статья на Хабре: https://habr.com/ru/companies/intel/articles/170729/

И да, ключевое отличие автоматического дифференцирования в том, что оно "точное", в отличие от конечно-разностного, в котором выбор шага дифференцирования ой как влияет

Статью читал еще давно, но не очень представляю себе как это применить к описанию единичной окружности в микроконтроллере..

Я бы вам подсказал, но из статьи совершенно непонятно - а какую собственно задачу вы решаете?

Похоже вы не разобрались в смысле автоматического дифференцирования. Эта техника достаточно универсальна к большому классу задач и часто используется для определения градиента функции многих переменных, когда конечные разности неприменимы.

Ок, значит разберусь со временем

В википедии да, написано странное. Но я могу разъяснить: автоматическое дифференцирование - это когда при вычислениях вы вместо обычных чисел вы берёте дуальные. И тогда коэффициент при мнимой единице будет иметь значение производной. Причём точной (в пределах погрешности вычислений, если с плавающей точкой считать), а не конечно-разностной.

Только не двойных, а дуальных. В двойных квадрат мнимой единицы равен 1, а не 0. Да, по-русски не сильно большая разница и не особо удачно выбранные названия.

Ну это само собой) Я конечно стараюсь быть аккуратен, но не до фанатизма. Все равно в разной литературе по разному обзывают

А вообще интересно было бы написать "математический анализ над полем представимых в IEEE 754 чисел", а именно:

что происходит

  • с пределами

  • с производными

  • с основными функциями

  • с основными теоремами

  • с дифференциальным исчислением

  • с интегральным исчислением

С удовольствием, если будут соучастники для такого масштабного проекта

Быстрый ответ - ничего. Всё вами перечисленное - это разделы аналитической математики. Если вас интересуют погрешности вычислений - то они будут разные в разных случаях, а для их контроля и обхода существуют отдельная матчасть. Ещё в математике нет основных функций, есть элементарные, а IEEE 754 не является полем, потому что там два нуля.

Согласен, NaNы делают это не полем. Анализ такой странной структуры не сделать.

Вы, случайно, не метод CORDIC заново изобрести пытаетесь?

Если бы я шел путем CORDIC или его апгрейда, то привязался бы к полиномам Чебышева, а так я их просто упомянул. Ну и описанное тут работает без итераций... Вообще статья больше про численное дифференцирование и интерполяцию, даже не могу предположить как разумно повороты к этому сейчас притянуть.. А вот тот же прием в составе геометрической алгебры влечет собой все интересное - повороты, отражения, трансляции. Но до этого надо дорасти.

Повороты на 2D-плоскости притягиваются через умножение комплексных чисел.

При прочтении с первого раза толком не понял, что происходит. Есть какие-то формулы, но что-то ход мысли я не смог уловить (и заодно не понял, при чём тут геометрическая алгебра).
В голосовалке пока не участвовал, вечером попробую второй раз прочитать.

ГА тут будет причем, если трехмерные преобразования с машинным нулем записать, например по аналогии с единичной окружностью разбить сферу с шагом эпсилон по каждой координате.. А так про ГА просто упоминание для тех, кто привык читать от меня на тему ГА) Основной лейтмотив данной статьи, в том, что похоже, применяя только корни можно писать производительный код для слабых процессоров микроконтроллеров с точностью расчетов ~10^(-5) -10^(-6), используя числа в формате float32 (single precision). Автор статьи, которая была для меня исходной точкой, автоматизировал станок на контроллере STM32.

Sign up to leave a comment.

Articles