Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ Аналитический счёт

Роман Protocol Мыслитель (8562), закрыт 5 лет назад
Всем привет!
Как на C++ сделать чтобы производная (и не только, вообще аналитическая обработка выражений) от функции бралась аналитически, как в MathCad (скрин с клетками)?
Я сделал численное взятие производной через приращения по пакету точек функции или по самой функции.
Спасибо за помощь!
Дополнен 5 лет назад
Как я сделал, можно найти производную порядка, выдаваемую в виде координат точек для графика производной, я желаю получить производную в форме функции.
Лучший ответ
Андрей Высший разум (424692) 5 лет назад
Это называется "символьное дифференцирование" и в интернете множество статей на эту тему.

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

И куда чаще для таких задач используют Lisp или Prolog, чем C++.
Остальные ответы
InviZzzible Мудрец (10825) 5 лет назад
дифференциальные уравнения это? я такое прогуливал....
Роман ProtocolМыслитель (8562) 5 лет назад
Нет, не дифуры. Это просто производная - скорость изменения функции по координате x.
DONER KEBAB Просветленный (34272) 5 лет назад
что-то вроде Ceres Solver такое вроде делает

гуглите: analytical derivative c++
есть много уже готовых решений
Михаил Фёдоров Оракул (81595) 5 лет назад
Ну по разному можно. Можно за один проход выражение вручную пропарсить. Можно вначале на токены разбить. Можно из boost использовать spirit или tokenizer. Выражение парсится рекурентно. Когда приоритет операторов повышается или скобки открываются - вход в рекурсию, когда понижается или закрываются - выход. Для производной, я так понимаю, надо вначале скобки все пораскрывать и многочлен получить. А производная от каждого члена - задача тривиальная.
Похожие вопросы