Преобразование матриц
Оценка 4.8

Преобразование матриц

Оценка 4.8
Рабочие тетради
doc
информатика +1
10 кл—11 кл +1
25.04.2017
Преобразование  матриц
Занятие строится таким образом, что после прослушивания теоретического материала (10 –15 мин.), учащимся предлагается практическое задание, которое выполняется ими за 20 - 30 мин. и корректируется в процессе изучения материала в более сложную задачу по изучаемой теме. Автор сознательно избегал сложных примеров, будучи убежденными, в том, что гораздо важнее для учащихся понимание алгоритмов предлагаемых задач, приобретение навыков разработки алгоритмов, их программирования и выполнения на компьютере в течение одного занятия. Такой подход к изучению языка программирования позволяет сосредоточить внимание на самом процессе программирования, который в данном случае более важен для изучения языка, чем решение сложной задачи, наверняка трудной большинству учащихся. Такие задачи, по мнению авторов, неоправданно занимают большое количество учебного времени, превращая учителя из инициатора процесса обучения в диктатора.
Занятие 11ч1.doc
Преобразование  матриц            Занятие 11 1. Урок 1.  Элементарные  преобразования  матриц.  Перестановка  двух   строк (столбцов). 2. Урок 2.  Элементарные  преобразования  матриц.    Добавление  к одной  строке другой,  умноженной   на         любое число. 3. Урок 3.  Типовые задачи  преобразования  двумерных массивов  данных. 4. Контрольные вопросы и упражнения. Урок 1.  Элементарные  преобразования   матриц.  Перестановка двух строк (столбцов) 1.1. Перестановка двух строк. 1.2. Перестановка двух столбцов. Данная задача аналогична задаче замены значений двух переменных. Существуют два алгоритма решения этой задачи. Первый алгоритм основан на введении третьей промежуточной переменной, которой присваивается значение одной из данных переменных.  Второй алгоритм позволяет обходиться без промежуточной переменной. Вспомним эти алгоритмы.             Второй алгоритм             Пусть              a:=n;{Начальное значение}              b:=m;{Начальное значение} Первый алгоритм Пусть a:=n;{Начальное значение} b:=m;{Начальное значение} k:=a;{Промежуточная переменная}          a:=a­b;{n ­ m} a:=b; b:=k; Результат a:=m; b:=n;              b:=a+b;{n ­ m + m}              a:=b­a;{n ­ n + m}              Результат              a:=m;              b:=n;   1.1.  Перестановка двух строк (столбцов) Такая   задача   существует   на   практике,   когда   необходимо   отсортировать   таблицу   по   некоторому   ключу, которым может быть значение элемента столбца. Например, сортировка в порядке возрастания (убывания) номеров строк матрицы по значению первого столбца строк. Рассмотрим  перестановку двух строк  на примере следующей задачи. Задача.  Дана некоторая матрица  A m, n (F),  состоящая из m строк и n столбцов, значения элементов которой случайные целые  положительные числа лежащие в диапазоне  (2,  8).  Поменять местами, указанные  с  клавиатуры  две строки исходной матрицы. Постановка задачи. 1. Количество строк и столбцов вводить с клавиатуры, отвечая на сообщения: "Введи количество строк", "Введи количество столбцов". 2. Исходную  матрицу  вывести на экран  дисплея  с сообщением  "Исходная  матрица  случ.  целых  чисел  в диапазоне (2, 8)". 3. Номера, меняемых строк вводить с клавиатуры, отвечая на сообщения: "Поменять местами строку",  "На строку". 4. Преобразованную матрицу вывести на экран с сообщением  "Преобразованная матрица" {Определение двумерного массива} {Определение одномерного массива} Program V1L12P1; {Перестановка двух строк матрицы} Uses Crt; Var a :array[1..10,1..10] of integer;     k :array[1..10] of integer; c,i,j,m,n,f,p :integer; {} begin ClrScr; Randomize; Write('Введи  количество  строк  матрицы '); Read(m); Write('Введи количество столбцов матрицы '); Read(n);     {Формирование исходного массива} WriteLn('Исходная матрица случайных целых чисел в диапазоне (2, 8)'); for i:=1 to m do 67 Элементарные преобразования матриц. Перестановка двух строк  (столбцов).  Добавление к одной строке другой. Типовые задачи begin for j:=1 to n do begin {Фильтр диапазона случайных чисел} repeat c:=Random(9); until(c>=2)and(c<9); a[i,j]:=c; Write(a[i,j]:4); end; {Формирование значений элементов матрицы} WriteLn end; {} Write('Поменять местами строку '); Read(f); Write('На строку '); Read(p); {Ввод номера первой заменяемой строки} {Ввод номера второй заменяемой строки} {Цикл формирования  промежуточного  массива  первой  указанной строки матрицы и запись второй указанной  строки на место первой} for i:=1 to m do for j:=1 to n do if i=f then begin k[j]:=a[i,j]; a[i,j]:=a[p,j] {Промежуточный массив указанной строки матрицы}  Запись второй указанной строки на место строки,  указанной первой}     end; {Цикл замены второй указанной строки} WriteLn('Преобразованаая матрица'); for i:=1 to m do begin for j:=1 to n do begin if i=p then a[i,j]:=k[j]; {Замена второй указанной строки} Write(a[i,j]:4) {Печать преобразованного массива} end; WriteLn; end; {} ReadKey end. Возможный результат работы программы Введи количество  строк   матрицы  3 Введи количество столбцов матрицы  4 Исходная матрица случайных чисел в диапазоне (2, 8)    5   4   8   3 2   6   5    8    5 4   2   5 Поменять местами строку  1 На строку  3 Преобразованная матрица    5    8    5 4   2   5 2   6   5 4   8   3 Аналогичная задача с заменой пары столбцов, номера которых указываются с клавиатуры. Program V1L12P2; {Перестановка двух столбцов матрицы} Uses Crt; Var a :array[1..10,1..10] of integer;     k :array[1..10] of integer; c,i,j,m,n,f,p :integer; begin ClrScr; Randomize; Write('Введи  количество  строк  матрицы '); 68 Read(m); Write('Введи количество столбцов матрицы '); Read(n);     {Формирование исходного массива} WriteLn('Исходная матрица случайных целых чисел в диапазоне (2, 8)'); for i:=1 to m do begin for j:=1 to n do begin repeat c:=Random(9); until(c>=2)and(c<9); a[i,j]:=c; Write(a[i,j]:4); end; WriteLn end; {} Write('Поменять местами столбец '); Read(f); Write('на столбец '); Read(p); for i:=1 to m do for j:=1 to n do if j=f then begin k[i]:=a[i,j]; a[i,j]:=a[i,p] end; {} WriteLn('Преобразованная матрица'); for i:=1 to m do begin for j:=1 to n do begin if j=p then a[i,j]:=k[i]; Write(a[i,j]:4) end; WriteLn; end; {} ReadKey end. Возможный результат работы программы Введи  количество   строк    матрицы  3 Введи количество столбцов матрицы  4 Исходная матрица случайных чисел в диапазоне (2, 8)    7   2   6   2    3   3   4   7    2   8   3   6 Поменять местами столбец  1 на столбец  3 Преобразованная матрица    6   2   7   2    4   3   3   7    3   8   2   6 Сравните  программы  V1L12P1,  V1L12P2  и  попробуйте объяснить разницу в них.   Урок 2. Элементарные  преобразования  матриц.    Добавление к одной  строке   другой,   умноженной  на  любое               число 2.1. Добавление к одной строке другой, умноженной на любое число. 2.1. Добавление одной строки к другой, умноженной на любое число 69 Элементарные преобразования матриц. Перестановка двух строк  (столбцов).  Добавление к одной строке другой. Типовые задачи Эту   операцию   следует   понимать   как   сложение   с   записью   результата   в   одну   из   слагаемых   строк.   Данное преобразование, как и  рассмотренные примеры выше, применяется в вычислительной математике при решении систем линейных  уравнений. Рассмотрим   это   преобразование   на   примере  метода   Гаусса  приведения   матрицы   к   упрощенному   виду. Алгоритм этого метода  состоит из следующих  шагов: ­ ­ ­ выбирается одна из ненулевых не рассмотренных ранее строк; в выбранной строке выбирается  ненулевой элемент, после чего значения элементов выбранной строки делятся на выбранный элемент (или умножаются на элемент, обратный выбранному элементу); добавляя к остальным строкам выбранную строку, умноженную на подходящее число, добиваются того, что все элементы столбца матрицы с преобразованной строкой, кроме выбранного элемента столбца этой строки, становятся равными нулю. Задача. Дана некоторая матрица  A m, n (F),  состоящая из m строк и n столбцов, значения элементов которой случайные целые   положительные числа лежащие в диапазоне   (2,   8).   Привести матрицу к упрощенному виду по методу Гаусса.  Постановка задачи. 1. Количество  строк и столбцов вводить с клавиатуры, отвечая  на сообщения: "Введи количество  строк матрицы", "Введи количество столбцов матрицы". 2. Исходную матрицу вывести на экран дисплея с сообщением "Исходная матрица случайных целых чисел в диапазоне (2, 8)". 3. Номер строки и номер элемента столбца вводить с клавиатуры, отвечая на сообщения: "Выберите строку", "Выберите элемент в строке". 4. Преобразованную матрицу вывести на экран с сообщением "Преобразованная матрица" Program V1L12P3; {Преобразование матрицы методом Гаусса} Uses Crt; Var a :array[1..10,1..10] of real; b :array[1..10] of real;     k :real; c,i,j,m,n,f,p,z :byte; {} begin ClrScr; Randomize; Write('Введи  количество  строк  матрицы '); Read(m); Write('Введи количество столбцов матрицы '); Read(n);     {Формирование исходного массива} WriteLn('Исходная матрица случ. целых чисел в диапазоне (2, 8)'); for i:=1 to m do begin for j:=1 to n do begin      {Цикл формирования исходной матрицы} repeat  {Цикл пока случайное число не попадет в указанный диапазон} c:=Random(9); until(c>=2)and(c<9);     {Логическое условие попадания числа в диапазон} a[i,j]:=c; Write(a[i,j]:8:2); end; WriteLn end; {} Write('Выберите строку                   '); Read(f); Write('Выберите элемент в строке         '); Read(p); k:=a[f,p]; WriteLn('Преобразование выбранной строки'); for i:=1 to m do begin  {Присвоение переменной значения выбранного элемента} for j:=1 to n do begin if i=f then a[i,j]:=a[i,j]/k; {Логическое условие деления элементов строки} Write(a[i,j]:8:2);            {Печать преобразованной матрицы} end; WriteLn end; for i:=1 to m do begin 70       {Перевод строки}  {Цикл преобразования строк матрицы} for j:=1 to n do if i<>f then b[j]:=a[f,j]*(­a[i,p])+a[i,j]; for z:=1 to n do {Формирование вектора 'b'} if i<>f then a[i,z]:=b[z]; {Замена строк матрицы} end;     {Печать преобразованного массива} WriteLn('Преобразованная матрица'); for i:=1 to m do begin for j:=1 to n do Write(a[i,j]:8:2); WriteLn; end; {} ReadKey end. Возможный результат работы программы  3.00  6.00  3.00 Введи количество  строк   матрицы  3 Введи количество столбцов матрицы  4 Исходная матрица случайных чисел в диапазоне (2, 8)     3.00    2.00     5.00    8.00     2.00    4.00 Выберите строку                    2 Выберите элемент в строке          3 Преобразование выбранной строки  3.00     3.00    2.00  2.00 {Произведено деление значений элементов строки на 3}     1.67    2.67     2.00    4.00  3.00 Преобразованная матрица     0.33   ­3.33     1.67    2.67    ­4.67   ­6.67 ­1.00  2.00 {В столбце значения 0, кроме выбранного ранее и деленного на} ­5.00 {самого себя, т.е. 1} 2.00 3.00 4.00 2.00 1.00 4.00 0.00 1.00 0.00 Урок 3. Типовые задачи преобразования двумерных массивов данных 3.1. Преобразования элементов двумерного массива по логическим условиям. 3.1. Преобразования элементов двумерного  массива  по  логическим условиям Такая   задача   предполагает   просмотр   и   нахождение   значения   элемента   массива,   по   какому   бы   либо логическому условию и преобразование его. Покажем это преобразование  на нижеследующем примере. Задача.  Дан некоторый двумерный массив, состоящий из  m  строк и  n  столбцов целых чисел, лежащих в диапазоне (­7, 5).  Исключить из массива отрицательные значения элементов, заменяя их  числом 99. Постановка задачи. Значения строк и столбцов массива данных вводить с клавиатуры. 1. 2. Массив данных получить генерацией случайных чисел с распечаткой его на экране дисплея. 3. Результат решения задачи выводить на экран дисплея с сообщением "Преобразованный массив". Program V1L12P4; {Исключение отрицательных значений элементов матрицы} Uses Crt; Var a:array[1..10,1..10] of integer; i,j,m,n,c,d :integer; {} begin ClrScr; Randomize; Write('Введи  количество   строк  '); Read(m); Write('Введи количество столбцов  '); Read(n); WriteLn; {} WriteLn('Массив случайных целых чисел в диапазоне (­7, 5):'); for i:=1 to m do begin for j:=1 to n do begin c:=Random(5); d:=Random(7); a[i,j]:=c­d; 71 Элементарные преобразования матриц. Перестановка двух строк  (столбцов).  Добавление к одной строке другой. Типовые задачи Write(a[i,j]:4); end; WriteLn end; WriteLn('Преобразованный массив'); for i:=1 to m do begin for j:=1 to n do begin if a[i,j]<0 then a[i,j]:=99;  {Логич. усл. и преобразование} Write(a[i,j]:4) end; WriteLn end; ReadKey end. Возможный результат работы программы Введи  количество строк   матрицы  3 Введи количество столбцов матрицы  4 Массив случайных целых чисел в диапазоне (­7, 5)    3   2   0  ­3   ­4   1  ­6   0    0   1  ­1   3 Преобразованный массив   99   2   0  99   99   1  99   0    0   1  99   3 Для решения задач контрольных вопросов и упражнений используйте программы или фрагменты программ данного занятия. Контрольные вопросы и упражнения 1. Перечислите элементарные преобразования строк и столбцов матрицы. 2. Перечислите элементарные преобразования строк и столбцов, используемые при приведении матрицы к упрощенному виду по методу Гаусса. 3. Даны натуральные числа   m    и   n.   Найти сумму элементов каждой строки, записать  в массив    S  и напечатать. Определить и напечатать значение максимального элемента массива S. 4. Даны натуральные числа  m  и  n,  действительная матрица A размера m * n. Найти и напечатать значения и индексы максимального и минимального элементов матрицы. 5. Даны   натуральные   числа    m    и   n,     действительная   матрица  A  размера  m  *  n.  Найти   произведение элементов   каждого   столбца,   записать   в   массив  P  и   напечатать.   Определить   и   напечатать   значение минимального элемента первого столбца. 6. Дана  матрица  A  целых   положительных  чисел,   преобразовать  матрицу,  используя  часть   метода  Гаусса таким образом, чтобы в выбранном столбце матрицы оказались нули. 7. Дана матрица A целых положительных чисел. Повернуть матрицу относительно нижнего левого элемента на 180 градусов. 8. Дана матрица  A  целых положительных чисел. Подсчитать количество одинаковых значений элементов матрицы. 9. Дана   матрица  A  положительных   и   отрицательных   действительных   чисел.   Сформировать   массив  B  из значений главной диагонали исходной матрицы. 10. Даны две матрицы  A  и  B, причем матрица  B  состоит только из нулей и единиц. Сформировать третью матрицу  C, состоящую из нулей и элементов матрицы  A, которым соответствуют единичные элементы матрицы B.  Для заметок, вопросов и ответов ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ 72 ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ ______________________________________________________________________________________________________ 73

Преобразование матриц

Преобразование  матриц

Преобразование матриц

Преобразование  матриц

Преобразование матриц

Преобразование  матриц

Преобразование матриц

Преобразование  матриц

Преобразование матриц

Преобразование  матриц

Преобразование матриц

Преобразование  матриц

Преобразование матриц

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