Розробка в середовищі Turbo Pascal програми сортування елементів, що знаходяться на головній діагоналі матриці
1. Постановка завдання
У курсовій роботі «Розробка в середовищі Turbo Pascal програми сортування елементів, що знаходяться на головній діагоналі матриці» ставляться кілька завдань.
Вихідними даними є масиви:
Матриця А - двовимірний масив.
Матриці B і Y - одномірні масиви.
Необхідно розробити алгоритми, блок-схеми і програмний код мовою Pascal для вирішення наступного завдання:
1) Вирішити лінійне рівняння AT AX=B
) Відсортувати елементи, що знаходяться на головній діагоналі оберненої матриці (ATA) - 1 спаданням.
3) Обчислити значення матриці Z=ATBTY
Для знаходження рішення поставлених завдань будуть використані такі математичні операції, як знаходження зворотної матриці, зведення матриці в ступінь, множення матриць, знаходження транспонований матриці.
Для виконання операцій з матрицями будуть використані стандартні можливості та інструментарій мови Pascal, зокрема це використання одновимірних і двовимірних масивів, циклів for ... do, використання функцій, оператора вибору, циклів if ... then, оголошення змінних різних типів та інші.
2. Опис алгоритму розв'язання задачі графічним способом
.1 Деталізація схеми алгоритму
Блок схема основної програми
Рис. 1. Блок схема основної програми
Деталізація укрупненої схеми алгоритму
В алгоритмі програми на малюнку 1 вирішуються кілька завдань.
) Реалізація діалогового інтерфейсу меню для взаємодії з користувачем. Вибір відповідного пункту меню запрограмований на клавіші F1 ... F4, це реалізовано за допомогою оператора вибору (селектора) case. Якщо значення селектора збігається з яким-небудь значенням в операторі case, то виконується гілка, що відноситься до даного випадку. При натисканні, наприклад клавіші F1 відбувається перехід в процедуру zadacha1 і т.д.
) Так як основне завдання поділена на три основних частини, то, відповідно, створені три процедури zadacha1, zadacha2, zadacha3. У кожній з них виробляються підсумкові обчислення матриць з виведенням результатів на екран.
Всі проміжні обчислення і допоміжні функції поділені на окремі процедури.
2.2 Блок-схеми алгоритмів
Рис.2. Блок схема процедури zadacha1
zadacha1 - процедура обчислення лінійного рівняння A ^ T * A * X=B та виведення на екран результатів обчислень. На екран виводиться значення матриці Х., j: integer - це змінні циклу .: Matrix44 - це двовимірний масив, тобто матриця 4х4: Matrix41 - це одновимірний масив, тобто матриця 4х1
Усередині процедури zadacha1 знаходяться 4 вкладених циклу і 1 цикл виведення матриці B на екран.
цикл: обчислення матриці A ^ T. Перед початком циклу йде виклик процедури Trans44 (A, M).
цикл: обчислення матриці A ^ T * A. Перед початком циклу йде виклик процедури PMatrix44 (M, A, M).
цикл: обчислення матриці зворотної (A ^ T * A). Перед початком циклу йде виклик процедури Obrat (M, M).
цикл: виведення матриці B на екран.
цикл: визначення значення матриці Х=((A ^ T * A) ^ (- 1)) * B. Перед початком циклу йде виклик процедури PMatrix41 (M, B, P).
Рис.3. Блок схема процедури zadacha2
- процедура сортування елементів головної діагоналі матриці, зворотної (A ^ T * A) спаданням. На екран виводиться значення оберненої матриці (A ^ T * A), її визначника і отсортированная головна діагональ матриці зворотної (A ^ T * A)., J, ni, nj: integer - це змінні циклу.
P: array [1..4] of Real - це одновимірний масив для елементів головної діагоналі .: real - це змінна масиву P [i] .: Matrix44 - це двовимірний масив, тобто матриця 4х4
Усередині процедури zadacha2 знаходяться 3 вкладених циклу, 1 цикл присвоєння масиву, 1 цикл сортування з умовою і 1 цикл виведення відсортованих елементів на екран. Всього 6 циклів.
цикл: обчислення матриці A ^ T. Перед початком циклу йде виклик процедури Trans44 (A, M).
цикл: обчислення матриці A ^ T * A. Перед початком циклу йде виклик процедури P...