Динамическая схема для иллюстрации аналитических преобразований
ПРИ ИНТЕГРИРОВАНИИ УРАВНЕНИЙ В ПОЛНЫХ ДИФФЕРЕНЦИАЛАХ
Александров Иван Александрович ([email protected])
Попов Александр Александрович ([email protected])
ГОУВПО «Марийский государственный университет», г. Йошкар-Ола
В статье рассматривается алгоритм формирования решения для уравнения в полных дифференциалах со всеми промежуточными действиями и компьютерная программа на языке Java, в которой реализован данный алгоритм в виде посимвольного вывода случайно сгенерированного решения дифференциального уравнения.
Программирование аналитических преобразований представляет самостоятельный интерес, поскольку предполагает, в конечном счете, научить компьютер решать ту или иную аналитическую задачу. Если полученное решение выводить на экран посимвольно, добавляя каждый символ к ранее выведенным и уже стационарным символам, то подобный процесс можно считать обобщением предложенных нами динамических схем для иллюстрации задач программирования [1] на случай аналитических преобразований в математике. Действительно, каждую текущую конфигурацию символов на экране можно считать статической схемой, а последовательность статических схем, сменяющих друг друга в одном окне, определить, как динамическую схему для иллюстрации аналитического решения задачи со всеми промежуточными действиями.
Уравнение в полных дифференциалах имеет вид: P(x,y)dx + Q(x,y)dy = 0 [2]. Если — = —, то диффе-
ду дх
ренциальное выражение является полным дифференциалом некоторой функции U(x,y). Поэтому исходное дифференциальное уравнение переписывается в виде: dU(x,y) = 0, из которого следует решение U(x,y) = С, где С - постоянная интегрирования. Выражая дифференциал dU через частные производные
dU = dx + dy, и сравнивая с исходным дифференциальным выражением, можно получить диффе-
дх ду ' '
cU cU
ренциальные уравнения — = Р(\ у), — = Q(\ у) для нахождения неизвестной функции U(x,y) через из-
дх ' ду '
вестные функции P(x,y) и Q(x,y). Существуют два варианта решения, в одном из которых интегрирование
начинается с первого уравнения, в другом - со второго.
При интегрировании первого уравнения решение U = JP(x, y)dx+ <р(у ) содержит постоянную интегрирования ф, зависящую от параметра у, поскольку интеграл зависит от у. Для определения неизвестной
функции ф используется второе уравнение j У) _ ф'(у) = р(х у), которое преобразуется к виду:
ду '
J У) dx + ф' (y) = Q(x, y).
(Ж
Если интегрирование начинать со второго уравнения, то решение будет представлено в виде: U = jQ(x,y)dy+ ф (х). а неизвестная функция ф будет определяться из уравнения
l™±y>dy+ ф(х) ,Р(Х у)
ду
Аналитическое решение можно построить, если задать функции U(x,y) и ф(у) для первого варианта решения, и функции U(x,y) и ф(х) - для второго варианта. Причем для реализации всех промежуточных действий необходимо задать также производные и дифференциалы данных функций. Каждое решение представляет
массив строк класса String языка программирования Java [3]. Каждая строка решения составляется из подстрок в виде случайно выбранных элементарных функций, их производных и дифференциалов. Из них образуются функции U(x,y), ф(у), ф(х), их производные и дифференциалы. Каждая строка решения закодирована таким образом, чтобы для нее однозначно следовало графическое представление. Например, строка, определяющая исходное дифференциальное уравнение на рисунке, представлена в виде:
<3>{2|3x+y[2]&}dx+(<2y>{1+(y[2]-3)[2]}+<y>{|3x+y[2]&})dy.
Символы в угловых скобках помещаются в числитель, символы в фигурных скобках - в знаменатель, число 2 в квадратных скобках является показателем степени. Символ «|» интерпретируется, как знак квадратного корня, а все символы, следующие после «|» до знака амперсанда «&» принадлежат подкоренному выражению. Длина дробной черты выбирается, как наибольшая из длин строк, определяющих числитель и знаменатель. В строку могут входить символы, отображаемые различными шрифтами, поэтому графическая длина строки определяется, как сумма длин отдельных символов в пикселях, вычисленных с помощью метода charWidth класса FontMetrics [3]. Для каждого символа строки фиксируется вся, связанная с ним информация: значение символа, шрифт и цвет для его вывода, координаты символа в окне в пикселях, логическая переменная, позволяющая сделать символ невидимым.
Теперь остается полученные формулы решения посимвольно вывести на экран. Добавление текущего символа к стационарному изображению в полной мере соответствует написанию символов на доске при изложении материала преподавателем. При заполнении текущей страницы формулы, ставшие на данный момент не нужными, делаются невидимыми, а на их месте выводятся очередные формулы решения. Управление программой производится многократным нажатием клавиши «Enter». При каждом нажатии клавиши к выведенным формулам добавляется по одному символу. На рисунке приведено начало реше-
ГР ГО
ния, т. е. в первую очередь производится проверка условия---— v , при выполнении которого уравнение
ду cbi
считается уравнением в полных дифференциалах. Далее записываются дифференциальные уравнения для функции U(x,y). При очередном нажатии клавиши «Enter» строки решения, кроме первой и последней, делаются невидимыми. Исходное уравнение и формулы, определяющие промежуточный итог, в отличие от текущих формул выводятся другим цветом.
Р(Х'У)=2т1т?
Qix \Л-—+—У
ЩХ'У} 1+(у2-3)2
дР_ Зу
dy 2V(3x+y2)3 dP=dQ
dQ_ Зу ду дх
дх 2\/(Зх+у2)3
аи= 3 аи= 2у у
дх 2\/Зх+у2 ду 1+(у2-3)2 л/Зх+у2
Окно иллюстрирующей программы с текущим содержимым
Компьютерная реализация полученного решения может использоваться в качестве иллюстрации на лекции или практическом занятии и допускает дальнейшее обобщение. Если программу снабдить сменяющими друг друга комментариями к каждой группе выводимых символов, то полученная программа станет обучающей. Если компьютерное решение использовать в качестве эталона при контроле вводимых символов, то такая программа станет тренажером, позволяющим на каждом шаге контролировать процесс аналитического решения задачи. В статье рассмотрен первый и основной этап - получение эталонного аналитического решения задачи, которое определяет иллюстрирующую программу.
—-------- Литература
1. Попов А. А. Динамические схемы для иллюстрации лекций по программированию // Вестник Московского городского педагогического университета. - 2008. - № 1 (11). - С. 105-107.
2. Овчинников П. В., Лисицын Б. М., Михайленко В. М. Высшая математика: учебн. пособие. - К.: Выша шк., 1989. - 679 с.
3. Ноутон Н., Шилдт Г. JavaTM2: пер. с англ. - СПб.: БХВ-Петербург, 2003. - 1072 с.