Компьютерные инструменты в образовании, 2015 № 5: 53-60 УДК: 519.6
http://ipo.spb.ru/journal
РАЗРАБОТКА МЕТОДИЧЕСКИХ МАТЕРИАЛОВ В СРЕДЕ СИСТЕМЫ МАТНЕМАТ1СА
Сосновский Николай Николаевич
Аннотация
Преподавателю необходимо иметь своего рода генератор задач, цель которых проверить понимание излагаемого материала и помочь студентам приобрести навыки решения типовых задач. В статье рассматривается генератор задач дискретной математики, разработанный в среде системы Математика. Сгенерированные файлы заданий доводятся до студентов по электронной почте. Генератор обеспечивает формирование индивидуального задания каждому студенту группы. Студент выбирает вариант по своему номеру в списке группы, который также доводится до студентов по электронной почте.
Ключевые слова: генератор задач, Ма^ета^са, индивидуальные практические задания, дискретная математика.
Важным элементом процесса преподавания математики является разработка методических материалов для студентов. Автор исходит из того, что процесс освоения математики должен быть активным. Студент должен выполнить обязательный минимум упражнений, для того чтобы достигнуть определенного уровня понимания материала и закрепить его в навыках. Предлагаемые упражнения бывают двух типов. Первый тип упражнений — это достаточно простые упражнения (задачи), цель которых проверить понимание излагаемого материала и помочь студентам приобрести необходимые навыки решения типовых задач. Второй тип упражнений — это упражнения, требующие искусства для их выполнения. Такие упражнения предназначены для углубленного понимания математики и могут быть осилены не всеми студентами. Разработка таких упражнений не может быть осуществлена стандартными способами и требует творческого подхода от преподавателя. Что же касается упражнений первого типа, то, напротив, разработка их может и должна быть автоматизирована, так как здесь требуется приготовить большое количество задач одного типа, чтобы обеспечить выдачу каждому студенту индивидуального задания, по результатам проверки которого можно сделать вывод о степени усвоения материала. Так как это индивидуальные практические задания, то их много, и, следовательно, необходимо обеспечить наличие ответов для упрощения проверки и оценки результатов. Сказанное говорит о том, что преподавателю необходимо иметь своего рода генератор задач для обеспечения формирования индивидуальных практических заданий по излагаемому материалу.
В СПбГЭТУ (ЛЭТИ) имеется опыт разработки таких генераторов [1, 2]. В данной статье рассматривается генератор задач дискретной математики, разработанный в среде системы МаШетайса. Целью автора является показать, что создание такого генерато-
ра вполне посильно математику-непрограммисту, освоившему МаШеп^ка на уровне пользовательского интерфейса.
На рис. 1 приводится пример вариантов заданий и ответов по дискретной математике, формируемых таким генератором.
Вар.»01(3111:
1;Решить диофантоео уразнение 4Е7ЙХ- 19Q9 у = -115.
Ответ записать в виде: HiX^+lc-trysyo»h-1; xj-наименьшее положительное число. 2\ Представить V 140 в виде периодической цепной Дроби.
3j Еаити представление рационального числа —■
327
непрерывней дрвбьв.
4; Вычислить в кольце вычетов по модулю 57. <с
5;Решить уразнение, записанное з 5-ичнсй системе счисления: 1200 - 24 х - 4021. Реиение записать s десятичной и 5 - ичной системах.
в'Найти наименьшее натуральное число, удовлетворяющее условиям Ж. я 4 T.cd 23, л I 3 BDd 17, х = 1 med 41.
7)Найти остаток от деления 11
на 90.
Вар.»02(3111)
13 Решить диофантоео уразнение 1749 х - 1177 у « 77.
Ответ записать в Еиде: x^x^+t-i,t; х»-наименьшее положительное число. 2)Представить V 176 з виде периодической цепной дроби.
31 Найти представление рационального числа ^ непрерывной дрс5ы>.
41 Вычислить в кольце зачетен по модули 94.
51 Решить уравнение, записанное в £-ичной системе счисления: 371 - Ii х = 1073. Решение записать е десятичной и S - ичной системах.
63 Найти наименьшее натуральное число, удовлетворявшее условиям ж. ш 22 таd 11, х I 26 mod 23, х ■ 11 med 17. 73 Найти остаток от деления 5 на £6.
Вар. РОК 3111) Вар.№02(3111]
11х = 45 - 83 t 1 х = 31 -107 t
у = -115-212 С у > -4« + 159 Г
2) (11, (1, 4, 1, 22J} 23{13, {3, 1, 3, 2i)i
3){2, 4, 11, 2, 3} 3]{2, 4, 2, 9, S)
4134 4)61
5) ((24, 10), (44, 5)) 53ШЗ, 10), £27, В))
61 2672 6)94«
7)77 7)5
РИС. 1
Рассмотрим генератор по частям. Первая часть представлена на рис. 2.
Сначала мы видим две процедуры: intstr[m_] и sp[n_].
Первая процедура предназначена для формирования чисел определенной длины в текстовом формате. В данном случае это необходимо, чтобы получать номера билетов в виде текстовой строки длины 2 для чисел от 1 до 99, то есть третий билет будет иметь номер 03.
Вторая процедура формирует строку пробелов заданной длины, в данном случае 35.
Далее идут операторы, создающие таблицы данных, используемые генератором в процессе работы. Так, doma1, domb1 и domd, — это три непересекающихся диапазона простых чисел.
Таблица domQ содержит целые числа, разложения которых в цепную дробь имеют подходящую длину, в данном случае от 4 до 6.
В таблицу domR отобраны несократимые рациональные дроби, обладающие подобным свойством.
{«Процедура формирования m порядковых целых чисел в текстовой форыате«)
intstr[m_] (зп = ТаЫе[0, {m} ]; Do [ (зп [ [i] ] = Integer String I ± 1 ; If|i<10, sn[[i|j = String Join ["0", sn[[i]]]])
ti, 1, в}]); intstr[10Q]:
(«Процедура Формирования строи! из п пробелов«)
зр[а_| := (spn Do[spn = StringJoin[spn, " ™], {i, 1, л)]);
sp[35];
dooal - Table [Prime [n] , {n, 13,20}]; dombl = Table [Prime [n] , {n, 21, 30}]; dontd ж Table [Prijne [n] , {n, 5, 9}] ;
donO = {119, 125, 128, 140, 155, 167, 173, 176, 185, 194, 215, 218, 248, 254, 266, 287, 293, 299, 305, 320, 335, 338, 359, 365, 368, 377, 392, 395, 398);
r 219 652 993 634 476 821 250 745 102 683 928 443 931 135 220 799 90 638
doxoR — J_ ___ _____ _ _ _ ___ _ ___ _ ___ _
~ I 76 ' 329 ' 338' 433 ' 169' 328 ' 137 ' 318' 53 ' 324 ' 455 ' 193 ' 370' 74 83 412 ' 53 ' 415 ' 109 719 817 327 179 751 659 355 436 945 401 359 323 216 639 668 127 695
53*' 324 ' 328 ' 226 ' ~73~ ' ЗОб' 309' 218 ' ¡71' 326 ' 192' 21?' 154 ' 133 ' 302 * ш' ~т7' 332 ' 191 166 650 79 37 945 974 215 706 606 178 410 962 841 99 727 83 189 761
87*' In' 347' 29' ¡7' 317' 45l' 134' 309 ' 337' IT' 187' 44l' 314' 43' 332' 32' ~TZ' 313' 734 949 466 827 848 958 741 97 228 73 907 75Э 965 305 363 219 165,
327 ' 3341 209' 399' 433 ' ill' 3321 57 ' 83 ' 45' 317 1 3591 434 ' 106 ' 218 ' 131 ' 73 J'
Рис. 2
Отбор был сделан предварительно с помощью операторов цикла, использующих в качестве условия указанное ограничение на длину.
Заметим, в качестве примера, что формирование диапазонов чисел происходит с помощью команды Table[Prime[n],n,13,20], которая в данном случае создает диапазон простых чисел с номерами от 13 до 20.
Следующая часть генератора представляет собой процедуру, которая состоит из последовательности программ, генерирующих условия и ответы к задачам соответствующего типа, входящих в билет.
Рассмотрим эти программы последовательно с тем, чтобы представить используемые операторы и оценить сложность программ.
Программа для первой задачи представлена на рис. 3.
с ж d Rdiidomlntegeг [ { 3, 10}] RandomChoice[{1, -1}],*
{{хО, у0}} = {х, у} / . Findlnstance[{a х + Ъ у я с, 0 s и Abs [b/d] }, {х, у}, Integers] ;
Рис. 3
Первые строки программы — это генерация с помощью операторов RandomChoice[ ] и RandomInteger[ ] коэффициентов уравнения. Затем с помощью команд StringForm[ ]
FindInstance[ ] происходит формирование текста условия и ответа к задаче. Программа для второй задачи представлена на рис. 4.
(»задача 2«) q = P.aridomChoí се [ donü];
usl2 = StringForm "
an 5 2 = CoritinuedPrai
Рис. 4
Первый оператор — это случайный выбор числа. Второй и третий оператор формируют условие и ответ к задаче на разложение корня квадратного из целого числа в непрерывную дробь. Как видим, используются два оператора: StringForm [ ] и ContinuedFraction [ ].
Программа для третьей задачи представлена на рис. 5.
Здесь осуществляется выбор из диапазона рациональных дробей и формирование ответа.
Программа для четвертой задачи представлена на рис. 6.
si = 0; Do [If [GCD[kl, ш] ==1, (si = si + 1; tlm[[sl] ] = kl)], {kl, 1, m - 1}]; sol = Findlnstance[k x + m у == 1 it0 < x < m, {x, j), Integers]; While[GCD[b, k] * 1 \/ Mod[b/k, 1] == 0, b = RandomChoice[tlm] ] ;
Алгоритм следующий:
1. Случайно выбираем целое число т, у которого достаточно большая система приведенных вычетов.
2. Далее формируем эту таблицу приведенных вычетов ^т и выбираем из нее случайное число к, не равное 1.
(*эадача 3#)
us13 ■ RandomChoice[domR]; ans3 = ContinuedFraction[usl3];
Рис.5
Рис. 6
3. Затем решаем сравнение kx = lmodm Запоминаем решение — число a.
4. Далее выбираем число b так, чтобы числа k и b были взаимно простыми, и для которого b/k не является целым.
5. В условие пишем рациональную дробь b/к, в ответ пишем остаток от деления числа ab на m.
Программа для пятой задачи представлена на рис 7.
а = Randomlnteger[{5, 19)1 ; Ь = Randomlnteger[{101, 399]]; u = Randomlnteger[(11, 29} ] ;
q = RandomChoice({2, 3, 4, 5, 6,7, 8, 9}];
usl5 = StringFom [" ", aq x + bq — cq ]; Рис. 7
Алгоритм
1. Выбираем случайно целые числа a, b, u и вычисляем число c : c = au + b.
2. Наугад выбираем основание системы счисления q из списка {2, 3, 4, 5, 6, 7, 8}.
3. Переводим затем числа a, b, u и c в q-ичную систему счисления и формируем условие и ответ к задаче.
Программа для шестой задачи представлена на рис. 8.
(«задача б*)
с = RandtjmSample [Range[0, 40] , 3] ;
domr = (11, 13, 17, 19, 23, 29, 31, 37, 41, 43};
domrl = (10, 14, 15, 21, 25, 35, 49);
е = RandomChoice[domrl];
AppendTo[dorar, ej;
m = RandcmSample[domr, 3] ;
usl6 = Stringrorm["x = '" mod " , x = " mod " , x = " mod c[[l] ], m[[l] ], c[ [2] ] , m[ [2]], c[[3]], m[[3]]];
atis€ = ChineseRemainder[c, m]; ,
Рис. 8
Алгоритм
1. Выбираем 3 целых числа без повторения из диапазона {0,1,..., 40} .
2. Формируем диапазон для выбора трех попарно простых чисел — модулей сравнений ml, m2, m3. Делаем случайную выборку без повторения 3 чисел.
3. Формируем условие и ответ к задаче.
Программа для седьмой задачи представлена на рис. 9. (•задача 7»)|
ш = Randomlnteger[{31, 99}];
lm = EulerPhi[m];
tlm = Table[0, {k, 1, lm}];
si = 0; Do [If [GCD [kl, m] == 1, (si = sl + 1; tlm[[sl]] = kl)J, {kl, 1, m-1}];
na = Randomlnteger[{2, lm}];
a = tlm [ [na] ] ;
loil = EulerPhi[lm] j
tlmi = Table[0, {k, 1, 1ml}];
si = 0; Do [If [GCD [il, lm] == 1, {si = si + 1; tlml[[sl]J -kl)], {kl, 1, lm-1}] rib = Randomlnteger[{2, 1ml}]; b = tlml [ [nb] ];
time = Table [If [GCD [k, a] == 1 4i GCD [ £, b] ==1, k, 0], {k, 1, 125}];
time = Select [time, ff >0 i];
lc = Length[time];
nc = Randomlnteger[{2, lc}];
с = tlmc[ [nc] ];
bl = PowerMod [b, c, lm];
xm = PowerMod[a, bl, m];
ual7 = StringFonn[" "Г 2 ' a, b, c] ;
ans7 - xm;
Рис. 9
Алгоритм
1. Выбираем случайное целое число т из диапазона {39,..., 99} .
2. Строим приведенную систему вычетов ^т для этого числа.
3. Выбираем случайное целое число а из ^т, не равное 1.
4. Строим приведенную систему вычетов 11т1 для этого числа.
5. Выбираем случайное целое число Ь из 11т1, не равное 1.
6. Строим таблицу ^тс чисел, попарно простых с а и Ь.
7. С помощью операторов Ро\л/ег1У^[Ь,с,1т] и Ром/ег1У^[а,Ь1,т] вычисляем значение искомой степени.
8. Формируем условие и ответ к задаче.
Далее происходит формирование текста билета к заданному варианту и текста ответов к нему.
Формат текста условия представлен на рис. 10. Формат текста ответов представлен на рис. 11.
Рассмотрим теперь, как работает генератор. На рис. 12 представлена программа формирования файлов билетов и ответов к ним.
Программа оформлена в виде процедуры с двумя параметрами: число вариантов и номер группы.
Число вариантов округляется до ближайшего сверху целого числа.
Xq-наииеньшее положительное число.
2)Представить '5' в виде периодической цепной
3)Найти представление рационального числа
4)Вычислить 7" в кольце вычетов по модулю 8.
5) Решить уравнение, записанное в '9"-1гчной системе
Решение записать в десятичной и '9' - ичной
6)Найти наииеньшее натуральное число,
7)Найти остаток от деления 12" на ^З".", sn[[vr]], лсгг, spn, usll, usl2, usl3, usl4.
Рис. 10
7)4^" , sn[ [vr] ], лот, spn, ansl, ans2, ans3, ans4, ans5, ans6, ans7]
Рис. 11
prn[avr_, ncrr_] : = (If [Mod£xivr, 2] ■= 1, nv ■ Jivr + 1, nv = Jivr] ; end i ТаЫе[0, {str, 1, nv/2), {nzd, 1, 2}, {tip, 1, 2>]; Do [ (k = Hod [2 s-l, 99, lj; pr2d[k, ngr] ; cnd[ [s, 1,1]]« usl; cnd[[s, 1, 2] J = ana; it = Mod [2 s, 99, l]; pnd[i, лсгг] :
end [ [s, 2, 1] ] = usl; end [ [s, 2, 2] ] = ans;) , {s, 1, nv/2}|; Do[Print[Grid({{end {[s, 1, 1] ], cnd[ [s, 2, 1]])), Frame All, Spacings -+ {1, 1}]|, {з, 1, nv/2}]; Do [Print [Grid [ {{end [ [з, 1, 2] ] , end [ [s, 2, 2]]}}, Prame -r All, Spacings {1, 1}]], {s, 1, nv /2}];)
Рис. 12
Строится трехмерная таблица cnd, первоначально пустая. Каждый элемент этой таблицы соответствует паре задач, печатаемых на листе рядом. Он состоит из двух элементов — для первой и второй задачи. Элемент каждой задачи, в свою очередь, делится на два элемента. В первый из последних элементов записывается текст условия, а во второй — текст ответа для первой или второй задачи данной строки таблицы.
Заполнение таблицы cnd происходит в цикле по числу строк файла, то есть по числу пар задач, печатаемых на листе рядом. Для каждой строки последовательно два раза запускается процедура przd[vr_,ngr_], параметрами которой являются номер варианта и номер группы. Каждый вариант состоит из одних и тех же задач, но так как процедура каждой задачи включает генерацию случайных чисел, то варианты с разными номерами состоят из задач с различающимися исходными данными.
Две последние строки программы это циклы формирования (печати) билетов и ответов к ним.
Список литературы
1. Степанов А.В. Система компьютерной генерации задач по математике // Компьютерные инструменты в образовании, 2000. № 3-4. С. 28-31.
2. Посов И.А. Автоматическая генерация задач // Компьютерные инструменты в образовании, 2007. № 1. С. 54-62
DEVELOPMENT OF METHODICAL MATERIALS IN THE ENVIRONMENT OF "MATHEMATICA"
Sosnovski N. N. Abstract
The teacher must have a kind of generator of tasks aimed to check understanding of the material and to help students to acquire the skills of solving typical problems. The article discusses the task generator of discrete mathematics, developed in the environment of the system of Mathematics. The generated files of the tasks are communicated to students via e-mail. The generator ensures the formation of individual assignments to each student of group. The student selects an option by its number in the list group, which is also communicated to students via e-mail.
Keywords: generator of tasks, Mathematica, individual practical tasks, discrete mathematics..
© Наши авторы, 2015. Our authors, 2015.
Сосновский Николай Николаевич, кандидат технических наук, старший научный сотрудник СПбГЭТУ (ЛЭТИ), доцент кафедры высшей математики ВМ-2, [email protected]