Научная статья на тему 'Система автоматизированной подготовки задач по высшей математике'

Система автоматизированной подготовки задач по высшей математике Текст научной статьи по специальности «Математика»

CC BY
231
32
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
высшая математика / задачи / автоматизация / LaTeX / генерация / бинарные деревья / компьютерная алгебра / правила синтаксиса

Аннотация научной статьи по математике, автор научной работы — А С. Ляликов

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

THE SYSTEM OF TASKS ON HIGHER MATHEMATICS AUTOMATED PREPARATION

The automated system of tasks on higher mathematics preparation developed by authors is considered. The system consists of the base containing parameterized tasks classes, the main program generating ready to use variants of tasks and the collection of LaTeX macros, capable of typesetting the generated material in the appearance needed. The system allows to quickly preparing any quantity of high-quality variants from the classes of tasks chosen by user.

Текст научной работы на тему «Система автоматизированной подготовки задач по высшей математике»

2009

УДК 519.6

Доклады БГУИР

№ 2 (40)

СИСТЕМА АВТОМАТИЗИРОВАННОЙ ПОДГОТОВКИ ЗАДАЧ ПО ВЫСШЕЙ МАТЕМАТИКЕ

АС. ЛЯЛИКОВ

Гродненский государственный университет им. Янки Купалы Ожешко, 22, Гродно, 230023, Беларусь

Поступила в редакцию 15 января 2009

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

Ключевые слова: высшая математика, задачи, автоматизация, ЬаТеХ, генерация, бинарные деревья, компьютерная алгебра, правила синтаксиса.

Введение

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

Автором была разработана автоматизированная система, решающая озвученные выше проблемы. Эта система состоит из трех компонент.

1. База задач содержит задачи, а также ответы к ним, в обобщенном параметризованном

виде.

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

3. Макроопределения в системе ЬаТеХ осуществляют верстку сгенерированного основной программой материала в различных форматах. На сегодняшний день это списки задач для домашних заданий, самостоятельных и контрольных работ, экзаменационные билеты, ответы к заданиям. Планируется подготовка заданий в формате, совместимом с системами компьютерного тестирования и удобном для проведения тестов.

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

База задач

Основная база задач содержит материал в виде стандартной разметки системы LaTeX [1], дополненной несколькими командами, задающими структуру базы. Выбор формата базы обусловлен следующими достоинствами системы LaTeX.

- Формулы, сверстанные системой LaTeX, имеют высокое качество. Ее разметка признана многими математиками удобным и естественным способом записи математических выражений.

- Развитые возможности макропрограммирования системы LaTeX позволяют путем создания своей собственной разметки отделить содержание от оформления. Это дает возможность основной программе нашей системы сосредоточиться исключительно на содержании.

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

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

\begm{task}{<ммя-меmка>} ... \end{task}.

Уникальное имя-метка служит для обращения к конкретному классу задач. Команда \state{<текстовая часть условия задачи>}

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

^ге{<формульная часть условия>} и ^^{<ответ>}.

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

\param{<имя>}{<значение1>;<значение2>;...;<значениеN>}.

Если команда \param расположена в начале окружения task и перед ней нет команд \vars, то ее действие глобально и распространяется на все параметризации данного класса задач. Если параметр описан после команды \vars, то его действие распространяется только на вводимую этой командой параметризацию.

Аргументы команд \vars и \ans содержат математическую разметку, задающую условие и ответ задачи. Подстановке параметров и упрощению подвергается не весь их аргумент, а только части его, помеченные командой

\simp{<активное поле>}

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

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

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

х3-а3 х2+ах + а2 За2

lim-= lim-=-.

(х - а)(сх + d) cx + d ас+d

А затем, раскрывая скобки в знаменателе, приходим к условию.

Предел отношения полиномов

35. Найти предел.

• а = 1; -1; 2; -2; 3; -3:4; -4; 5; •

• с= 2; -2; 4; -4; 5; -5; 6; -6

• d = 1; —1; 3; -3; 7;-7

1)

lim

xs - a3

ex2 + dx — acx — ad

За2

ас + d

2)

lim

cx2 + dx — acx — ad

x3 - a3

ас ■

d

За2

\begin{task]"Cnpeflen

