Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Некоторые задачи работы с матрицами

Поиск

При всех операциях с матрицами необходимо внимательно следить за индексами элементов, над которыми выполняются те или иные действия, а для этого всегда следует составлять схему индексирования элементов матриц, аналогичную приведенной в разделе 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 с.)