10
IV Гомельская научно-практическая конференция школьников по математике, ее приложениям и информационным технологиям "Поиск"
Учебно-исследовательская работа
«Генерация дидактических материалов по математике»
Mathematica позволяет пользователю писать программы на ее встроенном языке, поддерживая при этом различные стили программирования -- как функциональный, так и процедурный. В данной заметке не затрагиваются вопросы программирования собственно в среде Mathematica. Нас будет интересовать возможность взаимодействия этой программы с файлами, содержащими команды разметки TeX. В такие файлы (а также, в файлы, содержащие программы на языках C или Fortran) можно вставлять выражения системы Mathematica, ограничивая их, слева и справа комбинаций знаков <* и *>. Получившийся файл обрабатывается системой Mathematica, которая заменяет заключенное между этими символами выражение на результат его вычисления.
Файл, содержащий команды разметки языка TeX и функции системы Mathematica, должен иметь расширение mtex. При обработке такого файла командой Splice[], сформировавшийся результат будет автоматически сохранен в файл с расширением tex.
Например, пусть файл task2.mtex содержит следующий фрагмент текста:
Рассмотрим неравенство
$\dfrac{<*u=(3x-5)(x+4); v=(x+4)(x-5); PolynomialRemainder[u,-v,x]*>}
{<*Expand[-v]*>}
\leqslant <*-PolynomialQuotient[u,-v,x]*>.$ \hfill $(*)$
\bigskip
и эквивалентное ему
$\dfrac {(3x-5)(x+4)}{(x+4)(x-5)}\geqslant 0.$ \hfill $(**)$
Тогда после выполнения команды Splice["task2.mtex"] автоматически
созданный файл task2.tex уже будет содержать результат выполнения функций системы Mathematica:
$\dfrac{40 + 10\,x}
{20 + x - {x^2}}
\leqslant 3.$ \hfill $(*)$
В данном примере использовались следующие функции системы Mathematica:
Expand[v] -- раскрывает скобки в выражении v;
PolynomialRemainder[u,v,x] -- вычисляет остаток от деления многочлена u(x) на многочлен v(x);
PolynomialQuotient[u,v,x] -- находит частное от деления этих многочленов.
Результат обработки данного файла программой TeX показан на врезке.
Заключение
Существует потребность в создании интерактивных систем, где задача диалога с учеником и проверка решения ложится на компьютер. Диалоговое взаимодействие обеспечивает следующие аспекты обучения: непрерывный контроль деятельности обучаемого, диагностирование, управление системой со стороны самого обучаемого.
Поэтому я в дальнейшем планирую написать программу, реализующую указанные возможности.