Контрольная работа: Математическая программа "Производная"
Стереть таблицу переменных
Объявить новую переменную пользователя («x»)
Объявить новую переменную пользователя («y»)
Объявить новую переменную пользователя («z»)
Объявить новую переменную пользователя («t»)
Конец
Алгоритм Создать новую переменную пользователя
Строка = Ввести строку
Если Хорошее Имя переменной (строка)
Объявить новую переменную пользователя (строка)
КЕсли
Конец
3.2 Реализация алгоритма распознавания функции
Реализация алгоритма распознавания функции нахождения производной, интеграла и значения функции описана ниже:
Распознавание функции
· Создание таблицы связанных элементарных (содержащих одно действие) функций, последовательное вычисление которых приводит к вычислению сложной функции.
o Создание размеченной строки: выделение чисел в служебные символы []; переменных в {}; функций в <>. (Контекстно, т.е. в строке «exp» не будет выделена переменная «x»).
o Создание на основании размеченной строки карты функции, т.е. выделение из неё только символов () [] {} <> и определение их позиций в размеченной строке.
o Анализ карты функции и вставка в размеченную строку соответствующих замен (например, знака умножения между числом и переменной), а также поиск синтаксических ошибок (например, если строка начинается со знака «/»)
o Обработанная таким образом строка, в которой не были найдены синтаксические ошибки, подлежит разложению на элементарные функции, которое заключается в следующем:
- поиск самой внутренней скобки
- нахождение первого оператора и его операндов в порядке важности (^,*, /, +,–)
- Если в скобке больше нет операторов, заменить всю скобку, иначе заменить только данный оператор с операндами на новую переменную (вида &F#) и записать это в таблицу.
- Если во всей строке еще есть операторы, повторить иначе создать последнюю переменную &F0
o Дополнить таблицу переменными пользователя.
Нахождение значения функции в точке ( x , y , z , t ,…)
o Найти переменную (элементарную функцию) в таблице.
o Считать оператор и операнды; если операнды – переменные, то
o Если операнд переменная не дифференцируемая, то найти рекурсивно (этой же функцией).
o Если операнд переменная дифференцируемая, то вернуть текущее значение дифференцируемой переменной.