Занятие строится таким образом, что после прослушивания теоретического материала (10 –15 мин.), учащимся предлагается практическое задание, которое выполняется ими за 20 - 30 мин. и корректируется в процессе изучения материала в более сложную задачу по изучаемой теме.
Автор сознательно избегал сложных примеров, будучи убежденными, в том, что гораздо важнее для учащихся понимание алгоритмов предлагаемых задач, приобретение навыков разработки алгоритмов, их программирования и выполнения на компьютере в течение одного занятия. Такой подход к изучению языка программирования позволяет сосредоточить внимание на самом процессе программирования, который в данном случае более важен для изучения языка, чем решение сложной задачи, наверняка трудной большинству учащихся. Такие задачи, по мнению авторов, неоправданно занимают большое количество учебного времени, превращая учителя из инициатора процесса обучения в диктатора.
Занятие 12ч1.doc
Умножение матриц
Занятие 12
1. Урок 1. Умножение матрицы на матрицу.
2. Урок 2. Умножение матрицы на вектор и вектора на матрицу.
3. Урок 3. Практические занятия.
4. Контрольные вопросы и упражнения.
Урок 1. Умножение матрицы на матрицу
Произведение матрицы A на матрицу B определено только тогда, когда число столбцов матрицы A равно
числу строк матрицы B. В результате получается матрица C, у которой столько же строк, сколько их в матрице A, и
столько же столбцов, сколько их в матрице B, т.е.:
A m n * B n k = C m k
Элемент c i j матрицы произведения A * B равен скалярному произведению i й строки A на j й столбец
матрицы B т.е.
c i j = ( a i 1, a i 2, . . . a i n ) * ( b 1 j, b 2 j, . . . b n j ) = a i 1 b 1 j + a i 2 b 2 j + . . . + a i n b n j .
Пример. Найти произведение матриц A m n и B n k .
A =
312
546
, B =
13
21
35
.
В результате получится матрица C размерностью 2 * 2. Вычислим элементы этой матрицы.
c 1 1 = (2, 1, 3) * (3, 1, 5) = 2*3 + 1*1 + 3*5 = 22;
c 1 2 = (2, 1, 3) * (1, 2, 3) = 2*1 + 1*2 + 3*3 = 13;
c 2 1 = (6, 4, 5) * (3, 1, 5) = 6*3 + 4*1 + 5*5 = 47;
c 2 2 = (6, 4, 5) * (1, 2, 3) = 6*1 + 4*2 + 5*3 = 29.
Итак,
C = A * B =
22
47
13
29
.
Проверим на компьютере произведенные вручную расчеты, составив для этого нижеприведенную программу.
Program V1L13P1; {Умножение матрицы на матрицу. Значения элементов задаются в программе явно}
Uses Crt;
Var a,b,c :array[1..10,1..10] of integer; s :integer; i,j,f,ma,na,nb :byte;
{}
begin
ClrScr;
{Явное присвоение значений элементам матриц}
{Размерность матрицы "A" (строки, столбцы)}
{Количество столбцов матрицы "B"}
ma:=2; na:=3;
a[1,1]:= 2; a[1,2]:= 1; a[1,3]:= 3;
a[2,1]:= 6; a[2,2]:= 4; a[2,3]:= 5;
nb:=2;
b[1,1]:= 3; b[1,2]:= 1;
b[2,1]:= 1; b[2,2]:= 2;
b[3,1]:= 5; b[3,2]:= 3;
{Печать матрицы "A" на экране дисплея}
WriteLn('Исходная матрица "A"');
for i:=1 to ma do
begin
for j:=1 to na do
73 Умножение матрицы на матрицу. Умножение матрицы на вектор и вектора на матрицу. Практические занятия
Write(a[i,j]:4);
WriteLn
end;
{Печать матрицы "B" на экране дисплея}
WriteLn('Исходная матрица "B"');
for i:=1 to na do
begin
for j:=1 to nb do
Write(b[i,j]:4);
{Количество строк "B" равно количеству столбцов матрицы "A"
по определению операции умножения}
WriteLn
end;
{}
WriteLn('Матрица "c" произведения исходных матриц "a" и "b"');
for i:=1 to ma do
for j:=1 to nb do
begin
c[i,j]:=0;
for f:=1 to na do
c[i,j]:=c[i,j]+a[i,f]*b[f,j];
{ma количество строк матрицы "A"}
{na количество столбцов матрицы "B"}
{Начальное значение суммы произведений}
{na количество столбцов матрицы "A"}
{Формирование суммы произведений}
end;
{}
for i:=1 to ma do
begin
for j:=1 to nb do
Write(c[i,j]:4);
WriteLn
end;
ReadKey
end.
{Внешний цикл печати результата вычислений}
{Внутренний цикл печати результата вычислений}
Фрагмент программы (алгоритм) умножения матриц выделен в программе курсивом.
Для решения задачи с другими размерностями и значениями элементов матриц требуется корректировка
программы и это является ее недостатком. Нижеприведенная программа является универсальной, потому что
размерности и значения элементов матриц вводятся с клавиатуры.
Program V1L13P2; {Умножение матрицы на матрицу. Значения элементов матриц вводятся с
клавиатуры}
Uses Crt;
Var a,b,c :array[1..10,1..10] of integer; s :integer; i,j,f,ma,na,nb :byte;
{}
begin
ClrScr;
WriteLn('Исходная матрица "A"');
Write('Введи количество строк исходной матрицы "A" '); ReadLn(ma);
Write('Введи количество столбцов исходной матрицы "A" '); ReadLn(na);
{}
for i:=1 to ma do
for j:=1 to na do Read(a[i,j]);
{}
WriteLn('Исходная матрица "B"');
Write('Введи количество столбцов исходной матрицы "B" ');
ReadLn(nb);
for i:=1 to na do
for j:=1 to nb do Read(b[i,j]);
{}
WriteLn('Матрица "C" произведения исходных матриц "A" и "B"');
for i:=1 to ma do
for j:=1 to nb do
begin
c[i,j]:=0;
for f:=1 to na do
{Обнуление предыдущих значений суммы произведений}
c[i,j]:=c[i,j]+a[i,f]*b[f,j];
{Сумма произведений}
{Внешний цикл печати результата}
end;
for i:=1 to ma do
begin
74 for j:=1 to nb do Write(c[i,j]:5);
{Внутренний цикл печати результата}
WriteLn
end;
ReadKey
end.
Результат работы программы
Исходная матрица "A"
2 1 3
6 4 5
Исходная матрица "B"
3 1
1 2
3 3
Матрица "C" произведения исходных матриц "A" и "B"
22 13
47 29
Физически значения элементов матриц можно вводить с клавиатуры двумя способами.
1. Вводить значения элементов матриц последовательно слева направо, заканчивая ввод каждого
элемента клавишей ' Enter ' (перевод строки).
2. Вводить значения элементов по строкам, разделяя каждое значение клавишей "Пробел" (или
несколько пробелов), заканчивая ввод строки клавишей "Enter".
В первом случае значения элементов на экране дисплея будут напечатаны в столбик, что не очень удобно для
чтения, во втором по строкам. Для того чтобы исключить возможные при вводе значений элементов матриц ошибки,
полезно написать значения элементов этих матриц на бумаге, а затем вводить их с клавиатуры в память компьютера.
В качестве упражнений попробуйте найти произведения всевозможных пар матриц.
Урок 2. Умножение матрицы на вектор и вектора на матрицу
2.1. Умножение матрицы на вектор.
2.2. Умножение вектора на матрицу
Такое действие возможно, если имеется некоторая матрица A m n и некоторый вектор B m , количество
элементов которого равно количеству строк матрицы. В результате получаем вектор C m , первый элемент которого
есть сумма произведений элементов первой строки массива A m n на элементы массива B m, второй элемент
сумма произведений элементов второй строки массива A m n на элементы массива B m и т.д.
По определению матрицей называется таблица, где каждый элемент может быть указан номером строки и
номером столбца (см. занятие 11). Частными случаями являются матрица строка, где имеет место только одна
строка матрицы и матрица столбец, где имеет место только один столбец матрицы. Исходя из этого, правило
умножения матриц можно применить и для данных случаев.
2.1. Умножение матрицы на вектор
В результате этого действия будем иметь
матрицу столбец, у которого количество строк равно
количеству строк исходной матрицы, т.е.:
A m n * B n = C m .
Например,
573
401
*
1
2
3
=
32
13
, т.е. 3 * 1 + 7 * 2 + 5 * 3 = 3 + 14 + 15 = 32,
1 * 1 + 0 * 2 + 4 * 3 = 1 + 0 + 12 = 13.
2.2. Умножение вектора на матрицу
75 Умножение матрицы на матрицу. Умножение матрицы на вектор и вектора на матрицу. Практические занятия
В результате будем иметь матрицу строку, у которой количество столбцов равно количеству столбцов
исходной матрицы, т.е.:
A n * B n k = C k .
Например.
321
*
31
70
54
=
13
32
, т.е. 1 * 1 + 2 * 0 + 3 * 4 = 1 + 0 + 12 = 13,
1 * 3 + 2 * 7 + 3 * 5 = 3 + 14 + 15 = 32.
Используйте программу vv44 для проверки вышеприведенных примеров на компьютере и решения других
примеров с различными размерностями векторов и матриц.
Урок 3. Практические занятия
На практических занятиях предлагается выполнить следующие работы исследования, используя программу
vv 44.
1. Умножение вектора на вектор.
2. Умножение квадратных матриц.
3. Умножение треугольных матриц.
4. Умножение треугольной матрицы на вектор.
5. Умножение вектора на треугольную матрицу.
6. Умножение симметричных матриц.
Результатами практических работ должны быть выводы о возможности таких действий вообще и размерности
получаемых в результате матриц.
Например. Умножить две верхнетреугольные матрицы:
321
650
800
*
321
650
800
=
1
0
0
12
25
0
39
78
64
Вывод. В результате произведенного действия получили верхнетреугольную матрицу, главная диагональ
которой есть произведение главных диагоналей исходных матриц.
Контрольные вопросы и упражнения
1. Напишите словесный алгоритм умножения вектора на вектор. Приведите расчетный пример.
2. Напишите словесный алгоритм умножения матрицы на вектор, вектора на матрицу. Приведите расчетные
примеры.
3. Напишите словесный алгоритм умножения матрицы на матрицу, Приведите расчетный пример.
4. Используя программу vv45, возведите в степень 3 любую верхнетреугольную матрицу.
Для заметок, вопросов и ответов
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
76 ______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
______________________________________________________________________________________________________
77
Умножение матриц
Умножение матриц
Умножение матриц
Умножение матриц
Умножение матриц
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.