ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования СА...
42 downloads
144 Views
976KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования САНКТ"ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
АЛГОРИТМИЗАЦИЯ ИНЖЕНЕРНЫХ ЗАДАЧ Методические указания
Санкт"Петербург 2005
Составитель С. Л. Козенко Рецензент канд. техн. наук С. В. Беззатеев
Приводятся методические указания к использованию методов и приемов составления схем алгоритмов решения некоторых типовых вычислительных задач. Рассмотрены примеры составления схем алго" ритмов, приведены пояснения. Предназначены для студентов всех специальностей 1"го факульте" та, изучающих дисциплины «Алгоритмизация инженерных задач», «Информатика», а также могут быть полезны студентам других спе" циальностей для изучения дисциплин со схожей тематикой. Подготовлены кафедрой компьютерных систем автоматизации и рекомендованы к изданию редакционно"издательским советом Санкт" Петербургского государственного университета аэрокосмического при" боростроения
Редактор Г. Д. Бакастова Компьютерная верстка А. Н. Колешко Сдано в набор 15.03.05. Подписано к печати 20.04.05. Формат 60´84 1/16. Бумага офсетная. Печать офсетная. Усл. печ. л.2,67. Усл. кр."отт. 2,79. Уч. "изд. л. 2,55. Тираж 400 экз. Заказ № Редакционно"издательский отдел Отдел электронных публикаций и библиографии библиотеки Отдел оперативной полиграфии СПбГУАП 190000, Санкт"Петербург, ул. Б. Морская, 67
©
2
ГОУ ВПО «СПбГУАП», 2005
ПРЕДИСЛОВИЕ Усложнение научных и инженерных задач способствует стреми" тельному росту процесса автоматизации их решения, так как ско" рость и требуемая точность вычислений всецело зависят как от кор" ректности используемых моделей и методов решения задач, так и от эффективности их реализации. В настоящее время применение средств вычислительной техники как инструмента для решения инженерных задач требует углублен" ных знаний в различных областях человеческой деятельности. Час" то на практике необходимо преобразовать исходную задачу с учетом дискретного характера машинных вычислений и представить про" цесс ее решения на ЭВМ в виде последовательности шагов. Такой подход должен выработать у будущего специалиста «алгоритмичес" кое мышление», на основе которого дальнейший процесс разработки программ не вызывает затруднений. Решение любой задачи на ЭВМ содержит следующие этапы обра" ботки. 1. Постановка задачи – формулирование задачи, определение кон" кретной цели ее решения и результатов, которые должны быть полу" чены, выработка критериев оценки этих результатов. 2. Формализация задачи – выбор математических методов реше" ния задачи с учетом их применимости для машинных вычислений. 3. Алгоритмизация – разработка алгоритма решения задачи, т. е. представление процесса ее решения в виде шагов, этапов. 4. Программирование (кодирование алгоритма) – перевод алго" ритма решения задачи на язык ЭВМ. 5. Отладка программы – выявление возможных синтаксических или семантических (смысловых) ошибок и их устранение. На этом этапе разрабатываются также тестовые примеры с целью проверки работоспособности программы. 6. Получение результатов и их анализ –результаты должны быть проанализированы на предмет их достоверности и возможности ис" пользования в практической или научной деятельности. Если резуль" таты не удовлетворяют поставленным требованиям, то осуществля" ется проверка правильности выполнения предыдущих этапов. Та" 3
ким образом, процесс решения инженерных задач на ЭВМ носит обыч" но и т е р а ц и о н н ы й характер. Следует отметить, что процесс алгоритмизации представляет со" бой некий компромисс между игрой воображения и умением быстро находить эффективное решение, что делает этот процесс творческой работой. Поэтому каждый занимающийся машинными вычислени" ями может всегда предложить свой уникальный способ решения за" дачи. Однако в таком процессе важно «не заблудиться» и стараться отыскать «золотую середину». Кроме того, необходимо помнить, что «велосипед» уже изобретен, и следует при решении вычислительных задач пользоваться общеизвестными правилами и соглашениями. При анализе различных вариантов схем алгоритмов решения од" ной и той же задачи необходимо руководствоваться следующими ос" новными критериями: – сходимость алгоритма к решению; – минимально возможное число шагов; – минимально возможное число используемых обозначений (имен): в будущей программе это скажется на объеме используемой памяти; – «понятность» вводимых обозначений и действий – с этой целью желательно использовать так называемые мнемонические имена; – корректность выбранных методов и способов решения. Целью методических указаний является обучение студента основ" ным правилам и приемам составления схем алгоритмов решения вы" числительных задач. Схема алгоритма позволяет наглядно предста" вить пошаговое решение поставленной задачи на ЭВМ и является универсальным средством, не зависящим от языка программирова" ния. В методических указаниях приведены схемы алгоритмов реше" ния типовых вычислительных задач. Для более детального освоения методов и приемов, используемых на этапе алгоритмизации задач, можно воспользоваться работой [1]. Кроме того, в работах [2,3] приведены примеры схем алгоритмов ре" шения некоторых типовых вычислительных задач и их реализация на языке Паскаль.
4
1. ВВЕДЕНИЕ В АЛГОРИТМИЗАЦИЮ ЗАДАЧ 1.1. Основные понятия и определения Алгоритмизация задачи представляет собой процесс составления алгоритма ее решения. Алгоритм – строго определенная процедура, гарантирующая получение результата за конечное число шагов. Все многообразие вычислительных алгоритмов включает в себя в виде фрагментов три типовых вычислительных процесса: 1) линейный процесс – последовательность операций, выполня" емых одна за другой; 2) в е т в я щ и й с я процесс – выполнение операций по одному из возможных направлений (ветвей алгоритма) в зависимости от неко" торого условия; 3) ц и к л и ч е с к и й процесс – многократное выполнение некото" рого набора операций, составляющих тело цикла, в соответствии с заданным правилом. С целью наглядного представления вычислительного процесса решения задачи используются схемы алгоритмов, которые состав" ляются в соответствии с требованиями «Единой системы программ" ной документации» (ЕСПД): ГОСТ 19.701"90. Схемы алгоритмов, программ, данных и систем. Основные символы (геометрические фигуры), применяемые в схемах алгоритмов, приведены на рис. 1.1. В схеме алгоритма каждый символ может иметь порядковый номер, который записывается слева над сим" волом. Нумерация производится слева направо и сверху вниз. Ниже приведены примеры построения схем алгоритмов ветвяще" гося и циклического вычислительных процессов. Пример 1.1 Составить схему алгоритма вычисления значения y: 3a 1 x, если a 2 b, y45 7b 6 2x в остальных случаях Исходные данные: a, b, x. Решение задачи показано на рис. 1.2.
5
1
(8 725
123245 165789 8 245 2
)277 8
5 277 7878 8 4 5 8425 2375 84 277 78 588487 42
598
2562 277 455 2
!8878
*2792 9642
85884877 598
+7
#58784
88643878 3 484755 598
2 72 57 88 245 2 5 48 3 487 45 525884877 7 55 54262!842 3 487 45 62 2 5
47 52 5" 87
542 # 54 52 5 5" 32 8 52 552$28 723245 65789 9642628 32 542 8 57 5 $8 87%625 62& 45 792429 52 2"87 522887 6 62 5 8"2 7 542 723248 4 65798 52 2 5 5 2 545$87 5829 5258"8 458 ' 545278 598
2 52 5 5"85 5829 525884877 5 52 75 4568 52$28 556 277 4 2487 62122487 5565 22 72485 7 8 557232
8462 ' 548 4 5 2 47 5562 277 554$87 88 5 8 862#558 "8 54 7
58784 54$7 58$2 575 5 $8 7624758 55723878
Рис.1.1. Графическое представление алгоритмов
6
! 2 2465789 2 9
5
92788
123245
123245 2465789 2 5 85 2
5 12478763 2
498 19
75 72 45 8 112238 45683565 728311 5 98 41 5 75 48 45 8 167811 4929 75 7841152711 8115 1971118 559 99 8 8
9 8 2465789 2
1232456
2328 6
5 85 2 8 749292 5 2465789 2
5 2478767 3
5
Рис. 1.2. Схема алгоритма вычисления значения y (пример 1.1)
Пример 1.2 Составить схему алгоритма вычисления значения суммы: S1
n
3 sin( p 2 k)/ k.
k 11
Исходные данные: p, n Решение задачи показано на рис. 1.3.
2 2465789 2 123245 5 13422 56437 1
43562
567658 89 1381 291 1
5 134245 2 5
123245 2465789 2 5 85 2 123245 238
1548
295722 26545 5 842 45 84231
875 28 23 5328 842 5 238 5 2465789 2
Рис. 1.3. Схема алгоритма вычисления значения суммы (пример 1.2)
7
1.2. Алгоритм поиска экстремума среди нескольких величин Задача поиска экстремального значения среди нескольких вели" чин может быть реализована следующими способами: а) на основе предположений с последующими проверками; б) сравнением значений элементов каждой пары. Пример 1.3 Составить схему алгоритма нахождения максимального значения среди трех величин: a, b, c. Решение задачи на основе предположений с последующими про" верками приведено на рис. 1.4, а при помощи сравнения значений элементов каждой пары – на рис. 1.5.
2 2465789 2 123245
5
92788 123245 2465789 2 5 85 2
5 4152536 45627
7 5458 12395
1
2
12 1 234
19 3
45627
19
45627
5 29152535456
5
3
28
75 72 2 824562 2
2
82456
1
8 238 28 2 75 72 3 824562
3
8 238 28 2 5 85 2 8 749292 5 2465789 2
Рис. 1.4. Схема алгоритма нахождения максимального значения на основе предположений с последующими проверками
Анализируя схемы алгоритмов, приведенные на рис. 1.4 и 1.5, можно отметить, что алгоритм нахождения максимального значе" ния на основе сравнения значений элементов каждой пары более эф" фективен, так как требует меньшего числа действий и шагов их реа" лизующих. Кроме того, возможны и другие способы решения приведенной за" дачи, например с так называемыми «объединенными проверками». 8
2 2465789 2
5
92788 123245 2465789 2 5 85 2
123245 5 12123243 19 19 45617
35654
45617
19
3
45617
5 121232424563 5
72 8 238 4 95 2 5 27 8 57 8 8
28 24565 238
2
15654
2
54
2
15653
45617
1
54
5 85 2 8 749292 5 2465789 2
Рис. 1.5. Схема алгоритма нахождения максимального значения на основе сравнения значений элементов каждой пары
Студенту предлагается самостоятельно составить схему алгоритма решения и провести его оценку. Аналогично решается задача поиска минимального значения сре" ди нескольких величин. 2. АЛГОРИТМЫ ОБРАБОТКИ ЧИСЛОВЫХ ПОСЛЕДОВАТЕЛЬНОСТЕЙ Пусть задана последовательность a1,a2, ..., ak–1,ak, ...,aN, ..., где ak – общий член последовательности. Любые операции с такой пос" ледовательностью возможны лишь при выполнении условия сходи" мости (критерий Коши): если для каждого сколь угодно малого по" ложительного числа e существует такой номер N, что из m > N и n > N следует | an– am | < e, то последовательность считается сходящейся. Проверку этого условия можно не делать, если операции проводятся с конечным числом членов последовательности. В выражение для ak могут входить различные функции: степен" ные, показательные, тригонометрические, логарифмические, а так" же факториалы. Для заданных значений аргументов функций, вхо" дящих в ak, можно вычислить числовые значения членов последова" тельности. В этом случае говорят о числовой последовательности. При вычислении степенных функций и факториалов с ростом k резко 9
возрастает расход машинного времени и уменьшается точность вы" числений. В этих случаях используются р е к у р р е н т н ы е соотно" шения, позволяющие найти очередной член числовой последователь" ности ak или его компоненты через ak–1: ak = f(ak–1), k = 2..N.
(2.1)
Рекуррентная зависимость (2.1) используется также при вычис" лении значения суммы (произведения) членов последовательности. Действительно, частичные суммы членов последовательности S 1 = a1 , S2 = a1+a2, ..., Sk = a1 + a2 +...+ ak–1 + ak можно представить рекуррентной формулой Sk = Sk–1+ ak (аналогично для произведения – Pk = Pk–1 ´ ak ). Особенностью вычислений по рекуррентной формуле (2.1) явля" ется то, что для получения значения ak достаточно знать только вы" численное на предыдущем шаге значение ak–1. Таким образом, дости" гается экономия памяти ЭВМ, так как результат каждого шага вы" числений по формуле (2.1) заносится в одну и ту же ячейку памяти, при этом предыдущее значение (ak–1) стирается. Аналогичные рас" суждения можно привести для вычисления Sk и Pk. Следует иметь в виду, что перед вычислениями по рекуррентным формулам необходимо определить a1, S1 или P1. Пример 2.1 Составить схему алгоритма вычисления значения суммы первых L из N членов последовательности, общий член которой (11)k11 sink (x) p2k , k! где k = 1..N, x = x0+(i–1)h, i = 1..M. Исходными являются значения параметров: N, M, L, x0, h, p. Р е ш е н и е . Для получения рекуррентной зависимости (2.1) мож" но воспользоваться отношением: ak 2
ak ( 11)k 11 sink (x) p2k (k 1 1)! 1 sin(x) p2 2 2 . ak 21 k k !( 11)k sink21 (x) p2(k 21) Таким образом, согласно (1.1):
ak 1 2ak11
10
sin(x) p2 . k
Для определения a1 в формулу для общего члена подставим значе" ние k = 1. Получим: a1 = p2 sin(x), отсюда S1 = a1 = p2 sin(x). Решение задачи приведено на рис. 2.1.
123245 2465789 2 5 85 2
123245 5 1 56 76 8223292 4
26545 5 842 5
1 56 7
3848 965 238 3848 238 31 5 238 7 565 342 54 5 294598 28
2957 238 26545 5 842 5 4
2 23 1 1 5469 3 789124
5 134 3
4 2 5 3 37892 4
5 134 4
2
1
8
3
4
5 1624 1
!5
1
19
2
31
3848 238 31 5 238 537 565 342 54 5 294598 75 72 5 72 342 54 5 294598 52 48
2957 238 5328 842 5 1 5 238 5328 842 5
31
4
1
!5 2465789 2
Рис. 2.1. Схема алгоритма вычисления значения суммы первых L из N членов последовательности (пример 2.1)
В некоторых задачах рекуррентное соотношение целесообразно найти только для некоторой компоненты общего члена последова" тельности. Пример 2.2 Составить схему алгоритма вычисления значения произведения всех членов последовательности, общий член которой ak 1 1 2
e 1 pk xk21 , (k 2 1)!
11
где k = 1..N, x = x0+(i–1)h, i = 1..M. Исходными являются значения параметров: N, M, x0, h, p. Р е ш е н и е . Предварительно необходимо произвести преобразо" вание: ak = 1+bk и рекуррентную формулу вывести для bk: bk e 1 pk xk21 (k 1 1 2 1)! e1 p x 3 3 . bk 11 (k 2 1)! e 1 p(k 11) x(k11) 21 1 p k 2 1 e x Таким образом, согласно (2.1), bk 1 bk11 . В этом случае k 21 e 1 p x2 b1 1 , a1 = 1+b1. 2 Решение задачи приведено на рис. 2.2.
123245 5 2 1
2
4
1 2
267 2 8 1 9
11
367 4
26545 5 842 5
38
167
345
2 2
67
383
5 244
74
78
57
21
367 3
467
2
625934
393
5 244
7 4 5
5 2 2 4 1
5
123245 2465789 2 5 85 2 1
3848 965 238 2 3848 238 31 3848 238 41 5 238 7 565 342 54 5 294598 28 25894 758 8 238 41 26545 5 842 5 5 3848 238 31 3848 238 41 5 238 537 565 342 54 5 294598 52 48 25894 758 8 1 238 4 1
5328 842 5 5 238 5328 842 5 5 2465789 2
5
1
Рис. 2.2. Схема алгоритма вычисления значения произведения всех членов последовательности (пример 2.2)
12
3. АЛГОРИТМЫ ОБРАБОТКИ МАССИВОВ ДАННЫХ 3.1. Общие понятия Под массивом будем понимать некоторым образом организован" ный набор данных (например, чисел), называемых элементами, или компонентами, массива. Элементам массива приписывается общее имя, при этом элементы имеют индексы, которые определяют место" положение каждого элемента в массиве. Количество индексов, ис" пользуемых для указания к о о р д и н а т (положения) элемента в массиве, зависит от размерности массива. Различают одномерные (векторы в математике), двумерные (матрицы в математике или таб" лицы) и многомерные массивы. В дальнейшем будем рассматривать только одномерные и двумерные массивы. Например, A = { a1, a2, ..., an } – одномерный массив (вектор) размерностью n, 1b11b12b13 ...b1n 2 2b b b ...b – B 3 4 21 22 23 2n 2... 25bm1bm2bm13 ...bmn
двумерный массив (матрица) размерностью m´n (m – число строк, n – число столбцов матрицы). В общем случае массивы не упорядочены по значениям элементов, но в то же время упорядочены по индексам, что позволяет произво" дить обработку массивов путем организации циклов по индексам. Рассмотрим некоторые обобщенные схемы алгоритмов типовых задач обработки массивов. 3.2. Поиск экстремальных элементов в массиве К подобным задачам относятся задачи поиска максимальных и/ или минимальных элементов, а также некоторых функций от этих элементов (например, максимального по модулю элемента) в масси" вах различной размерности с указанием или без указания координат этих элементов в массиве. Пример 3.1 Составить схему алгоритма поиска экстремальных по модулю эле" ментов в одномерном массиве An. 13
Решение задачи приведено на рис. 3.1.
123245
123245 2465789 2
234 345
5 238 4 95
28 2
5 11 2 1
2 112364317
2 28 2324565 238 1123
114564317
2 28 2324565 238 1145
234 545
26545 5 842 5 2 19
1 6 63611236
6
1
!2
1 6 83911456
6
1123 431
1
1
!2 1145 431
19 75 72 238 5 4 4 95 28 2 5 238 8
5 4 1123 8 1145 559 99 5 8 8 55 8 8 8
1
5328 842 5 2
2
5 7111237311452
5 749295
5
5 2465789 2
Рис. 3.1. Схема алгоритма решения примера 3.1
Пример 3.2 Составить схему алгоритма поиска экстремальных элементов и их координат в двумерном массиве Am´n. Решение задачи приведено на рис. 3.2. 14
5 9
8
123245 73 529 8 6 52
5 311347 8 7
123245 2465789 2
5 238 4 95
7565 28 2 1112
1123663177 4123 6 5 5123 35
5
2 28 2324 238 11232341232351232 1145234145235145 12 55 7 545823395 97 24 4 9 25 9 5888 557 8292 83452567
1145663177 4145 35 5145 35
55 59 5
7 529
5
8 52
5
134 31123 %2
58
1123663134
5 95
9
9
762828 845 4 7572 4 95 28 2 1 19 5
5
1145663134
41236637
9
41456637
51236638
99
51456638
19
75 72 238 9!65 4 92 134 2 97 2459 " 8 238 559 99 #!8 4838
5328 845 5 757 4 95 28 2 134
8 7
9
5 31112324123251232 114524145251457
9
134 31145 %2
$5
5 749295 $5 2465789 2
Рис. 3.2. Схема алгоритма решения примера 3.2
15
Пример 3.3 Составить схему алгоритма поиска экстремальных элементов в k"й строке (l"м столбце) матрицы Am´n. Значение k (или l) определено. Р е ш е н и е . Для решения задачи можно воспользоваться схемой алгоритма, приведенной на рис. 3.2. В этой схеме необходимо сде" лать следующие изменения: – удалить блоки 8, 9, 11, 12; – в блоках 7, 10 вместо A11 записать Ak1 (для поиска экстремаль" ных элементов в k"й строке) или A1l (для поиска экстремальных эле" ментов в l"м столбце); – удалить блок 13 (для поиска экстремальных элементов в стро" ке) или 14 (для поиска экстремальных элементов в столбце); в остав" шемся блоке вместо 1 записать 2; – в блоках 15, 16, 17, 18 заменить индекс i на k (для поиска экстре" мальных элементов в строке) или j на l (для поиска экстремальных элементов в столбце); – удалить блоки 19, 20, 21, 22; – удалить блок 23 (для поиска экстремальных элементов в столб" це) или 24 (для поиска экстремальных элементов в строке); – в блоке 25 убрать Imax, Jmax, Imin, Jmin. 3.3. Вычисление значения суммы (произведения) элементов массива Вычисление значения суммы (произведения) элементов массива входит во многие задачи обработки массивов, а также в задачи ли" нейной алгебры. Значение суммы S (произведения P) элементов мас" сива находят с использованием рекуррентной зависимости (2.1) в виде последовательного накопления частичных сумм (произведе" ний) элементов массива. Все рассуждения аналогичны приведенным в разд. 2. Различие состоит лишь в том, что начальное значение сум" мы задается равным 0 (для произведения начальное значение задает" ся равным 1). Пример 3.4 Составить схему алгоритма вычисления значения суммы положи" тельных элементов матрицы Am´n. Решение задачи приведено на рис. 3.3. Пример 3.5. Составить схему алгоритма вычисления значения произведения всех элементов одномерного массива Am. 16
3
123245
4
2 3 345
6
6 5 347
123245 2465789 2
5 238 4 95 7565
28 2 1112
9
5 271348
6
2
8952
48
29572
2 5 345
6 5 347
762828 845 4 7572 4 95 28 2 1
3
134 2
33
34 36 39
3
!2 8 3 8 134 6
19
72 8 238 965 4 92 134 4 8 52 48 65
295712 48 5 545894 5328 845 5 757 4 95 28 2
2
5 2788 5
5 749292 5 2465789 2
Рис. 3.3. Схема алгоритма вычисления значения суммы положительных элементов матрицы Am´n (пример 3.4)
Р е ш е н и е . Для решения задачи можно воспользоваться схемой алгоритма, приведенной на рис. 3.3. В этой схеме необходимо сде" лать следующие изменения: – удалить блоки 3, 5; – в блоке 4 Aij заменить на Ai; – в блоке 7 вместо S: = 0 записать P: = 1; – удалить блоки 9, 10, 12; – в блоке 11 вместо S: = S+Aij записать P: = P*Aij; – в блоке 14 S заменить на P. 3.4. Сортировка (упорядочение) массива Задача сортировки неупорядоченного массива данных (обычно одномерного) заключается в перестановке элементов массива в за" 17
данном порядке, например по возрастанию или убыванию значений элементов массива или значений функций от этих элементов. Суще" ствуют несколько методов сортировки массивов. Рассмотрим два наи" более применимых на практике метода сортировки: метод простого выбора и метод «пузырька». Сортировка методом простого выбора. Суть метода сводится к тому, что в неупорядоченной последовательности находят экстре" мальный по значению элемент, точнее его индекс. Найденный экст" ремальный элемент переставляется с первым элементом неупорядо" ченной последовательности, и поиск повторяется со следующего эле" мента. Число шагов описанного процесса – n(n–1)/2, где n – число элементов последовательности. Главный недостаток метода – отсутствие признака окончания про" цесса сортировки. Поэтому в случае, когда последовательность уже упорядочена (изначально или по мере прохождения процесса сорти" ровки), приходится выполнять все n(n–1)/2 шагов. Пример 3.6 Составить схему алгоритма сортировки одномерного массива An в порядке убывания значений элементов, используя метод простого вы" бора. Решение задачи приведено на рис. 3.4. Сортировка методом «пузырька». Суть метода состоит в следую" щем. В ходе просмотра элементов неупорядоченной последователь" ности сравниваются два соседних числа. Если эти числа расположе" ны в заданном порядке, то они остаются на своих местах, иначе их меняют местами. Затем переходят к следующей паре, в которой одно число из предыдущей пары. Обычно просмотр элементов начинается с последней пары. В этом случае требуемые числа продвигаются с кон" ца последовательности в ее начало, что напоминает процесс обмен" ного движения воздушных капель и жидкости в наклоненном пу" зырьке (отсюда и название метода). Сортировка считается закончен" ной, если в ходе просмотра элементов последовательности не была произведена ни одна перестановка, иначе процесс повторяется. По сравнению с методом простого выбора метод «пузырька» имеет более быструю сходимость за счет наличия признака окончания про" цесса сортировки, который показывает, были перестановки в парах или нет. Пример 3.7 Составить схему алгоритма сортировки одномерного массива An в порядке убывания значений элементов, используя метод «пузырька». Решение задачи приведено на рис. 3.5. 18
123245
123245 2465789 2
5 5 667
5 238 4 95 5 5 7565 28 2 11
5 41122 8
9798 845 5 384 265 579875 8 8 57 48 2324565 238 557 829 28 24565 4 92 57 535 54 5 294598 122
5 5 667476 24945 8 9458667
$2
13 414
19
298
72 8 238 7 54262 565
28 24565 8 965 4 95 28 2 8 57 48 557 829 2 28 24565 4 92
8
$2
24 45 349412 1259413 135943
19 72 8 238 557 829 28 24565 4 92 8 92 65 97 565 72545 834 2 92 7925 2 559 99 !8" 4 95 432 5"5 8 598 178 5 58 5548945 4838 32
5 5 5 667
5 1122
5 4 95 57 53565 28 2
5
#5
#5 2465789 2
Рис. 3.4. Схема алгоритма сортировки одномерного массива методом простого выбора (пример 3.6)
19
5
123245
8
6 57
9
5 31122
6 8
1341 13 #2 1341 1321 13
55
135
58
59
5
19
19
72 8 238 5 8 4 95
28 2 8 8 7925 2 432 8 28 5 57 53598318 8 238 7822 55328 752 579875 8 2345 8 9 2 7598 5545 4 45 782
3635
363
5
6 5
5
5 31122
5
5
9798 845 5 384 265 579875 8 8 57 48 2324565 238 7822 55328 752 579875 8 2345 145 62
71452
5
5
5 238 4 95 5 5 7565 28 2 11
363
123245 2465789 2
"5
#2
!75 72 238 7822 55328 752 579875 83145 79238 55328 752 579875 8
5 238 4 95 57 53565
28 2 "5 2465789 2
Рис. 3.5. Схема алгоритма сортировки одномерного массива методом «пузырьC ка» (пример 3.7)
20
4. АЛГОРИТМИЗАЦИЯ ЗАДАЧ ЛИНЕЙНОЙ АЛГЕБРЫ 4.1. Общие положения При решении прикладных задач часто возникает необходимость производить вычисления, связанные с использованием основных понятий линейной алгебры – матриц и векторов. Понятия «матри" ца» и «вектор» хорошо известны, поэтому приводить их здесь не бу" дем. Остановимся лишь на понятиях «матрица"строка» и «матрица" столбец», которые встречаются в некоторых изданиях и употребля" ются многими математиками. Пусть задана некоторая матрица размерностью m´n, где m – коли" чество строк, n – количество столбцов. Тогда, при m = 1 говорят о матрице"строке, а при n = 1 – о матрице"столбце. Примеры обозначе" ний: Q1´n – матрица"строка; Qm´1 – матрица"столбец. В дальнейшем размерность 1 в обозначении таких матриц будем опускать и считать их векторами. Как уже отмечалось в разд. 3, в языках программирования для описания матриц используются двумерные массивы, а для описания векторов – одномерные массивы. В связи с этим предлагаемый даль" нейшему вниманию материал можно считать продолжением преды" дущего раздела. Рассмотрим типовые задачи линейной алгебры по обработке мат" риц и векторов. 4.2. Транспонирование матриц Матрица Qm´n называется транспонированной по отношению к матрице Rn´m, если элементы матриц Q и R связаны соотношениями qij = rji, i = 1..m, j = 1..n. Пример 4.1 Составить схему алгоритма поиска матрицы Qm´n, транспониро" ванной по отношению к матрице Rn´m. Решение задачи показано на рис. 4.1. 4.3. Вычисление следа квадратной матрицы След квадратной матрицы Am´m есть сумма элементов ее главной диагонали: m
Sp 1 2 aii . i 11
21
123245 6 1 278 341 235 5 451346 243594134 3
123245 2465789 2
5 238 4 95
2978 1112 728 9725875 28
6 6 1 235 341 238 5 452346 3 6 5
5 238 4 95 9725875 25 2978 2211
5 2465789 2
Рис. 4.1. Схема алгоритма транспонирования матрицы (пример 4.1)
Пример 4.2 Составить схему алгоритма нахождения следа квадратной матри" цы Am´m . Р е ш е н и е . Для решения задачи можно снова воспользоваться схемой алгоритма, приведенной на рис. 3.3. В этой схеме необходимо произвести следующие изменения: – удалить блоки 9, 10, 12; – в блоке 3 вместо n написать m; – в блоках 7, 11 и 14 вместо S написать Sp; – в блоке 11 вместо Aij написать Aii. 4.4. Сложение матриц и векторов Суммой двух матриц Qm´n и Rm´n называется матрица Zm´n, эле" менты которой вычисляются по формулам: zij = qij + rij, i = 1..m, j = 1..n. При m = 1 (или n = 1) имеет место частный случай – сложение векторов. Например, zi = qi + ri, i = 1..n. 22
Пример 4.3 Составить схему алгоритма нахождения матрицы Zm´n как суммы двух матриц: Qm´n и Rm´n. Решение задачи показано на рис. 4.2.
2 7
123245 7 1 289 8 451 236 9 5 451346
4 7 7 1 289
451 236 5 452346 2 3345 5134234 22 4 27 7 28 7 1 289 29 451 236 2
5 453346 2 4 2 7 2 5
123245 2465789 2
5 238 4 95 2978 1112
5 238 4 95 2978 2112 8 458 559 99 8 238 4 95
2978
5 238 4 95 74987
2978 3112 5 2465789 2
Рис. 4.2. Схема алгоритма сложения двух матриц (пример 4.3)
Пример 4.4 Составить схему алгоритма нахождения вектора Zm как суммы двух векторов: Qm и Rm. Р е ш е н и е . Для решения этой задачи можно воспользоваться схе" мой алгоритма, приведенной на рис. 4.2. В этой схеме необходимо произвести следующие изменения: – удалить блоки 3, 5, 8, 11, 14 и 16; – в блоках 4 и 10 вместо Qij записать Qi; – в блоках 9 и 10 вместо Rij записать Ri; – в блоках 10 и 15 вместо Zij записать Zi. 23
4.5. Умножение матриц и векторов Произведением двух матриц Qm´l и Rl´n называется матрица Zm´n, элементы которой вычисляются следующим образом: l
zij 1 3 qik 2 rkj ,
i 1 1..m, j 1 1..n.
k 11
Заметим, что перемножить можно только те матрицы, у которых число столбцов первой совпадает с числом строк второй (в данном случае – это размерность l ). Исходя из этого условия, допустимыми являются следующие частные случаи: а) при m = 1 – умножение матрицы(строки на матрицу. Резуль" татом является матрица"строка, элементы которой вычисляются по формуле: l
zj 1 3 qk 2 rkj , k 11
j 1 1..n.
б) при n = 1 – умножение матрицы на матрицу(столбец. Резуль" татом является матрица"столбец, элементы которой вычисляются по формуле l
zi 1 3 qik 2 rk , k11
i 1 1..m.
в) при m = 1 и n = 1 – умножение матрицы(строки на матрицу( столбец. Результатом является скаляр, значение которого вычис" ляется по формуле l
z 1 3 qk 2 rk . k 11
г) при l = 1 – умножение матрицы(столбца на матрицу(строку. Результатом является матрица размерностью m´n, значения элемен" тов которой вычисляются по формуле zij = qi ´ rj , i = 1..m, j = 1..n. Пример 4.5 Составить схему алгоритма нахождения произведения двух мат" риц: Qm´l и Rl´n (матрица Zm´n ). Решение этой задачи приведено на рис. 4.3. Нетрудно видеть, что все частные случаи, возникающие из задачи умножения матриц, легко реализовать, опираясь на схему алгорит" ма, приведенную на рис. 4.3. Внести изменения в эту схему с целью 24
123245 7 1 289
451 236 5 451 456 4
123245 2465789 2
5 238 4 95 2978 1 112
7 7 1 286 451 23
5 452 456 4
5 238 4 95 2978 2 213
7 7 1 289 451 23
3 456147 51 236 345 5345 51 472 75
75 72 7 58 2978
4 7 7 1 289 451 23
5 453456 4 7 5
5 238 4 95 2978 3 113
5 2465789 2
Рис. 4.3. Схема алгоритма умножения двух матриц (пример 4.5)
представления соответствующих решений предлагается студенту са" мостоятельно. 25
5. АЛГОРИТМЫ ОБРАБОТКИ МАССИВОВ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ПОДПРОЦЕССОВ Понятие «подпроцесс» при решении инженерных задач встречается очень часто и имеет различные трактовки. В нашем случае под терми" ном «подпроцесс» будем понимать конечный набор действий (шагов), направленных на решение подзадачи, выделенной из главной (основ" ной) задачи. Алгоритмизация задач, в которых можно выделить одну или несколько подзадач (встречающихся обычно не один раз по ходу решения основной задачи), является полезным занятием для приобре" тения навыков модульного принципа программирования. Рассмотрим на примере два подхода к решению одной и той же задачи обработки массивов данных. Пример 5.1 Ввести значения элементов одномерного массива An. Элементы массива Bn вычисляются по формуле: bi 1 1 2 sin(2* i) i 1 1..n. Най" ти значения максимальных элементов в каждом из массивов. Вывес" ти промежуточные и окончательные результаты расчетов. Решение Вариант 1. Составим схему алгоритма решения задачи, последо" вательно выполняя все указанные требования (рис. 5.1). Вариант 2. Перед алгоритмизацией задачи проведем ее анализ. В задаче (основном процессе) можно выделить дважды встречающуюся подзадачу (подпроцесс) нахождения значения максимального элемен" та в одномерном массиве. Решение этой подзадачи можно оформить в виде отдельной схемы алгоритма, на которую необходимо организо" вать две ссылки (отдельно для массива A и массива B) из схемы алго" ритма решения основной задачи (рис. 5.2). На втором варианте решения задачи следует остановиться под" робнее. Во"первых, о введенных обозначениях: Maximum – имя подпроцесса нахождения значения максимального элемента в одномерном массиве; Z и n – внутренние имена использующихся в подпроцессе так называе" мых ф о р м а л ь н ы х параметров, причем Z – это одномерный массив размерностью n. Подпроцесс Maximum инициируется из основного про" цесса посредством упоминания имени подпроцесса с указанием так на" зываемых ф а к т и ч е с к и х параметров (рис. 5.2, блок 9 – A и n, блок 11 – B и n). Zmax – так называемый л о к а л ь н ы й параметр, который может использоваться только внутри подпроцесса. Во"вторых, подпроцесс Maximum можно с определенной степенью условности отождествить с понятием «функция». Функция – это оп" 26
145467 2 4 534 897 121 3 8 755789 26923 1
12
2 2 4 534
8 97 128 3 1
2 112344515 2 41634
4
1 5651123 1
123
11234751
1
2
8 97 1211233 812347585 2 41634
4
8 5658123 1
123
81234758
1
2
8 97 1281233
72 Рис. 5.1. Схема алгоритма решения примера 5.1 (вариант 1)
ределенная структура в языках программирования, имеющая харак" терные свойства и использующаяся для реализации модульного прин" ципа программирования. В разных языках программирования свойства функций могут от" личаться. Не вдаваясь в подробности (все"таки речь идет лишь об алгоритмизации, а не о программировании), будем считать, что при решении примера 5.1 (вариант 2) использована «функция» с возвра" 27
2 2452 55755 5 2 5
2 2452 585 2 8 29343 5
123245
123245 9123 6795
2 4 534
2 41 34
6758121 3 1
5 67567892 823
9 7 79123
2
2
2 4 534
91234679
1
2
69758125 3 1
1
1
12
2
8
679123
5
1123467 8 21343 5
69758 211233
55
5123 41 8125343 5
697581251233
5
5
Рис. 5.2. Схемы алгоритмов решения примера 5.1 (вариант 2)
том значения посредством ее имени. В этом случае действие, отобра" женное в блоке 7 рис. 5.2 (в схеме алгоритма подпроцесса Maximum), является обязательным для корректной работы «функции». 28
Рассмотрим пример, иллюстрирующий другие возможности ис" пользования подпроцессов. Пример 5.2 Ввести значения элементов двумерного массива Am´n. Элементы массива Bm´n вычисляются по формуле:
bij 1 sin(i) 2 cos( j) , i 1 1..m , j 1 1..n . Найти значения произведений элементов каждого из массивов на скаляр 0,75 (массивы A1 и B1 соответственно). Вывести промежу" точные и окончательные результаты расчетов. Р е ш е н и е . Перед составлением схемы алгоритма решения зада" чи произведем небольшой анализ. Во"первых, будем использовать подпроцесс, осуществляющий умножение матрицы на скаляр. Во" вторых, подпроцесс условно отождествим с понятием «процедура». Под этим понятием будем понимать подпроцесс, возвращающий зна" чения, указанные в списке формальных параметров подпроцесса. Имя подпроцесса в этом случае играет роль лишь ссылки на этот подпро" цесс. Схемы алгоритмов основного процесса и подпроцесса приведе" ны на рис. 5.3 и 5.4 соответственно.
123245 2 3 453
4
a
4 3 458
6758 11 2 5 676781229 6142 4
2
4
2 3 453
4 3 458 69758 15 2
4
12
44
4
4 4
2 938711 3 8 12 a
4 3 458
69758 11
2
123
123
2 3 453
4 4
123
4
4
4
4
2
938715 3 8 52
2 3 453
4
4 3 458
69758 15 2 12
4
2
5
Рис. 5.3. Схема алгоритма основного процесса (пример 5.2)
29
2 9 4 5
678792 5
1 239
1
1 232
34 51 6 3 51 78
6
1
7
5
8
12345
Рис. 5.4. Схема алгоритма подпроцесса Umn(Z,m,n,S,Z1) (пример 5.2)
На рис. 5.3 и 5.4 введены следующие обозна" чения: Umn – имя подпроцесса умножения матри" цы на скаляр. Z, m, n, S, Z1 – формальные пара" метры, где Z – исходная матрица; m и n – размерно" сти матриц; S – скаляр; Z1 – результирующая мат" рица. На рис. 5.3 в блоках 13 и 19 показаны ини" циации подпроцесса Umn с разными фактически" ми параметрами. Применение подпроцессов является наиболее предпочтительным, так как позволяет, во"пер" вых, исключить повторяющиеся однотипные дей" ствия и, во"вторых, структурировать саму зада" чу, что обеспечит в дальнейшем при программи" ровании задачи построение программы по частям как здания из готовых блоков.
6. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ ЛАБОРАТОРНЫХ РАБОТ В рамках данной дисциплины предусмотрено выполнение четы" рех лабораторных работ: · № 1 – «Ветвящийся вычислительный процесс». · № 2 – «Обработка числовой последовательности». · № 3 – «Обработка массивов данных». · № 4 – «Обработка массивов данных с использованием подпро" цессов». Цель работ: а) ознакомление с приемами и методами составле" ния схем алгоритмов решения типовых вычислительных задач; б) приобретение практических навыков алгоритмизации предлагае" мых к рассмотрению вычислительных задач. Содержание работ: а) описание задачи; б) построение схемы алгоритма (алгоритмов) решения задачи в соответствии с задани" ем; в) составление отчета о работе и его защита. Содержание отчетов: титульный лист установленного образца; задание на лабораторную работу; схемы алгоритмов в соответствии с ГОСТом. Отчет оформляется на листах формата А4 (297´210). Под" готовленный отчет защищается и сдается преподавателю для полу" чения зачета по работе. Защита отчета включает в себя ответы на вопросы по теме лабораторной работы. Задания к лабораторным работам № 1–4 приведены соответствен" но в табл. 6.1–6.3. 30
31
1
9
8
7
6
из A, B, C, D, меньших 0.5
p 1 en , где n 6 кол"во
p15
4 A, если min(C,3) 3 0, 7min( A, B 6 C) 6 иначе
4 A 2 B 2 C, если D 2 1 3 0, x15 7min( A 2 B, D) 6 иначе
x15
A, B, C, D
A, B, C
A, B, C, D
A, B, C, D
A, B, C
A, B, C, D A, B, C, D
p 1 min( A, B, C, D) 6 1,5 p 1 max( A, B, C) 6 D
3 4
4min( A, B), если C 3 0, 7max( A, B, C) 6 иначе p 1 min(max( A, B, C), D)
A, B, C, D
p 1 max( A, B, C, D)
2
5
A, B, C, D
22
21
20
19
18
16 17
15
14
1
1 96 9366 2345 3673
x 1 max( A, B) 2 min(C, D)
839365
1
1
1 2345 3673
равных 1 0 среди A, B, C, D t 1 A 2B2C2 D
x 1 en 1 t , где n 6 число
жительных среди A, B, C, D
p 1 en , где n 6 число поло"
x 1 A * B * min( A, B 6 C, D)
4min( A, B, C), если D 1 0, 7max( A, B, C, D) 6 иначе p 1 A 2 B * min( A, B, C) 6 C
x15
11231241252
11231241252
11231241252
11231242
11231241252
11231241252 11231241252
11231241252
4 A 2 B, если C 3 D, p15 7min( A, B, C) 6 иначе
p 1 max( A, B,min(C, D)) x 1 max(max( A, B), C, D))
11231241252
96 9366
Таблица 6.1
x 1 min( A, B, C) 2 D
839365
Учебные задания к лабораторной работе № 1 «Ветвящийся вычислительный процесс»
32
1
A, B, C
A, C
11231242
p 4 A * B * C 9 min( A, B)
22, если A 1 0 и C 5 0 3 n 4 61, если A 4 0 и C 1 0 30 в ост. случаях 7
2 A, если min( A, B) 1 0 p46 7max( B, C), иначе
12
13
A, D
11
33 в ост. случаях 7
25
25
24
23
1
1 96 9366 2345 3673
21, если A 1 0 и D 1 0 3 n 4 62, если A 5 0 и D 5 0
839365
10
1
1 2345 3673
x 4 A 8 B * C 9 max(C, D)
x 4 A 8 B * C 9 max(C, D)
t 4 A 8B9C8D
цательных среди A, B, C, D.
x 4 en 1 t , где n 8 число отри"
p 4 B 8 C * max( A, B, C) 8 5
839365
A, B, C, D
A, B, C, D
11231241252
11231242
96 9366
Окончание табл. 6.1
2
33
12938695338395 3849566 213344155664217776
75 5
? ?? ??12345 ???? ??????? ? ????? ? " 78754 8 98 7 ?????? ? ??????
866966 666611 66 566766 6 1
?12345 ?? ?? 75 5
????????????78 5 ??????" ?? ? 4"? ?????? 9 4 98 7
(21)k 2 2 x 12k pk 11 2 (k 1 3)!
2
12113344155664217776 4min(a,b), если a 1 1 8 c 2 2, 2 p56 7min(c,d) 2 иначе, 12113344155664217776
866966 66661166 566766 6
4max(a, b), если a 1 b 1 d 8 c, p56 2 7min(c, d) 2 иначе,
? ?? ?? ???????????? 12345 75 5 ?????
? 45 98 7 6"? ??????
( 21)1k p 1k (x 1 2)k 11 2 (k 2 1)!
2
1
8669661 66566766 6
1293839681566 213344155664217776
75 5
? ?? ??12345 ??????????? ? ????? ?" 74 524 8 98 7 ?????? ? ??????
1
8669661 66566766 6
1
8669661 66566766 6
129 3869538 9 3839566 213344155664217776
29 ????? 5???? ?12345 ?? ?? 292 max ?5min 98 7 ??????
(21)k p 1k (x 2 1)k 2 k!
2
12113344155664217776
2
k 21
1
866966 666611 66 566766 6
4min(a 1 b, c 2 d), если a 3 c, 2 p56 70 2 иначе,
67859 4 7 ? ?? ??12345 ? ??? ?????? ???? ??" 74 524 8 98 7 ?????? ? ??????
(21)k 11 p 12k xk 21 2 (k 1 1)(k 1 1)!
(21) e (x 1 p) 2k(k 1 1)!
k 1k
(11)k e 12 pk (x 1 1)k 2 (3k 1 2)!
2
82
12
4 98
8
64 7 88
78 879 4 4 6789
47 5 7 27465 9 12345 6789 11 123234555346
«Обработка числовой последовательности»
Учебные задания к лабораторной работе № 2
Таблица 6.2
34
p2
(11) 2k 21 x 2k (2k 1 2)!
? ?? ?? max 12345????? 24562???? 6 5??????" ?? ? ??????
4524
? ?? ??6 ???????258 45 6 ???? ? ??? ??" 12345 ?? ?? ???? ?????? 6
(11)k 1 2 x 2k ( p 1 1)k k(k 1 1)!
11
12
?12345 ?? ?? 24782 min ????? ?????? 6 5 ???? 6
( 11)k 23 ln2k | p | xk (k 2 2)!
10
a, b, c, d, x0, h, m, n
4min(a, b, c), если a * b 3 d, p56 7max(b, d) 1 иначе, x=x0+(i–1)h, i=1..m
a, b, c, d, x0, h, m, n
a, b, p0 , h, m, n p=max(a+b,c–d,5.1), x=x0+(i–1)h, i=1..m
x=min(a,b)+(a–b)*cos(a+b), p=p0+(i–1)h, i=1..m
x=max(a,b,c)+a*cos(a–c), p=p0+(i–1)h, i=1..m
a, b, c, p0, h, m, n
6 5 ???? 6 ?12345 ?? ?? 24562 max ????? ???? ??
(11)k 11 e 2 k 1 P k!k
|x| 1
9
x=x0+(i–1)h, i=1..m
a, b, c, d, x0, h, m, n
4max(a, b, c 2 d), если a 3 c 1 1, p56 71 1 иначе,
? 12345 ?? ?? ? 5 64
??? ?????? ??????, 12 ?8 5 ???? ? ?231
sin(x) 2
8
(11)k e 22 pk 2k(2k 1 2)!
12
7
a, b, p0 , h, m, n
4 98
x=min(a,b)+max{(a+b),cos(a–b)}, p=p0+(i–1)h, i=1..m
64 7 88
8
?12345 ?? ?? ??? ? ? ???????? 67887 9 6 5? 3"? ?????? 4
(11)k 1 2 p 22kxk 21 (k 2 3)!
78 879 4 4 6789
46 4 224 9 12345 6789 11 12323444345
Продолжение табл. 6.2
35
17
( 11) x (2k)! k
? 12345 ???? 12561 max ????? 67895 ??????? 884? ?????? 8
? 12345 ???? ???? ??????? ? 84 ????? ?
7589858 8 ??????
( 11)1 k e 1 pk 7 ln | x | (2k 1 1)k !
16
p2 1
? ???? 7589858 ???? ???????884 ? ?????" 12345 ?? 8 ? ??????
(11)11 k p 1k k !(k 7 1)
cos(x) 1
15
18
? 12345 ???? ??? ? ? ????? ?????? 6 84? 8
(11) 12 2 k p 1 k 21 7 2x 2k(k 1 1)!
14
1 k 23
? ???? ??? ? ? ??????? ? ???" 12345 6 ??? 884 8
(11)2 1k xk 1 2 1p k(k 7 3)!
k 21
? ?? ?? min12341 ?????67895 ????? ? " 12345
548 8 ?????? ? ???? ??
(11) 1k 2 2 x 12k pk 12 (2k 1 1)!
13
78 879 4 4 6789
46 4 224 9 12345 6789 11 12323444345
x=max(a,b)+min(c,d), p=p0+(i–1)h, i=1..m
a, b, c, d, p0 , h, m, n
a, b, c, d, p0, h, m, n
3min(a 7 b, d 1 c), если b 2 c 7 2, x45 , 61 7 sin(a) * d 1 иначе, p=p0+(i–1)h, i=1..m
a, b, c, x0, h, m, n
a, b, c, d, p0, h, m, n
a, b, c, p0, h, m, n
a, b, c, d, p0, h, m, n
4 98
p=min(2a,b–c)+a*max(a,c), x=x0+(i–1)h, i=1..m
x=max(a,b,c,d)+a–b*c, p=p0+(i–1)h, i=1..m
x=max(a,b,c)+min{(a–b),c)}, p=p0+(i–1)h, i=1..m
p=p0+(i–1)h, I=1..m
3max(b, c, d), если sin(a) 2 0, x45 6max(c, d,9) 1 иначе,
64 7 88
8
Продолжение табл. 6.2
36
(11)k x21k 1 sin( p) k(k 1 1)!
(11) 1k x 1k ( p 1 1) 2 (2k)!
(11)11 k x 12k 21e p 21 (2k 1 1)!(k 2 1)
20
21
22
9p 1
( 11)1 k e 12x k !(2k 1 1)
? ???? ??????? ??? ? ? ??? ??" 12345 678988 275845 868 ????548 ????? ? ?????? 8 ? ???? ??
? ?? ?? ??? ? ? ????? ?????? ? ? 12345 6 548 ??????
8
(11)k 12 x 1k 23 2 3p 2k(2k 1 1)!
24
25
? ?? ?? ??? ? ? ????? ??????? ? 12345 6 475248 ??????
8
k
(11) x 1 cos( p) (k 2 2)k !
? ?? ?? ??? ? ? ??????? ? ? ?" 12345 6 87 5 ???????? ?????? 6898
8
p=max(2a,b–2,c+3)+min(a,c), x=x0+(i–1)h, i=1..m
x=max(a,b,c,d), p=p0+(i–1)h, i=1..m
x=max(a,b)*min(a,b,c), p=p0+(i–1)h, i=1..m
x=x0+(i–1)h, i=1..m
a, b, c, x0 , h, m, n
a, b, c, d, p0 , h, m, n
a, b, c, p0 , h, m, n
a, b, c, d, x0 , h, m, n
48min(b, c, d), если ln a 3 2, p56 87max(11, c, d) 1 иначе,
x=x0+(i–1)h, i=1..m
a, b, c, d, x0 , h, m, n
p56
4min(a,b, c, d), если a 2 b 3 1, 7max(b,d 2 2) 1 иначе,
?12345 ?? ?? 12341 min ????? 67895 ??????? 8 84 ? ??????
8
a, b, c, d, p0 , h, m, n
x=max(a+1,b–2,c+d,5.1), p=p0+(i–1)h, i=1..m
12561 67895
84 ? ??12345 ?? max ????? ????? ? ???"
8 ???
a, b, c, d, x0 , h, m, n
3265
p=min(a,b)+max(c,d), x=x0+(i–1)h, i=1..m
18859 7 3455
12341 67895
84 ? ??12345 ?? min ????? ????? ? ???"
8 ???
23
5 1k
(11)k 12 sin(2 p)x2k (k 2 1)!
19
123456278954 239 1 4527 78 1 6 2829 898 45 21 23434555416
Окончание табл. 6.2
37
A515
3
1
4
где
где
где
B414 ,
i 2 1..5
где
bi 2 sin(ln(i) 6 cos(i)),
B5,
bij 2 5
3cos(i 6 j), если i 8 j, 7sin(i 1 j) 1 иначе, i 2 1..5, j 2 1..4
B514,
i 2 1..4, j 2 1..4
30.5, если i 8 j, bij 2 5 7sin(i 1 j) 1 иначе,
B414,
37 76 7899
34aij 1 aji , если i 2 j, A414 bij 2 5 47aij 6 aji 1 иначе, i 2 1..4, j 2 1..4
A514
2
1
A414
1
8 1 12341 858 536 7899 93 848
3439924
3439923
1937385 848
Таблица 6.3
? ? ??????? ? ????? A (SpA) ? B (SpB). 76789 645???? 837 1 1 1 7 3 1 3 283 " 4 74 764 74 ? ????????? ? ?????? A1, ?????? ?? ???????: 837 ? ? ??? ???? 645 ? ? 837 ?????" 1234546789 837 1 4375 7! 67 3467 ? 63 ?????? ?? ??? ????? ???? SpA> SpB ?? A1=SpB1A, ????? –
1 75 3 8 1 8 311437
4 1 8 1139 ?????? ? ?????? A1=SpA1B. 487
3345 145 3451 ? ? ?????: B, SpA, SpB, A1 873567364 4 8 837 1515671237 35 " 4 74 #7 7 ? ???? max ???? ???? ? ????? A (maxA) ? B 837 64 1567328376789 837 64375 7! ? ? ??? ???? 69 ? ???? ? ??" (maxB). ? ? ??????? ? ?????? C, ?????? ?? ??"
63 4 8 67
34673567175673438 6811567143 ? ?????? ??? ??????? ?????: ???? maxA>maxB, ?? C=A1maxA, ???" 7
4 683156739 ?? ?????? ???? ???? ?? – C=B 1maxB. 487
33455671455673456 ? ????????" 12345464 74 ? ???????" ? ????????? ???86$ ?? ??????? ? ?????? A, ??" "2354 74 1234546789
43 837 143543 $ 7 86$ ?? ??? " 43 ??? ??? ??? 4???? 353 283??? 1%3 789 ?? 64 4 8 ??? min31???? (JM). ?88 ? ???86$4 ??? ????2 ???
$68 ??????? 83743 ????? ????" 754 7 1 83 "235789 7 1 7 ??????? ? ???? ? ?????? A1. ? ?????????? ? ??"!
4 7 64 543 4 ?? ??? ? ???" ? ?????? , 3 ???? 2 $ 7
$68 64 4 8 7 53 64 4 8 A1 ? B ?? ??? ?????!
4 7 ?????? ??? ? ?????" 4 8 ????? ???" ?????? ?" 1 7 1 7 3 84884
28 ??? ???? ????? (? ?????? A2 ? B1 ? ????? ? ??? 487
3345451 451453 ? ????????? ??? ??? ????? ? ????? 1234546789
43 83 837 1 1A(IA) 21237 ?3B 87 87 243 ?????" 7 243 7 (IB), ?????? ?? ?? max64 4 8 ???? ???? . ? ??? 123 243543 7 5673 8367 ? ??? ? ???????" 2645 4 21IA>IB, 923438 7 ?21IA"? ????" 2645 4 ??2 4 89 ??? ????? 48 7 ? ?????3 ? 1"? ??? ? ?????? ??? ?????? 64 837 8374A,????? 437
4 7 23?????? ?? ? ??????? – 1"? ? IB"? ? 64 C ??????, 837 8374 31 837 ? ?????? B (? ?????? C ). 1283487 3343
214523456
95358 8488
Учебные задания к лабораторным работам № 3 «Обработка массивов данных» и № 4 «Обработка массивов данных с использованием подпроцессов»
38
где
A514 bi 1 sin(i) 3 cos(i), i 1 1..4
7
1
8
A4
где
где
41 3 2 j, если i 7 j, A515 bij 1 5 61 2 j 2 иначе, i 1 1..5, j 1 1..5
B515 ,
B4 ,
i 1 1..4, j 1 1..4
93 848
3439924
3439923
1937385 848
? ?????????" !45 ? ???? ??" !9 957 9 ?? ???? ????? 57 4 ? ??? 7 4 ????"4 6997 ? ????? ? ? ? 2?? ? ????" 5 39724 635 9 4 4 939724 ??????? ? ? 939 3 ?? , 9 4 ??? ???? ? ? 6997 ?????? ?" 5549 ? ?????? ? ?? max
? ? ??????? ???? ? ?????? A (SpA) ? ???? ? ??" 123456478 569
7 42 1 1231 234 569
7 4 4 123456949 ? ? ???????? 123456949 ? ? ?????" B (SpB). ? ? ??????? ? ? ????31????? 2???? 451234 253123456478 5??? 6997 223 52 4 ??? 69 ? ?4 ???" 569 ???
????? 7 4 4
7 7 4 4 7 42 1639564A,23162347 464 7 42 457 B97 (S) ? ?????? ???? SpA>SpB, ??? ? ?????? 2 ? ????? ? ??" 2?????????? 4 39 5 – ?????. ???? ? ?????? 129574 8347523175234752 ? ? ?????: B, SpA, SpB, S
? ???? ??? ?? ?????? Imax ? ?????? A, ?????" 74 9 57 4 9 3 7 42 1635 9 4 ?9?? ?? max ???? ???. ? ? ?????? ??? ?????? ? 39 369975312 96478 7 57 554 A1. ? ?????????? ????? ? ? 18? 53????? !9 957 478 957 4 ? 554 " 18? ??????? 454 A1 ? B ???? ???? ?4????? ? ? ? ??????? 69972 5 39724 939724 9 4? ? ??" 197 2 4 48 5797579 25 ? ???? ?1
(??????? A2 ? B1 ??????????????). 129574 83 9 7547518751 7548 ? ? ?????: Imax, B, A1, A2, B1
T
? ? ??? ??????? ? ????? ?? ???? ????? ????" 3949 123456949 4 78 554 48 B1 4 6997 6 394 ??? ????????? B. ? ?????????? ? ? ?????"
4 64 7 42? ?????? 453 3478 5542 1? 4??" 9 ? ????????" 964342 9 554 48???? 9 394 6997 A ? B12 4 ? ??????? ??? ????? ???????? ??? ?????" ??? ????? ??" 1 5542 18 (? 4 4
5797579 253123456478 ???? ????? ?????? A1 ? B2 ??????????????). ??? ????" ???? ? ?????? 3949 964342 918 14 15 ???? C ? ? ??????? ???????? ???????? C=A11B2 . 129574 83475487518754 759 ? ? ?????: B, B1, A1, B2, C
? ? ?????: B, A1, B1, C
? ?????????? ? ?????? B ? ??????? ??????" 3949 123456949 3478 5542 1 4 4A ? 9 57 4 ? ? ?????" 9 394 699731???? 5542 18(?4?????? 48 579757 4 ? ????????" 394 ????? ???????? ????? A1 ? B1 ??? ???" 9 253123456478 3949 49 94 39 3 ??? ????" 49 94 ??????????????). ? ? ??????? ???????? ?????" 554 ????? 9 6997 554 185 39 6997 554 48 ? ?????? ??????? max ???? ???? ? ?????? A1 ?? min ???" ???????" 11 253 ? ??? ? ?????? B1 (? ). ? ?????? 129574 83475187548759 ????? C
95358 8488
41 3 sin(i 3 j), если i 1 j, bij 1 5 61 2 cos(i 3 j) 2 иначе,
где
6
B414 ,
i 1 1..4
A4
bi 1 sin(ai ) 2 cos(ai ),
B4 ,
37 76 7899
5
8 1 12341 858 536 7899
Продолжение табл. 6.3
39
где
где
1
12
A616 bij 3 i 7 cos(i 8 j),
где
i 3 1..4, j 3 1..4
A414 bij 3 sin(i) 5 cos( j),
B414 ,
i 3 1..6, j 3 1..6
где
11
B616 ,
i 3 1..4
A4
bi 3 (51)i 7 ln(i 8 1.5),
B4 ,
i 3 1..4, j 3 1..4
20, если i 1 j, A414 bij 3 4 61 5 иначе,
B414 ,
37 76 7899
10
9
8 1 12341 858 536 7899 93 848
3439924
3439923
1937385 848
54 925 523 (? 8 8 58 ? ????????" 578 58 ? ? ?????" ??? ???????? ???? 1 ????? ?????? 2 5 A1 ? B1 98 ??" 28 5 9 28 53 67898 4 15925 18 5238 ??? ????? ??? ?????" ??????????????). ? ? ??????? ??? ? ? (S) max 925 2 4 844 8
671 5754 99 15 9 612341 ???? ????? ? ??????? A1 ? B1. ???? ? ?????? ??? S 67898 4 925 18 S52387 ? ? ?????: B, A1, B1, 84591352185238529 ? ???? ??" ? ?? ??? ??? ?? ? ????? A ? B ????? ????????" 8 842 2 128 58 !7 23 5 924 5 1 5 3
2345 7584 ??? ????" ?? ???? ?????, ? ???? ?? 0.5 (NA ? NB ???????"4 924 5 7584 2 ? ?????????" ?????? ???" 67898 4 8198 "515 1 52 3 4 844 8
671 ???????). ? ?????????? ? ????? ? ?????? ? ???" 8 ?? ????? ? 67898 4 ? ????? ? 8 842 54 984295 4 5 84 95 5 884
924 58 81 ?? ? ? ? ??????? ? ? ??? ???? ? ? ? ?????? A, ? ??????, ? ?????? 98 "5
95
98 295 924 58 1 81875 14 3815 ???? NA>NB, ? ? B – ????? (? ?????? C). ? ???? ?? ?3??????: 5 2815B,924 52 6671 NA, NB, C 0.5 845 91352 152 3526 ? ???????? ? ?????? B1 ?? ? ?????? B ????? ? ???? max 5 12341 4 54 924 5 38???? 5 924 5 3 489 8 ?4 8 58 ???????????? min ???? ? ??? ??? ?????? 67898 42 924 5 38 ???? ????
842 5 12 167898 42 23 4 8 678
???? ????? ??????? ?????????. ? ???? max ? ????????? 72 3 ??????? 98 49 72 3 52 ????????? 2757112345 67898 4 ? ?????? B1 52 275 ???? ??? ??????? ? 12341 ? ?????? A ????????? 72 3 924 58 1 5 1615 924
924 5 (MDA)52 ? ? 275 ? ?????? B1 (MDB1). ? ??????
58 38 5 38 67 MDA, MDB1 ? ? ?????: B, B1, 845913523852 152 38
? ?????????? ? ?????? A ? B ? ??????? ??? ??"
? ???? max ???? ???? ? ? ??????? A ? B (maxA 9 8 58 5 12341 12345 1234167898 4 924 52 1 523252341 5 ? maxB ??????????????). ? ??? maxA>maxB 924 5 ? ? ??? 2???? 67898 42 ? ???? max 2343 4 844 8
671751234142343524 ? ?????? ?? 924 58 ???? ???? ? ?? ?? ??????? C=A1B, ????? ?? ??????? 924 5 5754 ? ?????? ? ?????? C=B1A. 67113815 28 5754 673117 845 912341523522343526 ? ? ?????: maxA, B, maxB, C
95358 8488
Продолжение табл. 6.3
40
где
B414 ,
где
i 3 1..5, j 3 1..5
A414
16
где
где
2 aij /2, если i 9 j, bij 3 4 2
6aij 5 иначе, i 3 1..4, j 3 1..4
B414 ,
i 3 1..4, j 3 1..4
2i 8 j, если i 3 j, bij 3 4 6i 5 j 5 иначе
B414 ,
i 3 1..4, j 3 1..4
A414 bij 3 i 7 sin( j),
A4
1
B515,
37 76 7899
2ln(i), если i 1 j, A515 bij 3 4 6ln( j) 5 иначе,
15
14
13
8 1 12341 858 536 7899 93 848
3439924
3439923
1937385 848
? ????????? ??? ??? ???????? ? ????? A (JA) ? 2354 74 ? ???????" 12345464 74 1234546789
43 86 837 1 121237 3 B (JB), ?????? ?? ?? max ???? ???? . ? ? ??" 5 43 ??? ???
43 ??? 86
123243543 73567364 4 88313 789 87 ? ??? ??? ??????? ? ???? ????? ???? ? ? ????" 7 ? ????????" ??????? ?43 8374 86 754 5 43 7 7 ??? ????? ??"543 4 ??? ? ??????????? ?? ? ??????? ??????????? ? ??????, 235789 7 2354 3 8 7
4 7 64 4 8?" ???????? ???? ????? (? ?????? A1 ? B1 ????" ???? ? ??????5673 ?????? 64 4 8 31 7 14 7 34 84884
28 ??????????). ? ??? max 487 9321563562356145634 ? ? ?????: JA, B, JB, A1, B1 ???? ??? "434 4 74 764 74 1234546789
43 86 837 3 43 ? ? ?????" ? ????????? ??? ?? ??????? ? ?????? B, ??" 837
434 86
543 4 35 3 3123 283!67 237
438?? ???? ?? ??? min64 4 8 ???? ??? (JB). ? ??? JBIB, ??? ??????? ?????? C 4-34.3%6 ,-4.6 ? ???????" ,-4.69
3548 943+??58946# 8 6 912? 3.4
?? ? ?????? A, ? ??????? ?????? ? ??? ???? IA ??? ??? ??? 5937 3548 943+6 /8602725928 6 9 33979 973 4 943+6 ? ????????" 58946#12 ??????????? ?? ??? ????? ???????? ???? ??" ?????? " 6 8 912 2345643789 58946#$ 1 6 58946 58946# ??? ???? ??" 3.4/8 ? ???? ???????? C ?? B, ?????????? ? B ? ?????? , #???. 8 127 +39343 943+8 35435 8 $-34.3%
??? ?????? 7259 ?????? ?" ?? ??? ????? ???????? ???? ????? IB ??????. 8?-3? ?????: $17862 8%6 59374238% -3
? ?????? ? ?? min B, IA, IB, C $%69 1 6 912$-34.3%67 7 9 -3 $17862 ???? ??? 8%6 5937 9 943+$4 '7 9629 48 49 41 1 1 '%6 6 ? B1=B ? ? ??? ??????? ? ?????? A1=A 1. ? ??????" ? ? ?????" 12345643789
58 67 838 6 939 42 . ? ? " 342548 -36
??????? ???? ??????84 A1(SpA1) ???? ? ??" 43786 ????????? ??? ?????" 589 8%6 '%6 69
. ?58946# 8 26? . .8 +78.4893 ???? B1 (SpB1). ? ??? SpA1(SpB1>0, ?? ????? ? ?????? ??? ????? 58946# 949 42" 6 89 1293 46# 58946# 42453/6 2. ? ? ??? ?" ?????????? 1A,1????? – C=B 1B1. ? ?????? C=A1 896 58946#$ 138 81268%
139 194 58946# ??? ? ????? ? ?????? ? ? ?????: B,A1,B1,SpA1,SpB1,C '7 96 29 48 49 48 49 41 1
95358 8488
Продолжение табл. 6.3
42
A4
A514
A318
21
22
23
1
A5
20
8 1 12341 858 536 7899
где
где
где
где
i 1 1..8
bi 1 sin(i 6 cos(i)),
B8 ,
43 3 j, если i 1 j, bij 1 5 7 sin(2 3 i) 6 иначе, i 1 1..5, j 1 1..4
B514 ,
i 1 1..5, j 1 1..4
bij 1 sin(i ) 2 a j ,
B514 ,
i 1 1..5
bi 1 sin(ln(i )),
B5 ,
37 76 7899
93 848
3439924
3439923
1937385 848
? ? ????? : B, Imin, A1, A2, B1
???? ? ? ?
???? ?? ?
1234563789
8 1123456 85 64 23456 85 61 123456378 "788 1234563789 8 "788 785 4 93 78 93 2312452 98 1 363 43#3 93 78 93 12 98 785 93 8 1 3314528 3142556293 23451 8 ? ? ???????" 93 8 93 63789
81631 8 93 !314255 2345693234563789 62793 8 1 628 1 ?? ? ??? ?? ??" 363 43#3 93 !23456 7938167 8 7 98 9336 7 8 98 6 93 8 336 45 ? ??? ? ???? ?? 8 93 8 6736 3 43#3 "98 726871287318762788 36 8 ? ? ????? : B, A1, SA, B1 ? ?? SB $24689
948% 662?364! & ? ??????? 3 4 ?? ? ??9438 ?? ????? ? ? ???? ? B, ?????" 1 3!8 "788 89 2 9 239
452$'34 89
9? ??? 943 86????" 54 ? ?? ?? min ???? ?? ? (IM). ? ? ????? ? ? ? ?? ?? ? ? 9
? ? ?? ???" 8 528 9 6293 7889 2 9 1 162 934 ? ? ? ???? ? ???? ?? C. ? ??? IM=4, ?? ?? ?? ?" ?? ????? ? ? ? ? ? IM 8 7 2 9 1 5 ??? ??? ?? ?? C1=IM 1 A, ? ? ??? – C1=IM 1C. "98 726879 87872 ? ? ????? : B, IM, C, C1 $24689
3 4 943 948% ( 391A42(IA) 8 ? 123456378 $2468 ? ? ??????" ? ??????? ?? ? ?? ??? ????? ? ? ????17 ? ?? 93 3 4 943??? 1 6B396 462364! &8( 9 8 (IB), ?????? ?? 28 2 ? ? max ???? ??52?? . ? ??? ?? ? ? ?? ? ? ???????" 8 948%62 9196 6293 '34 843 9 948% 8 1 62 IA