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

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

преподаватель кафедры информатики и методики обучения информатики, аспирант специальности 05.13.18

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

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

ibadmod@gmail.com.

 

Аннотация

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

Discussed compiled by the author illustrating a computer program to find primitive functions. The program generates a solution with all the intermediate steps and takes his character by character, accompanying each group of characters constituent comments.

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

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

illustrating the program, the integral, commenting solutions, complete solution, serial-by-character output.

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

показ рисунков в кадре вопроса;

показ мультфильмов (анимация) в кадре вопроса;

анализ ответа экзаменуемого в виде чисел и формул;

предварительное обучение (показ правильных ответов);

редактирование старых и создание новых вопросов.

Разработка подобных экзаменаторов осуществляется в короткие сроки (простые тренажеры такого класса может написать школьник).

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

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

трудность программирования динамических эффектов (даже простого изменения показаний физических приборов).

Эти недостатки несущественны, но определяют невозможность моделирования сложных физических и математических процессов. Как правило, разработчики таких тренажеров сначала делают для себя инструментальные средства (конструкторы), позволяющие легко создавать цепочки правильных действий. Разработка подобных статических тренажеров зависит от комплектности (готовый тренажер или конструктор) и осуществляется в короткие сроки для тренажеров. На создание конструктора требуется значительно больше времени. Простые статические тренажеры вполне может создать студент ВУЗа.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

,

где Р(х) - многочлен, за  следует принять Р(х), а за - соответственно выражения .

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

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

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

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

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

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

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

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

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

 

рисунок 1

Рисунок 1 - Схема функционирования иллюстрирующей программы

 

Рабочая среда программы представлена контейнером 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 переменных.

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

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

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

рисунок 2

Рисунок 2 – Интерфейс иллюстрирующей программы

 

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

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

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

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

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

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

Автоматизированная система обучения должна выполнять следующие функции:

автоматическая выдача индивидуального задания для каждого студента;

обеспечение возможности его работы в индивидуальном темпе, независимо от других студентов;

автоматизация контроля знаний.

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

Заключение

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

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

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

Литература

1.      Попов А.А. Тренажер по нахождению первообразной функции для интеграла с дробно-иррациональным выражением – ­Йошкар-Ола: Вестник Марийского государственного университета, 2009. 6с.

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