Тренажер по нахождению первообразной сложной функции для интеграла вида P(x)Q(x)

Вадим Вячеславович Яриков

аспирант специальности 05.13.18 Математическое моделирование, численные методы и комплексы программ

Марийский государственный университет,

пл. Ленина, 1, г. Йошкар-Ола, 424001, 8 (927) 8704719

ibadmod@gmail.com

 

Аннотация

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

Discussed compiled by the author computer program, a simulator to find the indefinite integral. The program generates a solution with all the intermediate steps and checks the character at each character in the reduction of the integral to a primitive function, if necessary, accompany each group of characters constituent comments.

Ключевые слова

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

simulator, program-trainer, illustrating the program, the integral, commenting solution сharacterwise conclusion.

Введение

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

Компьютерные тренажеры очень разнообразны и применяются в самых разных областях. Принцип, на котором основано большинство компьютерных тренажеров - моделирование реальности. Применительно к математическим тренажерам это означает создание некоторого подобия реального процесса решения поставленной задачи, в котором пользователь ведет себя так же, как и при решении этой задачи на бумаге. Очевидно, что чем более «похожа» созданная модель на свой реальный прототип и чем ближе ее поведение к реальности, тем лучше компьютерный тренажер. Пользователь практикуется в решении задачи, имея дело с их компьютерной электронной аналогией.

Исторически тренажерные технологии возникли и получили наибольшее развитие там, где ошибки при обучении на реальных объектах могут привести к чрезвычайным последствиям, а их устранение - к большим финансовым затратам: в военном деле, медицине, атомной энергетике, авиации и космосе, высокотехнологичном производстве.

Методология и теоретическая часть

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

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

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

Ряд научных и инженерных коллективов страны уже давно работает над применением компьютерных тренажеров (КТ) в обучении, но ситуация на рынке сохраняется: он перенасыщен различными экзаменаторами и оболочками для тестирования, а вот компьютерных тренажеров по-прежнему мало.

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

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

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

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

КТ имеет в своей основе динамическую математическую модель и поэтому наиболее активно используется для качественного обучения. Разумеется, для расчета достаточно полной математической модели требуются весьма внушительные вычислительные ресурсы. Поэтому модель следует упростить, но так, чтобы ее поведение в обусловленных рамках соответствовало реальной системе с определенной точностью – это сложная творческая задача для программиста и научного работника. Можно с уверенностью сказать, что разработка такого наукоемкого продукта занимает достаточно длительный временной период. Так объясняется относительно небольшое количество разработчиков тренажеров данного класса и ощутимая ниша на рынке подобных продуктов.

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

В первом случае возможно достижение красивых специальных эффектов, но очень затруднена модификация КТ. Как правило, программы этого класса (и математические модели в них) очень просты, поэтому такие локальные тренажеры более распространены (что является показателем не качества, а рентабельности их производства).

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

Способы управления КТ обычно отличаются от реального, но это не следует считать недостатком, поскольку он позволяет абстрагироваться от частностей и сосредоточиться на понимании сути моделируемых явлений.

В математике использование компьютерных тренажеров обусловлено необходимостью применения теоретических знаний студентов на практике. Одной из основных частей тренажера является иллюстрирующая программа, которая при посимвольном выводе сгенерированного решения сопровождает каждую группу символов составными комментариями. Реализацию КТ и иллюстрирующей программы по нахождению первообразной сложной функции для интеграла вида P(x)Q(x) мы подробно рассмотрим.

Реализация (практическая часть)

Интегральное исчисление является одним из наиболее сложных разделов математики. Дифференцирование и интегрирование являются взаимообратными операциями, и, казалось бы, что задачи по этим разделам математики должны иметь одинаковый уровень сложности, но это не так. При определении производной сложной функции достаточно знать таблицу производных, при нахождении первообразной все сложнее. Необходимо уметь преобразовывать подынтегральную функцию, сводя исходный интеграл к табличному интегралу или под определенный метод интегрирования [1].

Под интегралом сложной функции вида P(x)Q(x) будем понимать произведения двух непрерывных гладких функций:

P(x)∙Q(x),

где P(x) = ax+b a,b - коэффициенты, автоматически генерируемые в условии задачи, P(x) - непрерывно дифференцируемые функции от x,

