Pull to refresh

Comments 13

А почему не на макросах? case классы — это же элементарно и совершенно очевидно.
Некоторые даже на С++ шаблонах дифференцирование делают.

Символьное вычисление — очень неэффективный способ автоматического дифференцирования, на практике применим разве что для символьного решения школьных заданий. (Не критика, т.к. в заголовке сказано, что способ аналитический, но совет для тех, кому нужны автоматические производные для реальных вычислительных задач). В реальности используются совсем другие способы, гораздо более эффективные. Хороший пример реализации метода с дуальным числом на C++ — в гугловской библиотеке Ceres Solver.
Спасибо за ссылки, не знал о таком
Интересно. Но на x^x онлайн-калькулятор даёт неверный результат.
d(x^x)/d(x) выдает (x^(x-1))*(x+ln(x)) = (x^x)*(1+ln(x)), все верно
почему бы функциям самим не провайдить способ своего дифференцирования?
подумаю над этим, спасибо
Вообще дифференцирование произведения (а также частного или степени) не зависит о того константы указанные функции или нет. Формула (uv)' = u'v + v'u верна всегда. Поэтому можно было отдельные случаи не расписывать. Просто умножение на 0 надо корректно обработать.

Как вы сказали, формула (uv)' = u'v + v'u всегда корректна, а после вычисления производной нужно просто ввести дополнительную фазу — упрощение выражения. Ее также можно реализовать с помощью описанного в статье подхода (применять такие правила, как a + 0 = a, a 1 = a, a b = b * a и т.д.). Я тоже таким занимался, только на C#. Почитать можно здесь: Упрощение выражений.

Можно было не писать парсер а использовать перезагрузку операторов которая в scala из коробки. Ну где-то как это реализовано в scipy.
А если уже откомпилированной программу надо взять выражение со стороны — использовать аналог eval?
А это уже другая задача)
Я б написал библиотеку с возможностью юзать ее в repl-е.
Дальше такую вещь можно много куда еще интегрировать.
Но если вам нравится парсить — то это таки ваше право)
А почему скала? То есть я вижу что это скала ноге же все плюшки — фуксии высших порядков, карирование, отложены вычисления.
Only those users with full accounts are able to leave comments. Log in, please.