Лекция 7. Матрицы. Параметрический цикл (часть 1) (Воробьева И.А. «Информатика. Язык Питон» (2016))
Описание файла
Файл "Лекция 7. Матрицы. Параметрический цикл (часть 1)" внутри архива находится в папке "Воробьева И.А. «Информатика. Язык Питон» (2016)". PDF-файл из архива "Воробьева И.А. «Информатика. Язык Питон» (2016)", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
1Воробьева И.А. «Информатика. Язык Питон»Массивы (продолжение-1)Одномерные массивы и матрицы. Простейшие алгоритмы в массивах: поиск,экстремумы, накопление сумм и произведений. Просмотр массива: полностью,по частям, с досрочным выходом.5.3. Матрицы и вложенный параметрический циклВложенный параметрический цикл встречается довольно частопри работе с различными двумерными структурами, например сдвумерными массивами (матрицами):for <cчетчик1> in <последовательность1> :<операции>for <cчетчик2> in <последовательность2> :<операция 1><операция 2>…# теловнутреннегоцикла 2# теловнешнегоцикла 1<операция M># внутренний цикл 2 окончен<операции># внешний цикл 1 оконченЧисло вложений не ограничивается иначе, чем соображениямиразумности кода.print(‘i j’)for i in range(2):for j in range(3):print(i, ‘,’ , j)на экране увидим i j0, 00, 10, 21, 01, 11, 22Воробьева И.А.
«Информатика. Язык Питон»Его изображение в блок-схемах выглядит следующим образом:началоi=0; n-1; ±шагоперация 1j=0; m-1; ±шагоперация 1…операция Mоперация 2…операция NконецМатрицей часто называют двумерный массив, как правило,числовой. На рисунке 5.3. показано схематически, как располагаютсяэлементы статических одномерных и двумерных массивов в памятикомпьютера. Обратите внимание, что число однотипных элементов вовсех трех массивах, а значит и занимаемая ими память, одинаково.адрес10200224МАССИВ_(6)3546501302410511521622612МАССИВ_(3,2)адрес13МАССИВ_(2,3)адрес1100201310411Рисунок 5.3. Схематический пример размещения в памяти компьютера одномерного массиваиз 6 элементов, двумерного размерности (2, 3) и двумерного размерности (3, 2).
Индексация3Воробьева И.А. «Информатика. Язык Питон»указана в соответствии с принятой в Python.Ниже показано, как массив и матрицы будут выглядеть впривычной математической форме. Вместо элементов написаныиндексы с поправкой на индексацию, принятую в Python. Как правило,в матрицах: первый индекс – это номер строки, а второй индекс – этономер столбца.Бывает полезно уметь вычислять связь между порядковым номером ( )элемента в одномерном представлении матрицы в памяти (как если бымы вычисляли номер элемента слева направо, сверху вниз) и егоиндексами в матричном представлении. Пусть – число строк, - числостолбцов, а и – индексы строк и столбцов, тогда.Действительно:− в массиве_(2,3) элемент [1,1] имеет номер− в массиве_(3,2) элемент [2,0] имеет номер;.4Воробьева И.А.
«Информатика. Язык Питон»Примеры объявлений матриц# РАЗДЕЛ КОНСТАНТN=10M=9SIZE=3# РАЗДЕЛ ПЕРЕМЕННЫХ# изменяемая матрица из (N*M) вещественных чисел. После создания всеэлементы равны нулюDub = [0.0]*N # сначала укажем число N строкfor i in range(N): Dub[i]=[0.0]*M # а в каждой строке число M столбцов# изменяемая квадратная матрица из (3,3) целых чисел. После создания всеэлементы равны «10»Numb = [10]*SIZE # сначала укажем число SIZE строкfor i in range(SIZE):Numb[i]=[10]*SIZE # а в каждой строке число SIZE столбцов# изменяемая матрица из (25, 10) строковых переменных. После создания всеэлементы равны «пустой строке»Kod = [‘’]*25for i in range(25): Kod[i]=[‘’]*10# изменяемая матрица из (N,M) КОМПЛЕКСНЫХ чисел. Послесоздания все элементы равны «0+0j» нулю равны и действительнаяи мнимая части числаC = [0+0j]*Nfor i in range(N): C[i]=[0+0j]*M# ---------------- явное объявление матриц-переменных -----------------Points = [ [0.0, -1.0, 1.5],# 1-я строка[0.0, 75.2, -1.5] ]# 2-я строка# объявлена матрица (2, 3) из вещественных чиселPnt = [ [0 + 2j,-j, 1.5-4j],[ 0j, 75.2+2j, -1.5+0j] ]# 1-я строка# 2-я строка# объявлена матрица (2, 3) из КОМПЛЕКСНЫХ чисел5Воробьева И.А.
«Информатика. Язык Питон»# ---------------- объявление матриц-констант ----------------------Kol = ( (0, 1, 5, -5, 2),# 1-я строка(0, 0, 0, 0, 0),# 2-я строка(-10, 1, 3, -5, -2) )# 3-я строка# объявлена целочисленная матрица (3, 5)Name = ( (‘Николай’, ‘Мария’, ‘Иосиф’), (‘Никита’, ‘Михаил’, ‘Инга’) )# объявлена матрица (2, 3) из строкДоступ к элементам матрицы осуществляется по имени с указаниеминдексов строки и столбца, на пересечении которых расположенэлемент, индексы нумеруются с нуля (см. рис.5.3):ИМЯ [индекс_строки][индекс_столбца]ПримерыA=Dub[2][ 1]# вещественная переменная A равна значениюэлемента из 3-й строки и 2-го столбца матрицы DubPoints[0][0]=Pints[1][2]# значение элемента из 1-й строки и1-го столбца, заменяется значением элемента из2-ой строки и 3-го столбца, т.е.
теперь они будутравны по значению числу «-1.5»Kod[24][9]=’Елена’С[1][2]=35.7 + 1.5j# запись строки в последний элементматрицы Kod# запись комплексного числав последнюю ячейку матрицы СПусть i=5 и j=2, тогдаprint(Dub[i][j])# вывод на экран вещественного значенияэлемента из 6-й строки и 3-го столбца матрицы Dubprint(Dub[i]) # вывод на экран 6-й строки матрицы Dub полностьюDub[i][j]=float(input(‘ Dub[i, j]: ’) ) # ввод c клавиатуры вещественногозначения в 6-ю строку и 3-й столбец матрицы Dub6Воробьева И.А.
«Информатика. Язык Питон»Типичные операции с матрицами ввод матрицы; вывод матрицы; присвоение матриц; обмен содержимым между двумя элементами матрицы; поиск MAX (MIN) элемента в матрице; поиск заданного элемента матрицы;операции с элементами, расположенными над (или под) главнойдиагональю квадратной матрицы.Пример ввода пямоугольной матрцы (n, m) с клавиатуры:ЕслиTmp(n,m) – матрица из строк илиTmp(n,m) – матрица из целых чисел илиTmp(n,m) – матрица из вещественных чисел илиTmp(n,m) – матрица из КОМПЛЕКСНЫХ чиселТогдаfor i in (n) : # цикл по строкам, i=0,1,….n-1for j in (m) : # считываем i-строку по j=0,1,….m-1 столбцамTmp[i][ j]=input (‘ввод: ‘) # для строковых типов илиTmp[i][j]=int(input (‘ввод: ‘)) # для целых типов илиTmp[i][ j]=float(input (‘ввод: ‘)) # для вещественных типов илиTmp[i][ j]=complex(input (‘ввод: ‘)) # для КОМПЛЕКСНЫХ типов# внутренний цикл закончен переходим на следующую строку# внешний цикл закончен ввод завершен7Воробьева И.А.
«Информатика. Язык Питон»Пример простого вывода пямоугольной матрцы (n, m) на экран:способ 1for i in (n) : # цикл по строкам, i=0,1,….n-1for j in (m) :# вывод i-строкиprint(Tmp[i, j], end=’, ‘) # параметр end=’, ‘ подавляет переводкаретки и заменяет его на два символа «,» и «пробел»print() # переход на следующую строку на экранеДля n=2, m=3 получим:20, -3, 0,-2, -3, 1,Если бы мы не использовали параметр end=’, ‘ в функции print(), тоувидели бы следующее вместо удобного матричного вида:20-30-2-31способ 2 (используем способность Python выводить массивы, но приэтом стоит помнить, что мы будем лишены возможностиформатировать вывод, во-первых, и такую возможность дает далеко невсякий язык, во-вторых)for i in (n) : # цикл по строкам, i=0,1,….n-1print(Tmp[i]) # вывод i-строки целикомДля n=2, m=3 получим:[20, -3, 0][-2, -3, 1]способ 3(используем способность Python выводить любые массивы,при этом внешний вид становится крайне неудобный, зато можнобыстро посмотреть содержимое массива)print(Tmp)# вывод матрицы полностьюДля n=2, m=3 получим:[[20, -3, 0], [-2, -3, 1]]8Воробьева И.А.
«Информатика. Язык Питон»Пример блок-схемы вложенного параметрического циклаввода/вывода прямоугольной матрицы.началоi=0; n-1; +1j=0; m-1; +1ввод Tmp[i][j]конецЗамечание 5.2. Обратите внимание, что нарушение диапазона (выходза границы индексации) является самой распространенной ошибкойпри работе с массивами.5.4. Поиск в массивах и матрицахАлгоритм поиска MAX (MIN) элемента в массиве (матрице)примитивен. Считаем MAX (MIN) элементом – первый элементмассива. Начинаем сравнивать с ним последовательно всеэлементы, начиная со второго 1 .
Если очередной элемент строгобольше (меньше) максимального (минимального), тогда этотэлемент становится MAX (MIN).1В матрицах придется начинать поиск сравнение с первого элемента из-за использования «двойного» параметрического цикла. В противном случае из поиска может оказаться вычеркнута целая строка или целый столбец. Подумайте сами почему.9Воробьева И.А. «Информатика.
Язык Питон»В массиве может быть несколько элементов (хоть все элементымассива) с одинаковыми значениями. В этом случае нужно определитьточно в задаче – ищем мы первый или последний MAX (MIN). Если присравнении мы используем строгие условия (“>” или “<”), тогда найдемпервый MAX (MIN) из одинаковых экстремумов, а если мы используемнестрогие условия (“≥” или “≤”), то найдем последние MAX (MIN) изодинаковых экстремумов.Пример. Поиск первого максимального элемента и его номерав массиве.Дан целочисленный массив с числом элементовпервый максимальный элементи его номер.
Ищем в нем.Считаем, что массив уже заполнен любым известным способом.!началоБлок-схема (алгоритм)решения задачи.Dmax=D[0]; Nmax=0Forдаi=1; kol-1; +1if D[i] > DmaxнетDmax=D[i]; Nmax=iконец10Воробьева И.А. «Информатика. Язык Питон»Алгоритм поиска MAX (MIN) с условиемЗадача 5.1. Найти последний минимальный элементи егономерсреди положительных элементов целочисленногомассиваразмерности. Альтернатива: если положительныхэлементов в нет, то сообщить об этом.Метод. Для обозначения «найдены или нет» положительныеэлементы введем логическую переменную=True, то положительные элементы есть, еслито положительные элементы не найдены.o Начальное значениепока нет);.Если=False,= False (положительных элементовo Начинаем перебор всех элементов , начиная с первого(). Если очередной элемент больше нуля, то проверим. Если= False, значит найден первый положительный элемент и он же пока минимальный.