Разработка обучающей программы по теме "Обыкновенные дифференциальные уравнения"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



следовательно, необходимо произвести объединение созданного ранее дерева и только что найденного в соответствии со знаком умножения или деления.

Процессы, обозначенные RootGY =addRoot+/+ RootGY и RootGY = addRoot + * + RootGY, характеризуют второй случай и позволяют создать новое дерево с вершиной * или /, присоединяя к ней левое поддерево addRoot (новое найденное) и правое поддерево RootGY (выявленное ранее).

Следующим этапом является выявление части, которая еще не была подвергнута анализу, что характеризуется логическими переменными lpart и rpart. В случае, когда данные переменные принимают значение истина, анализ будет прерван, а функция вернет значение текущего найденного корня параметра канонической формы. В противном случае будет рекурсивно вызвана рассматриваемая процедура OnlyYDiff. Рекурсия состоит в использовании в качестве первого параметра указателя на левое или правое поддерево.

3.3.4 Модуль для решения ДУ I порядка в символьном виде

Для решения ДУ в символьном виде требуется выполнить автоматическое определение типа введенного ДУ. Если тип решения определен и соответствует типу ДУ, выбранного пользователем, то на основании данного выбора можно производить решение заданного ДУ способом, характерным для типа. В противном случае решение ДУ не может быть произведено из-за несовпадения типа ДУ, назначенного пользователем, с типом ДУ, указанным программой. Описанное согласование необходимо, так как программа может указывать несколько типов, к которым относится введенное ДУ.

В случае, когда пользователь выбирает тип ДУ неверно, вместо шаблона решения выводится информация о том, что введенное ДУ не соответствует выбранному типу.

В случаях верного выбора типа ДУ выполняется следующая последовательность операций: выявление параметров канонической формы; открытие соответствующего шаблона решения; заполнение шаблона решения вставками MathML кода; закрытие шаблона; вывод хода решения.

Для решения задачи по заполнению шаблона решения и вывода решения для конкретного ДУ необходимо создать как сами шаблоны с незаполненными параметрами, указывающим место для вставки параметров канонической формы, так и процедуру генерации MathML кода, используемого для вставки вместо параметра.

Для создания параметрического шаблона используется комбинация HTML и MathML. HTML в данном случае призван выполнять функции вывода пояснений и выделения из общего текста поясняемых формул. MathML позволяет, используя специализированные теги, получить такую форму записи, которая наиболее просто трактуется пользователем системы.

MathML формирует свои теги либо в форме префиксной записи, либо в форме инфиксной записи. Смысл префиксной записи состоит в том, что для оформления используются специализированные теги, причем сначала выводятся теги с операциями, внутри которых следуют теги констант и переменных. Однако такой способ записи более сложен, так как использует для обозначения каждой из лексем широкий спектр тегов.

Второй метод, используемый для отображения, заключается в выводе формулы последовательно, применяя специфичные теги к каждому из символов или лексем. Данный способ более предпочтителен, так как для обозначения, например, операции и вывода её ненаклонным шрифтом используется всего одна пара тегов . Последовательность тегов формируется таким образом, что получаемый код MathML соответствует инфиксной форме записи.

Стандарт позволяет использовать и смешанные формы записи выражения, что позволяет достаточно гибко изобразить такие элементы как степень, деление и скобки, разделяя выражение на подвыражения, что значительно повышает скорость и эффективность разработки шаблонов заполнения.

Таким образом, для формирования корректного выбора выражения (частей канонической формы) бил применен смешанный формат представления тегов MathML.

Процедура формирования тегов по выражению осуществляется за счет обхода дерева, построенного по параметру канонической формы, и предусматривает выполнение ряда шагов:

-определение текущего параметра шаблона;

-построение дерева по вставляемому параметру канонической формы;

-рекурсивный обход дерева iелью генерации вставляемого кода MathML; данный код представляет собой строку текста, в которой использованы теги MathML и лексемы бинарного дерева (параметра канонической формы);

-вставка полученной строки вместо указанного параметра.

Рекурсивный обход дерева осуществляется с помощью использования метода, предназначенного для получения инфиксной формы записи математического выражения по дереву, т.е. посещение левого поддерева, генерация тега MathML по значению вершины, посещение правого поддерева.

Рассмотрим основные теги, использованные для генерации вставок MathML:

а) - данная пара тегов указывает браузеру, что далее следует объект MathML;

б) - данная пара тегов указывает компилятору MathML, что между ними заключено некоторое математическое выражение;

в)m:mi>переменная - данная пара тегов предназначена для вывода переменных; сформированная переменная выводится наклонным шрифтом, что позволяет произвести её выделение среди констант и операций;

г) - данный тег используется для вывода знаков, не требующих специального оформления: сложения, вычитания, умножения, интегралов, тригонометрических функций и логарифма;

д) - данный тег предназначен для обо