Ответ: Символьное интегрирование
Первое что в голову приходит, так это задача разбить строку на блоки, исходя из приоритетов по вычислениям.
Если начать с начала "2*x+sin(e^(cos(x*x)))", то будет:
[1] = 2*x
[2] = [1] + [3]
[3] = sin([4])
[4] = e ^ [5]
[5] = cos([6])
[6] = x * x
Исходя из скобок и т.п., можно вычислить приоритеты. Если по пути выражения бало найдено выражение со скобками, то нужно повысить приоритет относительно контейнера выражений в котором он находится. Каждое выражение может быть контейнером других, и приоритеты локальны (в скобках и т.п.).
Разбив так вот, можно уже интерпретировать в мат функции, т.к. компоненты намного проще.
Далее уже двигаться далее, тут уже математика, я хз в этом..
Кто-то у нас на форуме делал подобное..
|