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

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

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



неоднородное с постоянными коэффициентамиЛинейное неоднородное с переменными коэффициентамиТаблица 3 - Соответствие типов ДУ методам решения

Порядок ДУТип ДУМетод решенияIС разделяющимися переменнымиРазделить переменныеЛинейноеВыполнить замену БернуллиОднородноеВыполнить замену IIПростейшееДвукратное интегрированиеНе содержит явно yВыполнить замену Не содержит явно xВыполнить замену Линейное однородное с постоянными коэффициентамиРешить характеристическое уравнение Линейное однородное с переменными коэффициентами, -ФСЧРЛинейное неоднородное с постоянными коэффициентамиЛинейное неоднородное с переменными коэффициентами

.3.3 Модуль определения параметров канонической формы

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

Процесс выделения параметров, как и процесс распознавания, осуществляется за счет процедуры синтаксического рекурсивного анализа с тем отличием, что вместо признака результата анализа (обнаружен или нет признак принадлежности), составляется новое бинарное дерево, содержащее конкретный параметр канонической формы. Таким образом, для построения деревьев, содержащих параметры канонической формы, необходимо использовать признаки, приведенные в Приложениях Д и Е, а также осуществлять выделение дополнительных математических выражений, являющихся искомыми параметрами, и при необходимости создавать бинарное дерево выделенного параметра канонической формы.

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

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

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

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

-анализ текущей вершины и поддеревьев левого и правого на соответствие признаку;

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

-если корень параметра канонической формы не пуст, проверяем, какая операция была сохранена;

-объединяем новое найденное дерево с деревом, найденным на предыдущих шагах рекурсии, операцией, найденной на предыдущем шаге;

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

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

-рекурсивный спуск в правое поддерево, начиная от текущей вершины;

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

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

Рисунок 7 - Блок-схема выделение части g(y) ДУ с разделяющимися переменными

Таким образом, в начале процедуры проверяется, не является ли текущая вершина пустой. Если вершина Root исходного дерева не пуста, то производим проверку (вызовом функции onlyYF) наличия в дереве только зависимости только от одной переменной y. В случае, когда такая зависимость присутствует, производится копирование части с зависимостью только от y и возврат на более высокий уровень рекурсии. На практике данное условие позволяет выявить параметр g(y) в том случае, если правая часть ДУ является только зависимостью от y. В противном случае производится проверка вершины на соответствие операциям умножения или деления. Если данная операция отсутствует, то анализ прекращается, иначе производится анализ вызовом функций onlyYF(Rootleft) и onlyYF(Rootright) левого и правого соответственно поддерева на наличие зависимости только от переменной у. Если одна из функций onlyYF(Rootleft) или onlyYF(Rootright) находит такую зависимость, то производится копирование левого или правого поддерева соответственно, начиная от текущей вершины вызовом функции copyTree. При этом после выполнения копирования устанавливаются признаки, указывающие на остановку дальнейшего рекурсивного спуска в данные поддеревья.

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

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

-дерево не пусто,