ЛИНЕЙНАЯ АЛГЕБРА С СИСТЕМОЙ MATHEMATICA LINEAR ALGEBRA WITH MATHEMATICA SYSTEM
Т.Ю. Войтенко, А.В. Фирер T.Yu. Voitenko, A.V. Firer
Информационные технологии в математике, методика обучения математике, системы компьютерной алгебры, система МаМетаИса, линейная алгебра.
В статье описываются возможности использования системы компьютерной алгебры Ма^етаИса при изучении курса линейной алгебры в вузе. Отмечаются преимущества применения системы МаИчетаИса в обучении по сравнению с традиционным подходом. Приводятся примеры использования системы МаМетаИса 7.0 при изучении некоторых тем курса линейной алгебры: определители, обратная матрица, системы линейных алгебраических уравнений.
Information technologies in mathematics, teaching methods in mathematics, systems of computer algebra, the system Mathematica, linear algebra.
The possibilities of using the computer algebra system Mathematica in the process of studying linear algebra in a high school are described in the given article. The advantages of using the system Mathematica in education are compared to the traditional approach. The examples of using Mathematica 7.0 in the course of linear algebra in such topics as determinants, inverse matrix, system of linear algebraic equations, are presented.
Весьма заметным фактором, влияющим на повышение качества обучения математике в высшей и средней школах, являет-ся внедрение современных информационнокоммуникационных технологий (ИКТ), которые включают широкое использование систем компьютерной алгебры. Компьютерная алгебра -одна из интенсивно развивающихся областей современной математики, соединяющая в себе как алгебру, так и численные методы; в ней занимаются и разработкой новых алгоритмов, и созданием программных систем, которые затем используются в научных исследованиях, а также имеют большое практическое приложение
Системы компьютерной алгебры условно разделяются на системы общего назначения, такие как AXIOM, MACSYMA, Maple, Mathematica, REDUCE, и специализированные, такие как CALEY, GAP (теория групп). Наиболее универсальной среди систем общего назначения можно по праву считать систему Mathematica.
Использовать систему Mathematica желательно начинать с первых курсов при изучении общих математических дисциплин, в частности алгебры. Хотя нередко возникают суждения, что вовлечение подобного рода систем в содержание физико-математической подготовки в опре-
деленнои ситуации создает опасный прецедент падения уровня фундаментализации математического образования, поскольку эти процессы иногда начинают связываться с заманчивой возможностью быстрого получения результата в обход серьезного обоснования способа достижения цели. Однако взвешенный подход к построению содержания и методики обучения с учетом конкретных целей и уровней образования позволяет более глубоко изучать эти математические дисциплины, придавая им исследовательский характер. В то же время перенос акцента на вычислительный процесс позволяет приземлить абстрактную теорию и придать ей дух конкретности, что особенно важно на младших курсах. Кроме того, если начинать внедрение систем компьютерной алгебры с младших курсов, то студенты быстро оценивают преимущества работы с такими системами и активно используют их в курсовых и выпускных исследованиях [Войтенко, Фирер, 2010].
Разработка методик обучения с использованием систем компьютерной алгебры представляется перспективной еще и потому, что последние органично сопрягаются с Интернетом, открывая возможности удаленного доступа к интерактивным обучающим материалам. На сайте
demonstrations.wolfram.com можно найти большую постоянно обновляющуюся коллекцию интерактивных ресурсов по различным предметным областям, созданных в системе Mathematica. Новый формат документов (CDF) позволяет использовать ресурсы без установки самой системы, например при чтении лекций, что может существенно повысить эффективность преподавания классических разделов математики.
Приведем пример использования системы Mathematica 7.0 при изучении курса линейной алгебры. Решение многих задач «вручную» этого курса связано с достаточно громоздкими вычислениями, за которыми зачастую теряется суть того или иного алгоритма. Использование системы Mathematica позволяет избежать «потери» алгоритма. При этом полный отказ от вычислений «вручную», конечно же, неприемлем.
Коротко опишем основные возможности системы Mathematica для работы с объектами линейной алгебры,
В системе Mathematica матрицы можно задать несколькими способами. Прежде всего, матрицу можно задать в виде списка списков, например, {{зг, Ъ, с}, у, z}. {1, 2, 3}}. Можно также воспользоваться функцией Array[m, {к, п}], которая возвращает матрицу размера к х п с элементами т [/', у]. Функция MatrixForm позволяет увидеть матрицу в привычном табличном виде. Эта функция имеет большое количество опций, позволяющих располагать матрицы на экране в различных видах.
Кроме того, можно ввести матрицу в компьютер, воспользовавшись шаблоном матрицы в палитре Classroom Assistant, и через главное меню: Insert->Table/Matrix->New...
Операции сложения и вычитания матриц в системе Mathematica задаются в привычном виде с помощью символов + и - Произведение матриц осуществляется при помощи функции Dot[a, b], а также с помощью точки, в виде а. Ь. Использование знака * вместо знака • (обычная точка) приводит к покомпонентному (неправильному) умножению матриц. Если попытаться перемножить матрицы, для которых эта операция не определена, то Mathematica выдаст сообщение об ошибке. Размерность матрицы можно узнать с помощью функции Dimensions.
Чтобы найти матрицу, транспонированную к данной, необходимо использовать функцию Transpose[m], Для вычисления определителя матрицы существует встроенная функция Det[m], Если нужно вычислить определитель каким-то заданным способом, например приведением к треугольному виду, то это тоже осуществимо. Используя встроенные функции, преподаватель может написать новую функцию, которая производит элементарные преобразования над строками (столбцами) определителя, что позволит усвоить алгоритм его вычисления, не отвлекаясь на арифметический счет. Функция AddRow[A_, n_, m_f k_]:=Module[{S=A}, B[[n]]+=WJ[[m]]; В] прибавляет к строке с номером п матрицы А строку с номером т, умноженную на число к. Аналогично можно задать пользовательскую функцию AddColumn, осуществляющую указанные преобразования над столбцами матрицы. Используемая здесь функция Module является программным средством локализации вспомогательных переменных. Для выделения строк матрицы В используется краткая запись [[...]] функции Part. Для вычисления определителя часто бывает полезной также функция, меняющая местами строки или столбцы матрицы: Change[X_, n, m_]:= Module[{Z=X,
I, S}, {l=Z[[n]], S=ReplacePart[ReplacePart[Z, Z[[m]], n]> li m]Y> 5]- Встроенная функция ReplacePart служит для замены элементов списка. Работу описанных выше функций при вычислении определителя приведением к треугольному виду можно увидеть на рис. 1.
В случае если определитель не равен нулю, вычислить обратную матрицу поможет функция lnverse[m]. Найти обратную матрицу, например, методом элементарных преобразований можно, используя встроенную функцию RowReduce[m], которая строит упрощенную форму матрицы, полученную линейным комбинированием строк, в частности, для невырожденной матрицы результатом будет единичная матрица. Приписываем с помощью функции Join к заданной матрице т единичную матрицу IndentityMatrix соответствующей размерности: ml=Join[m, lndentityMatrix[Dimensions@m], 2]) // MatrixForm. Затем к матрице т1 применяем функцию RowReduce, слева получаем единичную матрицу, справа - искомую обратную матрицу (рис. 2).
/4-3 1 5 ■
1 -2 -2 -3
3-12 0 ''
2 3 2 -8,
Change [Д, 1,2] // MatrixForm
1 -2 -2 -3
4-315
3-120
2 3 2-а
(Д1 = AddRow [%, 2, 1, -4]} // MatrixForm
1 ~г -2 -3
0 5 9 17
3 -1 2 0
2 3 2 -а
(Д2 = AddRow[ді, З, 1, -3]) // MatrixFonn
(ДЗ = AddRow [Д2, 4, 1, -2]) // MatrixForm
1 -2 -2 -З
О 5 9 17
0 5 8 9
0 7 6 -2
(Д4 = AddRow [ДЗ, 3, 2, -1]) // MatrixForm
]]
Д5 = AddRow Д4,
/1-2 -2 -3
0 5 9 17
0 0-1 -а
0 0 33 12В
5 S
Дб = AddRow Д5,
-ТІ)
!! MatrixForm
-2 -2 -З 5 9 17
Q -1 -8 0 0 27
-1*Д6[[1, 1]] *Д6[[2, 2]] *Д6[[3, 3]] *Д6[[4, 4]] 135
У
1
100% *
Рис. 1. Вычисление определителя приведением к треугольному виду
Рис. 2. Вычисление обратной матрицы с помощью элементарных преобразований
Построим обратную матрицу с помощью присоединенной матрицы к матрице т. Будем использовать встроенную функцию Minors[m, к], которая возвращает список всех миноров к-го порядка. Обратим внимание на то, что миноры М в
V
полученном списке распределяются следующим образом: первый внутренний список содержит миноры, получаемые вычеркиванием из матрицы последней строки, а элементы этого списка получаются вычеркиванием столбцов от последнего до первого; затем вычеркиваются предпоследняя строка и столбцы, начиная с последнего и т. д. Для построения присоединенной матрицы нам нужно расположить миноры в другом порядке: Map[Reverse, Minors@m, {1,0}]. Для получения матрицы из алгебраических дополнений необходимо еще дописать знак (- 1)' + / перед каждым минором. Это можно сделать с помощью новой матрицы s, построенной из степеней - - 1:5 = Array[(-l)#1+#2&, {Length@m, Length@m}] (здесь
символ # обозначает место для аргумента, символ & указывает на конец определения функции, Length - возвращает длину списка). Теперь умножим с использованием знака * покомпонентно матрицу, составленную из миноров, на матрицу s. Наконец, чтобы получить присоединенную матрицу, транспонируем полученную матрицу с помощью Transpose (рис. 3).
Для решения систем линейных алгебраических уравнений (СЛАУ) в том случае, когда число уравнений равно числу неизвестных и определитель матрицы системы отличен от нуля, можно применить метод Крамера, доверив Mathematica
вычислить решение системы по формуле
D.
X = —-. Можно решать системы линейных
' D
уравнений и в матричном виде с использованием функций Dot и Inverse или с использованием специальной функции LinearSolve[a, Ь]. Решить систему уравнений методом Гаусса можно с помощью функ-
m = {{1, 2, 3}, {-1, 0, 4}, {-3, 2, б}};
Minors[ m, 2]
{{2, 7, 8}, {8, 15, 6}, {-2, 6, -8}}
ml = Map [Reverse, Minors@m, {0, 1}]
{{-8, 6, - 2}, (6, 15, 8}, {8, 7, 2}}
s = Array [ (-1) {Length@m, Length@m} ]
{{1, -1, 1}, {-1, 1, -1}, {1, -1, 1}}
ml * s
{{-8, -6, -2}, {-6, 15, -8}, {8, -7, 2}} Transpose [4s]
// MatrixForm
Det@m
4 3 4
13 13 13
3 15 7
13 2Ё 26
1 4 1
13 13 13
T
3.
у
1
У
У
100% *
Рис. 3. Вычисление обратной матрицы с помощью присоединенной матрицы
ции RowReduce[m] Составляя простейшие программы, можно проводить исследования СЛАУ (рис. 4).
Для вычисления ранга матрицы применяем функцию MatrixRank. Функция lf[condition, t, f] выполняет роль условного оператора и возвращает t, если результатом вычисления condition будет True, и /, если результат False. Если ранги основной и расширенной матриц системы совпадают, то система уравнений является совместной, иначе - несовместной. Посредством функции Printfexpr] на экран выводится соответствующий результат.
Функции пользователя Add Row и Change, примененные к расширенной матрице произвольной системы линейных уравнений, позволяют поэтапно привести матрицу к ступенчатому виду и тем самым продемонстрировать суть метода Гаусса.
Описанные выше примеры использования системы Mathematica можно использовать при проведении лекций и лабораторных работ по темам: «Определители квадратных матриц», «Обратная матрица», «Исследование и решение СЛАУ».
<
С
CQ
Г
О <
КЧ Н
га w
S
к
н
и
ш
PQ
13 5-3 3
5 5 3 6 5
3 2 7 2 2 ; Ъ .
7 9 11 7 6
9 -3 -7 1 1
rang = MatrixRank [а]
5
(al = Join[a, b, 2]) // Matrixform
rangl = MatrixRank [al] n = Last [Dimensions [a] ]
If [rang == rangl. If [rang == n, Print [ "Система совместна и определена"] Print["Система совместна и не определена"]],
Print["Система не совместна"]]
Система совместна и определена
]J
У
1 3 S -3 3 2
5 5 3 6 5 9
3 2 7 2 2 5
7 Э 11 7 6 1
9 -3 -7 1 1 5
100% *
Рис 4. Исследование СЛАУ
Библиографический список
1. Войтенко Т.Ю. Компьютерный практикум в курсе линейной алгебры // Инновационные процессы в системе образования: кол. монография. Новосибирск: Изд-во НГТУ, 2010. 332 с.
2. Войтенко Т.Ю., Фирер А.В. Роль И КТ в формировании профессиональной компетентности будущего учителя математики при изучении алгебры // Проблемы теории и практики обучения математике: сб. научных работ Международ-
ной научной конференции «63 Герценовские чтения». СПб.: Изд-во РГПУ им. А.И. Герцена, 2010. С. 203-206.
3. Воробьев Е.М. Введение в систему символьных, графических и численных вычислений «Мате-матика-5». М.: ДИАЛОГ-МИФИ, 2005. 368 с.
4. Фридман Г.М., Леора С.Н. Математика & Mathematica: Избранные задачи для избранных студентов. СПб.: Невский Диалект; БХВ-Петербург, 2010. 299 с.