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/
И да, ключевое отличие автоматического дифференцирования в том, что оно "точное", в отличие от конечно-разностного, в котором выбор шага дифференцирования ой как влияет
Похоже вы не разобрались в смысле автоматического дифференцирования. Эта техника достаточно универсальна к большому классу задач и часто используется для определения градиента функции многих переменных, когда конечные разности неприменимы.
В википедии да, написано странное. Но я могу разъяснить: автоматическое дифференцирование - это когда при вычислениях вы вместо обычных чисел вы берёте дуальные. И тогда коэффициент при мнимой единице будет иметь значение производной. Причём точной (в пределах погрешности вычислений, если с плавающей точкой считать), а не конечно-разностной.
Вот это классика, из той же статьи Автоматическое дифференцирование с помощью двойных чисел
А вообще интересно было бы написать "математический анализ над полем представимых в IEEE 754 чисел", а именно:
что происходит
с пределами
с производными
с основными функциями
с основными теоремами
с дифференциальным исчислением
с интегральным исчислением
С удовольствием, если будут соучастники для такого масштабного проекта
Быстрый ответ - ничего. Всё вами перечисленное - это разделы аналитической математики. Если вас интересуют погрешности вычислений - то они будут разные в разных случаях, а для их контроля и обхода существуют отдельная матчасть. Ещё в математике нет основных функций, есть элементарные, а IEEE 754 не является полем, потому что там два нуля.
Если бы я шел путем CORDIC или его апгрейда, то привязался бы к полиномам Чебышева, а так я их просто упомянул. Ну и описанное тут работает без итераций... Вообще статья больше про численное дифференцирование и интерполяцию, даже не могу предположить как разумно повороты к этому сейчас притянуть.. А вот тот же прием в составе геометрической алгебры влечет собой все интересное - повороты, отражения, трансляции. Но до этого надо дорасти.
При прочтении с первого раза толком не понял, что происходит. Есть какие-то формулы, но что-то ход мысли я не смог уловить (и заодно не понял, при чём тут геометрическая алгебра).
В голосовалке пока не участвовал, вечером попробую второй раз прочитать.
ГА тут будет причем, если трехмерные преобразования с машинным нулем записать, например по аналогии с единичной окружностью разбить сферу с шагом эпсилон по каждой координате.. А так про ГА просто упоминание для тех, кто привык читать от меня на тему ГА) Основной лейтмотив данной статьи, в том, что похоже, применяя только корни можно писать производительный код для слабых процессоров микроконтроллеров с точностью расчетов ~10^(-5) -10^(-6), используя числа в формате float32 (single precision). Автор статьи, которая была для меня исходной точкой, автоматизировал станок на контроллере STM32.
Дискретные тригонометрические функции, машинный эпсилон и автоматическое дифференцирование