![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Некоторые задачи работы с матрицамиСодержание книги
Поиск на нашем сайте
При всех операциях с матрицами необходимо внимательно следить за индексами элементов, над которыми выполняются те или иные действия, а для этого всегда следует составлять схему индексирования элементов матриц, аналогичную приведенной в разделе 2.4. Рассмотрим несколько соответствующих примеров. Пример 6.1. В матрице A размером 10? 8, вычислить суммы элементов всех строк с четными номерами и произведения элементов всех столбцов с нечетными номерами. Для уяснения смысла задачи составим схему индексирования элементов матрицы: Из приведенной схемы легко усматривается, что индексы строк i изменяются в пределах от 1 до 10, индексы столбцов j – от 1 до 8. Очевидно также, что если искомые строковые суммы обозначить S то они образуют одномерный массив (вектор) Si, где i=2,4,6,8,10. Аналогично столбцовые произведения P образуют вектор Pj, где j=1,3,5,7. С учетом этих обозначений решение задачи может быть выполнено следующей программой (в которой пробный вариант исходной матрицы А формируется с помощью функции Random и выводится): program Matr1; Type mat= array [1..10,1..8] of real; vec=[1..10] of real; Var a:mat; s,p:vec; i,j:integer; Begin writeln('Исходная матрица'); for i:=1 to 10 do Begin for j:=1 to 8 do Begin a[i,j]:=19.9*Random; write(a[i,j]:6:2); end; writeln; end; writeln('Строчные суммы'); i:=2; while (i<=10) do Begin s[i]:=0; for j:=1 to 8 do s[i]:=s[i]+a[i,j]; write(s[i]:10:3); i:=i+2; end; writeln('Столбцовые произведения'); j:=1; while (j<=7) do Begin p[j]:=1; for i:=1 to 10 do p[j]:=p[j]*a[i,j]; writeln(p[j]:15:3); j:=j+2; end; end. Пример 6.2. В некоторых задачах математики приходится вычислять сумму элементов квадратной матрицы, стоящих на ее главной диагонали. Главной называется диагональ, идущая из левого верхнего в правый нижний угол. Такая сумма носит название следа матрицы. Пусть заданная матрица А является квадратной с размером 8? 8. Тогда если обозначить искомую сумму Sled и обратить внимание на то, что у элементов главной диагонали оба индекса одинаковы, т.е. i=j, задача вычисления указанной суммы решится двумя строками: writeln('След матрицы'); sled:=0; for i:=1 to 8 do Sled:=Sled+a[i,i]; writeln('Sled=',Sled); Пример 6.3. В матрице А произвольного размера m? n найти и вывести (строкой) строку с наибольшим произведением, а также (вывести столбцом) столбец с наименьшей суммой всех своих элементов. Обозначим строковые произведения pi (i=1..m), наибольшее из них Pmax, а его порядковый номер k. Аналогично: столбцовые суммы sj (j=1..n), наименьшая из них Smin, а ее индекс l. Задача, очевидно, сводится к вычислению элементов массивов p и s, нахождению в первом из них наибольшего элемента, а во втором наименьшего с одновременными определениями их индексов k и l, после чего k–я строка должна быть выведена в строку, а l–й столбец столбцом. Эта задача в предположении, что массивы A, P, S надлежащим образом описаны и первый из них введен, а два других сформированы (как это делается, см. пример 6.1), может быть реализована следующим фрагментом (при m=8, n=10):
k:=1; Pmax:=p[k]; for i:=1 to 8 do Begin if p[i]>=Pmax then Begin Pmax:=p[i]; k:=i; end; end; writeln('Строка с Pmax'); for j:=1 to 10 do write(a[k,j]); writeln; l:=1; Smin:=s[l]; writeln('Столбец с Smin'); for j:=1 to 10 do Begin if s[j]<=Smin then Begin Smin:=s[j]; l:=j; end; end; for i:=1 to 8 do writeln(a[i,l]); Пример 6.4. Дана матрица А(m? n). Составить вектор B из наибольших элементов каждой строки и вектор С из наименьших элементов каждого столбца. Алгоритм решения данной задачи состоит, очевидно, в том, чтобы в каждой i–й строке (i=1..m) найти ее наибольший элемент и присвоить его значение элементу bi вектора B. Аналогично, в каждом j–м столбце (j=1..n) требуется найти его наименьший элемент и присвоить его значение элементу cj вектора С. Соответствующий фрагмент программы (при m=8, n=10) с выводом полученных векторов: for i:=1 to 8 do Begin max:=a[i,1]; for j:=1 to 10 do Begin if a[i,j]>max then max:=a[i,j]; end; b[i]:=max; end; for j:=1 to 10 do Begin min:=a[1,j]; for i:=1 to 8 do Begin if a[i,j]<min then min:=a[i,j]; end; c[j]:=min; end; writeln('Вектор В'); for i:=1 to 8 do write(b[i]:6:2); writeln; writeln('Вектор C'); for j:=1 to 10 do write(c[j]:6:2); Задачи, аналогичные рассмотренным выше, в разных комбинациях могут встречаться и в других более сложных случаях работы с матрицами. В таких ситуациях соответствующие программы с точностью до обозначений могут комбинироваться из фрагментов разобранных в данном разделе. КОНТРОЛЬНЫЕ ВОПРОСЫ И УПРАЖНЕНИЯ 1. Дайте определение массива. Приведите примеры. 2. Что такое одномерный и двумерный массив? Чем определяется размерность массива? 3. Что такое индексы элементов массивов и каковы правила их записи? Приведите примеры. 4. Какова цель описания массивов в программе? 5. Два способа описания массивов. 6. Описание массивов в разделе Type. Приведите пример.
7. Описание массивов в разделе Var. Приведите пример. 8. Приведите пример ввода одномерного массива с использованием константы типа? массив?. 9. Приведите пример ввода матрицы с использованием константы типа? массив?. 10. Запишите в текущий каталог файл из 20 данных чисел ai. Имя файла выберите сами. 11. Запишите в корневой каталог диска С под именем f1.dat файл из 30 вещественных чисел zk; программное имя файла tpr1. 12. Создайте пробный массив из 85 целых чисел в диапазоне от0 до 25 с использованием функции sin или cos. 13. Создайте произвольный одномерный массив из 60 вещественных чисел в интервале (–25,25) с использованием функции Random. 14. Напишите фрагмент программы вывода массива tk (k=1? 30) по 5 чисел в строке. 15. Напишите фрагмент программы вывода матрицы В размером 8x6. 16. Напишите фрагмент программы создания массива значений функции 17. Для массива xi (i=1, 26) найдите сумму, а для массива rk (k=1, 12) – произведение всех элементов. 18. Найдите сумму всех элементов матрицы М размером 8x 6. 19. Даны два массива ai и bi (i=1, 22). Вычислить их скалярное произведение. 20. В массиве sk (k=1, n) подсчитать количество чисел больших 5. 21. В массиве xj (j=1, 150) выбрать числа, попадающие в интервал (–1,1) и сформировать из них массив yi. 22. Для матрицы D(8,10) запишите общий вид элементов 4–й строки и 6–го столбца. 23. В массиве ak (k=1, 40) найдите наименьший элемент, а в массиве bi (i=1, 60) – наибольший. 24. Для массива ri (i=1, 15) найдите средне арифметическое и среднее геометрическое. 25. Для массива zk (k=1, 20) найдите среднее квадратическое и среднее гармоническое. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ Составить и отработать на ЭВМ программу решения задачи в соответствии с индивидуальным вариантом. В качестве отчета представить блок–схему, выполненную в соответствии ГОСТ, листинг программы и распечатку результатов ее работы. В отчете привести также полный текст задания, все использованные расчетные формулы (если они имеются), список обозначений величин и соответствующих программных имен. Вычислить и вывести массив 100 значений функции 2.В произвольном массиве из 120 вещественных чисел в пределах от 0 до 1, который необходимо сформировать и вывести, подсчитать количества элементов, принадлежащих интервалам 0–0.1; 0.1–0.2;...0.9–1, а также подсчитать общую сумму этих количеств. 3. Ввести и вывести матрицу 3. Вычислить и вывести вектор элементами которого являются скалярные произведения каждой строки на одноименный столбец. Найти наибольший элемент этого вектора. 4. В массиве 100 вещественных чисел (пробный массив сформировать произвольный) вычислить среднее значение. Разделить исходный массив на два, в первый из которых отобрать числа, большие среднего, во второй меньшие. Для каждого из вновь созданных массивов вычислить все четыре вида средних: среднее арифметическое, квадратическое, геометрическое и гармоническое. 5. С помощью функции sin сформировать и вывести матрицу 6х6 из вещественных положительных чисел в пределах 0–15. Определить наибольший элемент ее главной диагонали и его индексы. Сформировать и вывести матрицу все элементы которой равны соответствующим элементам исходной, деленным на наибольший элемент диагонали.
6. Для функции 7. Ввести заданный одномерный массив из 25 элементов. Найти в нем наибольший и наименьший элементы и определить их индексы. Переименовать элементы массива в обратном порядке: так чтобы первый стал последним и наоборот. Вывести оба массива с заголовками в порядке возрастания их индексов по 5 часел в строке. 8. В произвольном одномерном массиве из 100 элементов (массив сформировать и вывести). Подсчитать суммы элементов с 1–го по 10–й, с 11–го по 20, с 21 по 30–й... с 91 по 100–й, вывести массив этих сумм, найти среди них наибольшую и наименьшую. 9. С помощью функции Random сформировать одномерный массив 60–ти вещественных чисел с элементами 0–50. Найти в нем и вывести наибольший и наименьший элементы, а также их индексы. Сформировать два новых массива: из 20–ти первых элементов исходного массива, деленных на maх, и из 20–ти последних, деленных на min. Вывести все три массива с соответствующими заголовками по 5 чисел в строке. 10. В произвольной матрице 7? 9, выбрать числа положительные и отрицательные, подсчитать количество и сумму тех и других. Вывести саму матрицу, а также по отдельности ее положительные, и отрицательные элементы. Пробную матрицу сформировать любым способом по своему выбору. 11. Для функции 12. Ввести и вывести матрицу по заданию 3. Элементы первого столбца оставить неизменными, все элементы второго возвести в квадрат, третьего в куб, четвертого в четвертую степень. Вывести полученную при этом матрицу. А также вычислить и вывести суммы всех элементов обеих матриц. 13. Сформировать и вывести массив из 50 целых чисел в пределах от 50 до 100, представляющий собой рейтинговые оценки группы студентов. Отобрать и вывести отдельными массивами: оценки <60, от 61 до 75, от 76 до 85 и >85 с заголовками соответственно: оценки неуспевающих студентов, успевающих, хороших и отличников. 14. Сформировать и вывести массив из 80 целых чисел в пределах от –25 до 25. Сформировать из этого массива два других соответственно из положительных и отрицательных элементов исходного массива. Вычислить для первого из них среднее геометрическое, а для второго–среднее гармоническое.
15.В матрице 10х10 вещественных чисел от 0 до 5 найти среднее арифметическое первой и среднее квадратичное последней строки, среднее геометрическое первого и среднее гармоническое последнего столбца. Вывести саму матрицу, указанные столбцы и строки с вычисленными их статистическими характеристиками. 16. Вычислить массив значений функции 17. Сформировать и вывести произвольный массив 100 целых чисел в интервале от 0 до 100. Отобрать в нем числа < 25 и найти их среднее, отобрать числа > 75 и вычислить их дисперсию; вычислить сумму остальных элементов исходного массива. 18. Сформировать и вывести произвольный массив из 50 вещественных чисел в пределах от –10 до 10. Сформировать и вывести новые массивы: из всех отрицательных элементов исходного, возведенных в квадрат, а также из логарифмов всех положительных элементов исходного. Вычислить суммы и средние значения обоих новых массивов. 19. В матрице 8х8 из вещественных чисел в пределах от –20 до 20 найти наибольший элемент главной диагонали и определить его индексы. Вывести саму матрицу, ее главную диагональ, а также строку и столбец, на пересечении которых стоит наибольший элемент диагонали. 20. Сформировать произвольную матрицу целых чисел 6х8 и вывести ее с заголовком "Исходная матрица". Сформировать и вывести с соответствующими заголовками два вектора: первый из наименьших элементов всех столбцов, второй – из наибольших элементов всех строк. 21. Вычислить массив 30–ти значений функции 22. Сформировать и вывести массив Х из 50 вещественных чисел в пределах от 20.0 до 40.0. Вычислить среднее арифметическое Х и среднеквадратическое отклонение s. Подсчитать количество элементов массива, превышающих Х + s и вычислить их сумму, а также количество элементов, наименьших Х – s и вычислить их произведение. 23. Сформировать и вывести массив из 60 положительных вещественных чисел от 0 до 12. Разделить его на три массива включив в первый из них числа от 0 до 4, во второй от 4 до 8 и в третий от 8 до 12. Вывести каждый из этих массивов и вычислить для каждого среднее значение, дисперсию и с.к.о. 24. Сформировать произвольную матрицу 5х9 вещественных чисел. Вывести ее с заголовком "Исходная матрица". В каждой строке найти наибольший элемент и все элементы этой строки поделить на него. Вывести полученную матрицу с заголовком "Преобразованная матрица".
25. Ввести и вывести матрицу по заданию 3. Вычислить и вывести скалярные произведения первой строки на вторую, второй на третью, третьей на четвертую, а также первого столбца на второй, на третий и на четвертый. СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ 1. Зуев Е.А. Язык программирования Turbo Pascal 6.0.М.:Унитех,1992.– 298 с. 2. Епанешков А., Епанешков В. Программирование в среде Turbo Pascal 7.0.– М.: Диалог–МИФИ, 1993. –288 с. 3. Вычислительная техника и программирование: Учеб. для техн. вузов / А.В. Петров, В.Е. Алексеев, А.С. Ваулин и др.; Под ред. А.В. Петрова.– М.:Высш. шк., 1990. – 479 с.: ил.
|
|||||||||
Последнее изменение этой страницы: 2016-09-20; просмотров: 324; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.127.152 (0.008 с.) |