Функция Q(x) принимает вид одной из трех функций:

Q(x) = sin (kx), Q(x) = cos (kx), Q(x) = e kx,

где k - коэффициент, автоматически генерируемый в условии задачи, Q(x) - автоматически генерируется в условии задачи.

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

Интегралы такого вида берутся методом интегрирования по частям. При сведении интеграла к первообразной функции требуется выполнить замену переменой и элементарные преобразования.

При интегрировании методом по частям условие задачи выглядит следующим образом, пусть дан интеграл:

,

где   – непрерывно дифференцируемые функции от x.

 

Функции  и  являются гладкими, следовательно, возможно дифференцирование:

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

Операция интегрирования обратна дифференцированию, поэтому справедливо равенство:

После перестановок получаем конечную формулу метода интегрирования по частям:

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

При этом за  берется такая функция, которая при дифференцировании упрощается, а за  - та часть подынтегрального выражения, интеграл от которой известен или может быть найден. Для интеграла вида P(x)∙Q(x) за  следует принять Р(х), а за - Q(x).

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

Для данного класса задач окончательное решение существенным образом связано с промежуточными результатами. Например, неправильное принятие  или , неправильно перемноженные числовые коэффициенты или потеря знака перед интегралом приводит к неверно составленным уравнениям, что перечеркивает дальнейшее решение задачи. Проверка таких решений достаточно сложна для преподавателя. Казалось бы, уже первая ошибка приводит к ошибочности всего дальнейшего решения и проверку можно прекратить. С другой стороны, последовательности ошибочных числовых коэффициентов могут включать еще ошибку в алгоритме решения задачи, на которую преподаватель должен каким-то образом отреагировать, но он не может оперировать ошибочными числовыми коэффициентами для указания систематической ошибки [1].

Основной частью КТ является правильное решение, составленное компьютером согласно алгоритму задачи. Последовательность действий решения задачи снабжена подробным комментированием каждого блока решения задачи.

Рассмотренный выше алгоритм решения для данного класса задач реализован на языке Java. В нем представлено аналитическое решение задачи со всеми промежуточными результатами. При генерации условия задачи случайно выбираются Р(х) и Q(x). Причем для определенности полагаем, что:

,

где для определенности выбираем . Коэффициент в Q(x),  и выбираются случайно.

При демонстрации решения каждая строка выводится на экран посимвольно. В целочисленном двухмерном массиве options хранятся горизонтальные и вертикальные координаты символа, ширина и высота символа, индикатор принадлежности символа к определенному блоку решения и индикатор положения символа. Горизонтальная координата очередного символа с учетом размера предыдущего символа просчитывается автоматически с помощью метода stringWidth класса FontMetrics [2].

Для визуализации решения задачи используется специальная библиотека Java Swing, которая отвечает за создание графического интерфейса. Библиотека Swing предоставляет гибкие интерфейсные компоненты, которые служат основой для одинаковой кросс-платформенной работы. Они поддерживают специфические динамически подключаемые виды и поведения, благодаря которым возможна адаптация к графическому интерфейсу операционной системы. Таким образом, данная иллюстрирующая программа использует Swing  и может одинаково работать в любой операционной системе (Windows, Linux, MacOS) с поддержкой Java и выглядеть как родное приложение для данной операционной системы.

При запуске демонстрационного режима программы происходит первичная инициализация компонентов оболочки графического интерфейса КТ. На рисунке 1 представлена схема функционирования КТ.

Рисунок 1 - Схема функционирования компьютерного тренажера

Модель интерфейса КТ со всеми компонентами Swing является иерархической. Она включает в себя такие компоненты Swing, как JLabel, JButton и JPanel.

Рабочая среда программы представлена контейнером JPanel, где расположены три вспомогательных контейнера: JPanel (control), JPanel (info), JPanel (main), которым при размещении задается режим BorderLayout [2]. Режим BorderLayout – это один из макетов Java Swing, который используется для расположения компонентов на контейнере. Принцип, который использует BorderLayout для компоновки – всё пространство контейнера разбивается на пять частей. В каждой из этих частей располагается один компонент. При добавлении компонента на контейнер с BorderLayout разработчик обязательно указывает, куда именно он хочет поместить компонент. В нашей иллюстрирующей программе режим BorderLayout принимает значения PAGE_START, CENTER, PAGE_END соответственно для JPanel (info), JPanel (main), JPanel (control).

