Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Некоторые задачи работы с матрицами↑ ⇐ ПредыдущаяСтр 3 из 3 Содержание книги
Поиск на нашем сайте
При всех операциях с матрицами необходимо внимательно следить за индексами элементов, над которыми выполняются те или иные действия, а для этого всегда следует составлять схему индексирования элементов матриц, аналогичную приведенной в разделе 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. Напишите фрагмент программы создания массива значений функции на отрезке –3< x< 3 с шагом D x=0.15. 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 значений функции при х от 0 с шагом 0,1. Вычислить сумму всех его элементов с нечетными индексами, среднее квадратичное всех элементов с четными, среднее гармоническое всех элементов с индексами кратными 5 и среднее геометрическое элементов с индексами кратными 10. 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. Для функции вычислить и вывести массив 40 значений при изменении х от –4 с шагом 0,2. Для первых 10 элементов этого массива найти среднее, для вторых – среднее квадратичное, для третьих – среднее геометрическое и для четвертых – среднее гармоническое. 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. Для функции вычислить и вывести массив ее значений на отрезке –3? х? 3 с шагом 0,1. Найти min и max элементы этого массива и определить значения аргумента, которым они соответствуют. Вычислить среднее и среднее квадратичное значения этой функции на заданном отрезке. 12. Ввести и вывести матрицу по заданию 3. Элементы первого столбца оставить неизменными, все элементы второго возвести в квадрат, третьего в куб, четвертого в четвертую степень. Вывести полученную при этом матрицу. А также вычислить и вывести суммы всех элементов обеих матриц. 13. Сформировать и вывести массив из 50 целых чисел в пределах от 50 до 100, представляющий собой рейтинговые оценки группы студентов. Отобрать и вывести отдельными массивами: оценки <60, от 61 до 75, от 76 до 85 и >85 с заголовками соответственно: оценки неуспевающих студентов, успевающих, хороших и отличников. 14. Сформировать и вывести массив из 80 целых чисел в пределах от –25 до 25. Сформировать из этого массива два других соответственно из положительных и отрицательных элементов исходного массива. Вычислить для первого из них среднее геометрическое, а для второго–среднее гармоническое. 15.В матрице 10х10 вещественных чисел от 0 до 5 найти среднее арифметическое первой и среднее квадратичное последней строки, среднее геометрическое первого и среднее гармоническое последнего столбца. Вывести саму матрицу, указанные столбцы и строки с вычисленными их статистическими характеристиками. 16. Вычислить массив значений функции на отрезке 0,1? х.? 6,0 с шагом 0,1. Вывести его строками по 10 чисел в строке. Сформировать два новых массива, отобрав в первый из них все положительные, а во второй – все отрицательные элементы исходного массива. Вычислить среднее арифметическое, дисперсию и с.к.о. каждого из двух новых массивов. 17. Сформировать и вывести произвольный массив 100 целых чисел в интервале от 0 до 100. Отобрать в нем числа < 25 и найти их среднее, отобрать числа > 75 и вычислить их дисперсию; вычислить сумму остальных элементов исходного массива. 18. Сформировать и вывести произвольный массив из 50 вещественных чисел в пределах от –10 до 10. Сформировать и вывести новые массивы: из всех отрицательных элементов исходного, возведенных в квадрат, а также из логарифмов всех положительных элементов исходного. Вычислить суммы и средние значения обоих новых массивов. 19. В матрице 8х8 из вещественных чисел в пределах от –20 до 20 найти наибольший элемент главной диагонали и определить его индексы. Вывести саму матрицу, ее главную диагональ, а также строку и столбец, на пересечении которых стоит наибольший элемент диагонали. 20. Сформировать произвольную матрицу целых чисел 6х8 и вывести ее с заголовком "Исходная матрица". Сформировать и вывести с соответствующими заголовками два вектора: первый из наименьших элементов всех столбцов, второй – из наибольших элементов всех строк. 21. Вычислить массив 30–ти значений функции при изменении аргумента от –1,5 с шагом 0,1 и вывести его строками по 6 чисел. Вычислить минимальное, максимальное и среднее значения y и подсчитать количества элементов массива больших среднего и меньших его. 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; просмотров: 318; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.152.102 (0.009 с.) |