Реализовать модуль для символьных вычислений с рациональными функциями.
Рациональными функциями являются только те объекты, которые получаются путем применения конечного числа приведенных выше правил.
Пример записи рациональной функции:
2*x*y+(x^2+y^2)^3
Калькулятор обрабатывает строки вида:
f=(x^2+y^2)^2+3*x*y
Эта операция создает (или обновляет) запись в таблице имен: соответствие между именем f и соответствующей функцией, стоящей справа от знака равенства. Функция должна являться корректным арифметическим выражением, имеющим в качестве аргументов числа (целые и вещественные), имена функций из таблицы имен и свободные переменные. Корректное имя состоит из 1 и более латинских букв. При обработке выражения производится проверка, существует ли имя в таблице имен. Если да, то подставляется соответствующее значение, в противном случае оно считается свободной переменной.
Кроме арифметических операций допускается операция взятия производной: f|x
вычисляет производную от функции f по x. f должна быть объявлена, а x должно являться либо свободной переменной, либо именем функции, состоящей из одной переменной.
Еще одной допустимой операцией является подстановка, записываемая в следующей форме:
z = [f,x,2]
Здесь каждое вхождение переменной x
в f
будет заменено на 2, а результирующее значение помещено в таблицу имен под именем z
.
Назначаемое имя вместе со знаком равенства может не указываться, тогда выражение запишется в функцию с именем last.
Кроме обработки выражений, необходимо реализовать функцию печати содержимого таблицы имен (отдельного имени или таблицы целиком).
К модулю должна быть реализована главная программа, которая построчно вводит выражения, «скармливает» их калькулятору и выводит результат обработки каждого из них. Два специальных выражения должны приводить к выходу из программы и полной печати таблицы имен соответственно.