Контейнер JPanel (control) отвечает за размещение компонентов управления программой. В массиве компонентов JButton, который расположен на JPanel (control), находятся управляющие кнопки иллюстрирующей программы.

На контейнере JPanel (info) размещается компонент JLable, куда помещается составной комментарий в зависимости от блока решения.

На контейнере JPanel (main) размещается одномерный массив JLable. Каждый элемент данного массива включает в себя один символ аналитического решения задачи.

Для создания объекта JLabel, затем располагаемый на JPanel (main), используем конструктор со строковым параметром public JLabel(String text). Строковый параметр – это текст, который будет показываться в JLabel, в нашем случае это символ решения. Кроме того, символ, который будет отображаться в JLabel, можно установить при помощи метода setText. Единственным параметром метода является строка отображаемого текста String.

JLabel позволяет настраивать шрифт, который будет использоваться для отображения текста. Установка шрифта происходит при помощи метода setFont класса JLabel. Данному методу в качестве параметра передается объект Font. При создании шрифта указываем имя, размер шрифта и параметры стиля (нормальный, жирный или курсив). В общем виде конструктор для Font выглядит так:

public Font (String name, int style, int size). Если параметр name не задан, то используется шрифт по умолчанию. Во второй параметр, который отвечает за стиль шрифта, передается одна из констант объекта Font – Font.BOLD (жирный), Font.PLAIN (нормальный) и Font.ITALIC (курсив). В третий параметр – размер шрифта. В программе КТ объект Font создается таким образом:

Font fontMain = new Font ("Sylfaen", Font.PLAIN, fontSize).

После установки текста и шрифта у JLabel нужно определить выравнивание текста по вертикали и горизонтали. Делается это при помощи двух методов setVerticalAlignment (вертикальное выравнивание) и setHorizontalAlignment (горизонтальное выравнивание). В качестве параметров для setVerticalAlignment нужно использовать одну из констант JLable: JLabel.TOP (выравнивать по верхнему краю), JLabel.CENTER (по центру) и JLabel.BOTTOM (выравнивание по нижнему краю). Для метода setHorizontalAlignment констант больше – JLabel.LEFT (по левому краю), JLabel.CENTER (по центру), JLabel.RIGHT (по правому краю), JLabel.LEADING и JLabel.TRAILING [2].

Интересны последние две константы. Для языков, у которых написание текста идет слева направо, JLabel.LEADING – это левый край, а JLabel.TRAILING – правый. Для языков, у которых написание происходит справа налево, JLabel.LEADING – это правый край, JLabel.TRAILING – левый. В нашей программе мы устанавливаем вертикальное выравнивание, а горизонтальное оставляем по умолчанию (JLabel.LEFT):

label.setVerticalAlignment(JLabel.TOP).

У JLabel, как и у других компонентов, можно устанавливать размеры. Делается это при помощи метода setPreferredSize. В этот метод передается объект Dimension с требуемой шириной и высотой. Высоту и ширину символа получаем с помощью методов stringWidth и getHeight класса FontMetrics [2].

label.setPreferredSize(new Dimension(width, height)).

Еще одна особенность JLable, которую используем в программе – это использование HTML в качестве текста. Составные комментарии на JPanel (info) в JLabel выводятся с использованием HTML тегов.

После инициализации компонентов оболочки графического интерфейса происходит генерация коэффициентов в условии задачи (рисунок 1). Правильное решение задачи согласно алгоритму сохраняется в строке String solution в специальном виде с использованием тегов для последующей корректной визуализации с помощью компонентов JLabel. Решение разбивается на блоки для просчета координат вывода на экран и для составления комментария. Принадлежность каждого символа строки solution к определенному блоку отражается в массиве options[][4].

Каждый символ строки solution помещается в каждый элемент одномерного массива JLabel, который размещается на JPanel. JLabel является контейнером для хранения и визуального отображения символов решения задачи.

Горизонтальная координата символа просчитывается последовательно в зависимости от координаты предыдущего символа и ширины текущего символа:

if (numLabel==0) options[numLabel][0]=0;

else options [numLabel][0]=options [numLabel-1][0]+options [numLabel-1][2].