отношения полиномов} XstateíHaiÍTH предел.} \param{aHl;-1;2;-2;3;-3;4;-4;5;-5} \param{cK2;-2;4;-4;5;-5;6;-6} \param{dKl;-l;3;-3;7;-7> \vars{

\lim_-Cx \to \simp{a}} \frac{\simp{x~3 - a~3}}

{\simp{cx~2 + dx - acx - ad}}

}

\ans{\simp-[\frac{3a~2}{ac+d}}} \vars{

\lim_{x \to \simp{a}} \fracC\simp{cx~2 + dx - acx -ad}} {\simp{x~3 - a~3}}

}

\ans{\simp{\frac-[ac+dH3a~2}}} \end{task}

Рис. 1. Представление задачи в базе

Количество вариантов задач в классе определяется числом перестановок значений параметров каждой из параметризаций. Для задачи на рис. 1 общее количество вариантов N = 2■10•8•6 = 960 .

Активные поля

Остановимся подробнее на синтаксисе активных полей. Как уже можно было убедиться из примера на рис. 1, для записи активного поля не вводится специального синтаксиса, а используется стандартная разметка системы LaTeX, которая

1) понятна математику, заполняющему базу;

2) позволяет естественным образом влиять на вид формулы после подстановки значений параметров и упрощения.

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

Активные поля подвергаются анализу. Это вынуждает подчинять их синтаксис строгим правилам, которые базируются на стандартном синтаксисе системы TeX [2, гл. 24-26]. Активное поле является математическим выражением (expr), имеющим вид

(expr) (+ I - I пусто)(prodl)(+ | -)(prod2)(+ | -)■■■(+ | -)(prodN).

Здесь символ "—>" означает "определено как", а означает "или". Произведения (prodi) задаются по правилу

(prod) (multl)(mult2)... (multN).

Обратите внимание, что, как это принято в математике, знака "умножить" нет. Каждый из множителей (multi) является простым множителем либо функцией:

(mult) -» (simple mult) | (function).

Простой множитель — это параметр, число, сумма, модуль, радикал либо дробь: (simple mult) —> (param) | (number) | (sum) | (abs) | (sqrt) | (frac).

Параметр имеет вид (param) —> (латинская буква или команда) (необязательные степень и индекс).

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

любой корректный с точки зрения LaTeX^ набор знаков: он не подвергается анализу. Число собирается из идущих подряд цифр:

(number) —» (набор идущих подряд цифр) (степень).

Сумма — это выражение, заключенное в скобки:

(sum) -» ((expr)) (степень) | \left((expr) \right) (степень).

Аналогичное правило действует для модуля:

(abs) —(expr) | (степень) | \left | (expr) \right | (степень).

Радикал и дробь задаются стандартными командами \sqrt и \frac, для которых применяется обычный синтаксис. В частности, радикал может снабжаться необязательным аргументом, задающим степень корня. Все аргументы — это выражения (expr). У радикала и дроби нет ни индекса, ни степени. Функция — это либо обычная функция, либо логарифм с обязательным основанием, имеющим синтаксис (expr):

(function) -»(name)(степень)(arg) | \log(основание и степень)(arg).

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

(name) —»\sin | \cos | \tg | \ctg | \arcsin | \arccos | \arctg | \arcctg | \ln | \lg.

Аргумент функции — это либо другая функция, либо произведение простых множителей:

(arg) —» (function) I (simple multl) (simple mult2)... (simple multN).

Данное правило, например, означает, что, как и ожидает математик, sin cos лх sin(cos(;rx)), sin лх cos лх (sin(;rx))(cos(;rx)). Напомним, что пробелы в формулах игнорируются.

Основная программа

На сегодняшний день основная программа представляет собой командно-строковое приложение с исполняемым файлом expand.exe и имеет следующий синтаксис:

expand -п<список номеров> -у<количество вариантов> [-d].

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

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

Для генерации каждого из выбранных вариантов последовательно обрабатываются активные поля параметризации. Анализируя активное поле, программа строит соответствующее ему бинарное дерево [3, раздел 2.3.2]. Затем свое бинарное дерево строится для каждого из значений параметров (которые могут зависеть от других параметров) и подставляется в основное дерево. Полученное составное дерево рекурсивно упрощается. Результат преобразуется обратно в разметку ЬаТеХ и подставляется на место активного поля. Списки подготовленных вариантов записываются в выходной файл.

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

Рис. 2. Преобразование одного из активных полей условия в бинарное дерево

Рис. 3. Подстановка параметров в активное поле условия

