То, что вы описываете, известно как символическая интеграция .В настоящее время нет полностью общего способа его реализации, но есть некоторые доступные методы.Одним из таких алгоритмов является алгоритм Риша .
. Альтернативно, более простая проблема, чем символьная интеграция, заключается в [символическом дифференцировании - и, если дифференциал ввода пользователя эквивалентен* к выражению, которое им было предложено интегрировать, тогда их интеграл, вероятно, правильный.
Вы также можете рассмотреть возможность использования существующего CAS **, такого как Mathematica, для реализации этого.Они уже реализовали большинство инструментов, которые вам нужны.
*: Имейте в виду, однако, что два математических выражения могут быть эквивалентными, не будучи идентичными, либо тривиальными способами (например, термины в другомпорядок), более сложные (например, большие выражения учитываются по-разному) или принципиально (например, тригонометрические функции заменены на сложные экспоненты или наоборот).
**: Система компьютерной алгебры