У данного класса задач используются теги для визуализации обыкновенных дробей, теги для блока замены переменных при нахождении du, v переменных и тэг для возведения в степень (ex).

Тэги для визуализации обыкновенной дроби - {a}[b], где a – числитель, b – знаменатель дроби. Фигурными скобками выделяем числитель дроби, квадратными скобками – знаменатель. Во время инициализации происходит анализ количество дробей в решении задачи и анализ числителя и знаменателя каждой дроби, который отражается в массиве options[][5]. При визуализации с помощью JLabel дробь выглядит в привычном виде:

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

Тэги для визуализации возведения в степень – e^x@, где e – основание, x – степень. Знак «^» выделяет начало степени, «@» – ее конец. Во время инициализации происходит анализ количества степеней в решении задачи, которые отражаются в массиве options[][6]. При визуализации с помощью JLabel число в степени выглядит в привычном виде:

ex

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

Каждый комментарий соответствует своему фрагменту решения задачи. Если это необходимо, то комментарий может быть составным. Например, при выдаче большой группы символов, связанной с дифференцированием интегрального выражения, основной комментарий дополняется формулами для производной от интеграла.

При создании режима тренировки КТ на базе полученного решения приходится сталкиваться с дополнительными трудностями. Основной из них является существование многих правильных решений. Эти решения отличаются от решения, сгенерированного компьютером, порядком следования символов или групп символов. Для правильной идентификации вводимых символов решение, сгенерированное в памяти компьютера, разбито на блоки. Символы текущего блока могут вводиться в любой последовательности. На каждом шаге может быть выдана ошибка, если введен символ, не принадлежащий блоку. Для образования дроби курсор можно переводить в числитель или в знаменатель. В КТ для каждого символа используется характеристика в виде массива options[][5], который фиксирует принадлежность символа дроби. Если i символ не принадлежит дроби, то его позиция options[][5]=0; если символ принадлежит числителю или знаменателю, то options[][5]=1 или options[][5]=2 соответственно. Если текущий символ вводится в числитель вместо знаменателя, то программа фиксирует ошибку.

При генерации условия задачи в режиме тренировки выводится комментарий, где указывается количество символов в решении данного интеграла, а также максимально возможное количество допущенных ошибок. При вводе каждого символа с клавиатуры проверяется, есть ли он в текущем блоке. При выводе имеющегося символа на экран для него используется вся информация, занесенная в массив options[][]. Горизонтальная координата для вывода очередного символа не связана со значениями массива, а динамически просчитывается при вводе. Использование заранее определенной вертикальной координаты символа и  выбранного размера символа позволяет выводить в нужное место экрана индекс и показатель степени без каких-либо дополнительных действий, которые необходимо использовать, например, в Mathcad. Для вывода на экран знака интеграла запрограммирована клавиша I. Информация соответствия запрограммированных клавиш указанным специальным символам представлена в нижней части экрана КТ и в разделе Помощь.

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

Анализ и оценка разработки

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

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

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

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

Концепции разработки КТ могут быть использованы другими авторскими коллективами для дальнейших исследований в области электронного образования и создания аналогичного программного обеспечения. Это же касается разработанных отдельных программных компонентов, которые могут быть использованы для конструирования других систем.

Заключение

Получение естественнонаучного (инженерного) образования связано с рядом особенностей, которые сильно затрудняют использование информационных технологий. Главные из них связаны с тем, что для этих специальностей принципиально необходима повседневная практическая деятельность в виде регулярно выполняемых лабораторных работ и практических занятий по решению задач. В первую очередь необходимо отметить мощное развитие технологий представления теоретического материала — гипертекстовых систем с мультимедийной «начинкой». Не отстают от них технологии тестирования и контроля. Компоненты учебно-методических комплексов, отвечающие за представление практического материала, развиты значительно слабее.

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

Литература

1.      Яриков В.В. Иллюстрирующая программа по нахождению первообразной функции для интеграла вида произведения двух непрерывных гладких функций – Международный журнал "Образовательные технологии и общество", т.14, номер 1, январь, 2011, c. 337-346;

2.      Ноутон Н., Шилдт Г. JavaTM 2: Пер. с англ. – СПб.: БХВ-Петербург, 2003. 1072 с.