Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмізація та програмування.doc
Скачиваний:
31
Добавлен:
16.11.2019
Размер:
3.81 Mб
Скачать

5.1.4. Ітераційні циклічні процеси ( 5.6 )

Розв’язання систем лінійних алгебраїчних рівнянь з десятками та сотнями невідомих, пошук коренів алгебраїчних рівнянь високих степенів та коренів трансцендентних рівнянь, розв’язання систем диференційних рівнянь, інтерполяція та екстраполяція функцій, обчислення значень функції за допомогою рядів, інтегрування тощо — усі ці задачі розв’язуються за допомогою циклічних алгоритмів, що реалізують циклічні ітераційні процеси, для яких заздалегідь неможливо визначити кількість повторень циклу. Тому необхідно сформулювати умову виходу з циклу з використанням особливостей самої задачі. Найчастіше в умові виходу використовується задана точність обчислень саме тому, що в усіх цих методах рішення наближається до свого точного значення як завгодно близько. Точність наближення збігається з точністю обчислень.

Схему циклічного ітераційного процесу 5.6 зображено на рис. 5.15:

Розглянемо різні приклади циклічних обчислень.

Рис. 5.15. Схема ітераційного циклічного процесу 5.6

Приклад 1. Обчислити корінь р-го степеня х за ітераційною формулою:

уn+1 = (1/ р) [(p — 1)yn + x/ ynp-1 ],

де початкове значення у0 = х, а точність обчислень  = 0,001. Ідея таких обчислень міститься у тому, що, задаючи у0 , можна обчислити у1, потім у2 ... уn, уn+1 ... Цей процес можна виконувати нескінченно, але на якомусь кроці обчислень з’ясується, що різниця між двома сусідніми наближеннями стала меншою за , отже, вона стає несуттєвою для цієї задачі, процес обчислень можна припинити і вважати останнє значення у саме шуканим. Таким чином, можна побудувати алгоритмічний процес обчислення кореня р-го степеня (рис. 5.16). Оскільки немає потреби зберігати усі послідовні значення у1 ... уi, yi+1 ..., то можна спростити ітераційну формулу, а саме

у1 = (1/ р) [(p — 1)y0 + x / y0p-1]

Якщо необхідно обчислити значення деякої функції, застосовуючи її розклад у деякий ряд, то циклічний алгоритмічний процес будується з використанням . У таких випадках ряди повинні обов’яз­ково збігатися, тобто члени ряду зменшуються у напрямку від його початку. Отже, починаючи з деякого моменту, члени ряду стають меншими за , і їх можна відкинути та вийти з циклу за цієї умови.

Для обчислення кожного елемента ряду використовується попередній член ряду та деякий коефіцієнт d, який можна визначити, поділивши (k + 1)-й елемент на k-й.

Рис. 5.16. Приклад 1 ітераційного циклічного алгоритму 5.6

Приклад 2. Обчислити з точністю до  значення функції еx, використовуючи її розклад у ряд:

;

.

Поточне значення доданка суми позначимо ч ерез p (рис. 5.17)

Будь-яку функцію можна наближено представити у вигляді деякого ряду. Підставивши значення аргумента, знайдемо часткову суму ряду і вважатимемо її значенням функції від того самого аргумента з певною точністю наближення. Чим більша точність нам потрібна, тим більший відрізок ряду треба буде обчислювати.

Рис. 5.17. Приклад 2 ітераційного циклічного алгоритму 5.6

5.1.5. Складні циклічні процеси (5.7)

З алгоритмічних процесів згаданих типів можна будувати складні циклічні процеси із вкладеними циклами. При цьому кожний із циклів готується самостійно, зовнішній цикл повторюється певну кількість разів, а внутрішній — необхідну кількість разів для кожного значення зовнішнього параметра.

Загальну схему складного циклічного процесу зображено на рис. 5.18.

Треба зауважити, що як внутрішній, так і зовнішній цикли можуть бути параметричними та ітераційними, кожен, у свою чергу, — бути складним. Але вони повинні цілком вкладатися один в одний, ніколи не перетинатися частково.

Приклад 1. Дано матрицю А = (аij), і = 1, 2 ... n; j = 1, 2 ... m (або двовимірний масив) цілих чисел. Визначити кількість ненульових елементів у кожному рядку матриці.

Рис. 5.18. Схема складного циклічного процесу 5.7

Необхідно організувати n полів-лічильників (за кількістю рядків матриці), тобто масив R = (ri), і = 1, 2 ... n, обнулити їх. Зовнішній цикл матиме параметр і (лічильник рядків), внутрішній вкладений цикл — параметр j (лічильник стовпців). Перегляд (як і ввід матриці) відбувається по рядках (рис. 5.19).

Р ис. 5.19. Приклад 1 складного циклічного алгоритму 5.7

Цей алгоритм можна замінити еквівалентним, якщо сумістити процес введення з обробкою матриці (рис. 5.20).

Рис. 5.20. Приклад 1 складного циклічного процесу 5.7

(II варіант).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]