Рассмотрим работу программы на примере из рис. 1. Предположим, что в качестве одного из вариантов была выбрана первая параметризация со значениями параметров а = -3, с = 5 и с! = 3 . Присмотримся к процессу генерации этого варианта. На рис. 2 изображено бинарное дерево, построенное для одного из активных полей. На рис. 3 показано как в это дерево подставляются конкретные значения параметров, результат подвергается упрощению и преобразуется в формат ЬаТеХ.

Вывод и верстка программы

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

\begin{task}{<mексmовая часть условия задачи>} ... \end{task}.

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

\уаг{<формульная часть условия задачи>}{<список ответов>}.

Список ответов может состоять из неограниченного количества как правильных, так и неправильных ответов. Эта возможность зарезервирована для описания тестовых заданий. На сегодняшний день список ответов состоит из одной команды

\а^{<правильный ответ>},

содержащей правильный ответ. В правой части рис. 4 приведен фрагмент вывода основной программы, содержащий первые два варианта, сгенерированные для класса задач из рисунка 1. Придавая окружению task и командам \var и \ans различную интерпретацию путем создания соответствующих макроопределений, можно сверстать вывод программы в любом виде.

Задача 1. Найти предел. 1) lim

^-з 5х2 + 18./; + 9 9

2) lim

х3 + 1

-1 4а.;2 + 5х + 1

3)

5)

lim

V—>—2 11

~12 lim

Ах~ + 5х — 6

IE3 + 8

4)

-1

lim

X—>— 1

7

Ах2

■ х — 3

х3 + 1

x:i + 1

хЛ- 1 6х2 + Ьх — 1 3

7

ох2 - 12.7; + 7

6)

7) lim

я—>1 2

- 1

lim

ж-)--5

~25 lim

—5х- -

3

2х2 + Их + 5 :с3 + 125

- 1

12х - 7

%========[TASK 35]=========

\begin{task}iHafixH предел.}

'/( -----[variant 1]-----

\var{

\lim_{x \to -3> \frac{x~{3} + 27}

{5x~{2} + 18x + 9>

}

{ \ans{-\frac{9H4}} >

1 -----[variant 2]-----

\var{

\lim_{x \to -1} \frac{x~{3} + 1}

{4x~{2} + 5x + 1}

}

{ \ans{-l} }

"L И так далее. . .

\end{task}

Рис. 4. Вывод программы

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

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

\begin{ticket} ... \еМ{йске1;} и ^^8к{<услоеие задачи>},

которые следует определить для описания конкретного формата билетов. В правой части рис. 5 это проделано для получения билетов простейшего вида, представленного левой частью рисун-

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

Билет № 1

1) Найти предел.

ж3 + 27

lim —--.

5х2 + 18ж + 9

2) Вычислить у"'(0).

у = е4х2~х.

3) Найти площадь фигуры, ограниченной линиями.

У = Зх2 + 12.x + 15, у = Зх + 9.

\renewenvironment{ticketH

\раг \penalty -9999 \vskip 6mm \noindent \begin{minipage]--C\colunmwidth} \hbadness=10000 \hfil

\textbf{\large Билет №\,\arabic{tick}} \par

Н

\vskip 6mm \hrule \end-Cminipage} \par

\newcommand\addtask[1] { \par \vskip 3mm \hangindent=7mm \hangafter=l \makebox[7mm][r]{\arabic{task})\kern2mm}#l \par

Рис. 5. Интерпретация вывода в виде билетов с заданиями

Заключение

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

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

THE SYSTEM OF TASKS ON HIGHER MATHEMATICS AUTOMATED PREPARATION

AS. LYALIKOV

Abstract

The automated system of tasks on higher mathematics preparation developed by authors is considered. The system consists of the base containing parameterized tasks classes, the main program generating ready to use variants of tasks and the collection of LaTeX macros, capable of typesetting the generated material in the appearance needed. The system allows to quickly preparing any quantity of high-quality variants from the classes of tasks chosen by user.

Литература

1. Гуссенс М., Миттельбах Ф., Самарин А. Путеводитель по пакету LaTeX и его расширению LaTeX2e / M., 1999.

2. Кнут Д. Все про TeX. M., 2003.

3. Кнут Д. Искусство программирования: в 3 т. М., 2004. Т. 1.

i Надоели баннеры? Вы всегда можете отключить рекламу.