- •Методичні вказівки до практичних занять з дисципліни
- •1 Спеціальні системи числення
- •Мета заняття:
- •1.2. Методичні вказівки
- •Додавання послідовних кодів старшими розрядами вперед у знакорозрядній системі числення
- •1.3. Контрольні запитання та завдання
- •2 Обчислення тригонометричних функцій методом волдера
- •2.1 Мета заняття:
- •2.2 Методичні вказівки
- •4.3 Контрольні запитання та завдання
- •5 Таблично-алгоритмічний метод обчислення функцій
- •5.1. Мета заняття:
- •5.2. Методичні вказівки
- •5.3 Контрольні запитання та завдання
- •6 Обчислення показникової та логарифмічної функцій таблично-алгорітмичним методом
- •6.1 Мета заняття:
- •6.2. Методичні вказівки
- •Введемо позначки:
- •6.3 Контрольні запитання та завдання
- •Перелік посилань
- •7.091501 – Комп’ютерні системи та мережі Упорядники: гусятін Володимир Михайлович
- •61166, Харків, просп. Леніна, 14
2 Обчислення тригонометричних функцій методом волдера
2.1 Мета заняття:
Вивчити основні етапи обчислень тригонометричних функцій методом Волдера при синхронній організації ітераційного процесу [2].
2.2 Методичні вказівки
Необхідно
обчислити тригонометричні функції
,
,
.
Для обчислень
і
використовуються
ітераційні рівняння
(2.1)
Для початку виконання ітераційного процесу необхідно задати початкові умови, які в даному випадку дорівнюють iпоч = 0; yпоч = 0; xпоч = 1/Cт; поч = ; поч = 1; i{0, 1, 2, 3, … , n-1}
Тут Ст – коефіцієнт деформації, що треба обчислити для заданого числа n – кроків ітераційного процесу за таким співвідношенням:
Ст=
(2.2)
При збільшенні числа кроків n ітераційного процесу зменшується відносна наведена похибка обчислень - . В нашому випадку (2.1) при використанні двійкової системи числення:
≤ 2-n (2.3)
Перед початком обчислень слід знайти константи arctg2-i і звести їх до таблиці.
Таблиця 2.1.
-
i
0
1
2
3
4
5
6
7
8
9
Arctg2-i
45
26,565
14,036
7,125
3,576
1,79
0,895
0,448
0,224
0,112
Значення
констант для приклада, наведеного в
таблиці 2.2, з урахуванням співвідношення
(2.3) варто обчислювати з точністю до
трьох значущих цифр після коми в градусах
кутової величини. Повний цикл обчислень
функцій
,
виконується в два етапи.
Перший етап. На першому етапі організується ітераційній процес для аргументу і на цьому етапі обчислюються коефіцієнти i {1}. При цьому в процесі обчислень значення i наближатиметься до нуля:
Розглянемо приклад: 0 = 30о; 0 = 1, iпоч = 0; n = 10.
При виконанні першого етапу доцільно зводити обчислення до таблиці 2.2:
Таблиця 2.2
-
i
0
1
1 = 30 – 45 = –15
-1
1
-1
2 = –15 + 26.565 = 11.565
1
2
1
3 = 11.565 – 14.036 = –2.471
-1
3
-1
4 = –2.471 + 7.125 = 4.654
1
4
1
5 = 4.654 – 3.576 = 1.078
1
5
1
6 = 1.078 – 1.790 = –0.712
-1
6
-1
7 = –0.712 + 0.895 = 0.183
1
7
1
8 = 0.183 – 0.448 = –0.265
-1
8
-1
9 = –0.265 + 0.224 = –0.0410
-1
9
-1
10 = –0.0410 + 0.112 = 0.0710
1
Вибір значення функції на другому етапі здійснюється за номером рядка, в якому на першому етапі було отримано найкраще наближення, в нашому випадку, до нуля.
Другий етап.
На другому етапі здійснюється обчислення функцій , . Для побудови ітераційного процесу використовуються коефіцієнти i, які були обчислені на першому етапі. При обчисленні другого етапу доцільно результати зводити до таблиці 2.3. Згідно з (2.2) обчислимо
Ст=1.647 при n=10.
Задамо початкові умови: xпоч = 1/Ст = 0.6073, yпоч = 0.
Таблиця 2.3.
i |
|
|
|
0 |
1 |
y1 = 0 + 0.6073·1 = 0.6073 |
x1 = 0.6073 – 1·0·1 = 0.6073 |
1 |
-1 |
y2 = 0.6073 – 0.6073/2 = 0.3037 |
x2 = 0.6073 + 0.6073/2 = 0.911 |
2 |
1 |
y3 = 0.3037 + 0.911/4 = 0.5315 |
x3 = 0.911 – 0.3037/4 = 0.8351 |
3 |
-1 |
y4 = 0.5315 – 0.8351/8 = 0.4271 |
x4 = 0.8351 + 0.5315/8 = 0.9015 |
4 |
1 |
y5 = 0.4271 + 0.9015/16 = 0.4834 |
x5 = 0.9015 – 0.4271/16 = 0.8748 |
5 |
1 |
y6 = 0.4834 + 0.8748/32 = 0.5107 |
x6 = 0.8748 – 0.4834/32 = 0.8597 |
6 |
-1 |
y7 = 0.5107 – 0.8597/64 = 0.4973 |
x7 = 0.8597 + 0.5107/64 = 0.8677 |
7 |
1 |
y8 = 0.4973 + 0.8677/128 = 0.5041 |
x8 = 0.8677 – 0.4973/128 = 0.8638 |
8 |
-1 |
y9 = 0.5041 – 0.8638/256 = 0.5007 |
x9 = 0.8638 + 0.5041/256 = 0.8658 |
9 |
-1 |
y10 = 0.5007 – 0.8658/512= 0.499 |
x10 = 0.8658 + 0.5007/512 = 0.8668 |
Відповідно
до результатів обчислень, що наведені
у таблиці
2.2, слід
результат обчислень у
таблиці 2.3 вибирати
по рядку i = 8,
тому
що на цьому рядку обчислень першого
етапу було отримано найкраще наближення
до нуля.
Таким
чином, маємо розрахункові значення
,
.
Значення
за калькулятором
y = 0.5; x = 0.866. Абсолютна похибка
обчислень:
,
.
Для обчислення функції використовуються ітераційні рівняння:
(2.4)
Як вхідні дані виберемо значення y = 0.5, x = 0.866, які обчислені за калькулятором для попереднього прикладу. Знайдемо кут , відповідає вибраним значенням y і x. Для побудови ітераційного процесу запишемо початкові умови iпоч = 0; yпоч = 0.5; xпоч = 0.866; поч = 0; поч = 1; n = 10.
Перший етап. Всі обчислення зведемо до таблиці 2.4:
Таблиця 2.4
i |
|
|
|
|
0 |
1 |
x1 = 0.866 + 0.5·1.0 = 1.366 |
y1 = 0. 5 – 0. 866 ·1.0 = –0.366 |
-1 |
1 |
-1 |
x2 = 1.366 + 0.366/2 = 1.549 |
y2 = –0.366 + 1.366/2 = 0.317 |
1 |
2 |
1 |
x3 = 1. 549 + 0.317/4 = 1.628 |
y3 = 0.317 – 1.549/4 = –0.0702 |
-1 |
3 |
-1 |
x4 = 1. 628 + 0.0702/8 = 1.637 |
y4 = –0.0702 + 1.628/8 = 0.133 |
1 |
4 |
1 |
x5 = 1. 637 + 0.133/16 = 1.645 |
y5 = 0.133 – 1.637/16 = 0.0307 |
1 |
5 |
1 |
x6 = 1. 645 + 0.0307/32 = 1.646 |
y6 = 0.0307 – 1.645/32 = –0.0207 |
-1 |
6 |
-1 |
x7 = 1. 646 + 0.0207/64 = 1.646 |
y7 = –0.0207 + 1.646/64 = 0.00502 |
1 |
7 |
1 |
x8 = 1.646 + 0.00502/128 = 1.646 |
y8 = 0.00502 – 1.646/128 = –0.00784 |
-1 |
8 |
-1 |
x9 = 1.646 + 0.00784/256 = 1.646 |
y9 = –0.00784 + 1.646/256 = –0.00141 |
-1 |
9 |
-1 |
x10 = 1.646 + 0.00141/512 = 1.646 |
y10 = –0.00141 + 1.646/512 = 0.00180 |
1 |
Другий етап. При обчисленні другого етапу скористаємось коефіцієнтами i з таблиці 2.4. Результати обчислень зведемо до таблиці 2.5.
Таблиця 2.5
-
i
0
1
1 = 0 + 45 = 45
1
-1
2 = 45 – 26.565 = 18.435
2
1
3 = 18.435 + 14.0362 = 32.4712
3
-1
4 = 32.4712 – 7.125 = 25.3462
4
1
5 = 25.3462 + 3.576 = 28.9222
5
1
6 = 28.9222 + 1.790 = 30.7122
6
-1
7 = 30.7122 – 0.895 = 29.8172
7
1
8 = 29.8172 + 0.448 = 30.2652
8
-1
9 = 30.2652 – 0.224 = 30.0412
9
-1
10 = 30.0412 – 0.112 = 29.9292
Відповідно до першого етапу результат слід вибирати на рядку i=8.
Результат розрахунковий = 30.0412, за вхідними данними = 30. Абсолютна похибка обчислень: = |30 – 30.0412| = 0.0412.
2.3. Контрольні запитання та завдання
1. Навіщо в методі Волдера введений коефіцієнт деформації?
2. Чи можна при обчисленні тригонометричних функцій застосовувати асинхронний спосіб організації ітераційного процесу?
3. Які константи використовуються при обчисленні тригонометричних функцій?
4. Що таке початкові умови і поясните їх вибір на основі векторної моделі?
3 СТРАТЕГІЯ ПОДВІЙНОГО КРОКУ ПРИ ОРГАНІЗАЦІЇ СИНХРОННОГО ІТЕРАЦІОНОГО ПРОЦЕСУ ОБЧИСЛЕННЯ ФУНКЦІЙ
3.1 Мета заняття:
Вивчити двокрокову стратегію при організації синхронного ітераційного процесу на прикладі обчислення експоненціальної та логарифмічної функцій.
3.2 Методичні вказівки
Експоненційна і логарифмічна функції мають гіршу збіжність порівняно з тригонометричними функціями. Тому при побудові ітераційного процесу використовується стратегія, за якої кожна константа в процесі обчислень застосовується двічі, тобто при виконанні двох кроків.
Стратегія подвійного кроку
Стратегію
подвійного кроку розглянемо на прикладі
функції
.
Для обчислення функцій
використовуються ітераційні рівняння
[2]:
(3.1)
В наведених рівняннях індексом k задається номер кроку, k{0, 1 … kмакс}. Як і в попередньому випадку, із зростанням kмакс зростає точність обчислень.
Індекс i визначає значення константи і пов'язаний з індексом k рівнянням
, (3.2)
де i {1, 2 …}; q = 2 визначають номери та число кроків, на яких індекс i не змінюється.
Перед початком обчислень необхідно розрахувати значення константи ln(1 + k·2-i) для k {1, -1}. Виконаємо розрахунок константи до значень i = 7 та зведемо результати до таблиці 3.1.
Таблиця 3.1.
i |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Ln(1 + 2-i) |
0.4055 |
0.223 |
0.1178 |
0.06063 |
0.03077 |
0.0155 |
0.00778 |
Ln(1 – 2-i) |
-0.6932 |
-0.2877 |
-0.1335 |
-0.0645 |
-0.03175 |
-0.01575 |
-0.00784 |
На першому етапі, під час обчислення ітераційного процесу для аргументу, величина k наближається до нуля.
Перед початком обчислень ітераційного процесу необхідно задати початкові умови, що в даному випадку дорівнюють: kпоч = 0; xпоч = 1; поч = φ; sign поч = sign φпоч. Приймемо поч = – 0.68. Тоді поч = –1; kмакс = 13.
Результати обчислень першого та другого етапів зведемо до таблиці 3.2.
Таблиця 3.2.
k |
i |
|
|
|
|
0 |
1 |
-1 |
1 = –0.68 + 0.693 = 0.0130 |
1 |
x1 = 1.0 ( 1 – 0.5) = 0.5 |
1 |
1 |
1 |
2 = 0.0130 – 0.405 = –0.392 |
-1 |
x2 = 0.5 ( 1 + 0.5) = 0.75 |
2 |
2 |
-1 |
3 = –0.392 + 0.288 = –0.104 |
-1 |
x3 = 0.75 ( 1 – 0.25) = 0.563 |
3 |
2 |
-1 |
4 = –0.104 + 0.288 = 0.184 |
1 |
x4 = 0.563 ( 1 – 0.25) = 0.422 |
4 |
3 |
1 |
5 = 0.184 – 0.118 = 0.066 |
1 |
x5 = 0.422 ( 1 + 0.125) = 0.475 |
5 |
3 |
1 |
6 = 0.066 – 0.118 = –0.052 |
-1 |
x6 = 0.475 ( 1 + 0.125) = 0.534 |
6 |
4 |
-1 |
7 = –0.052 + 0.0645 = 0.0125 |
1 |
x7 = 0.534 ( 1 – 0.0625) = 0.501 |
7 |
4 |
1 |
8 = 0.0125 – 0.0606 = –0.0481 |
-1 |
x8 = 0.501 ( 1 + 0.06250) = 0.532 |
8 |
5 |
-1 |
9 = –0.0481 + 0.0317 = –0.0164 |
-1 |
x9 = 0.532 ( 1 – 0.03125) = 0.515 |
9 |
5 |
-1 |
10 = –0.0164 + 0.0317 = 0.0153 |
1 |
x10 = 0.515 ( 1 – 0.03125) = 0.499 |
10 |
6 |
1 |
11 = 0.0153 – 0.0155 = –0.0002 |
-1 |
x11 = 0.499 ( 1 + 0.01563) = 0.507 |
11 |
6 |
-1 |
12 = –0.0002 + 0.0157 = 0.0155 |
1 |
x12 = 0.507 ( 1 – 0.01563) = 0.499 |
12 |
7 |
1 |
13 = 0.0155 - 0.00778 = 0.00772 |
1 |
x13 = 0.499 ( 1 + 0.0078125) = 0.503 |
13 |
7 |
1 |
14 = 0.00772 - 0.00778 = –0.00006 |
-1 |
x14 = 0.503 ( 1 + 0.0078125) = 0.507 |
Розрахунковий результат виберемо за рядком k = 13, де отримане найкраще наближення k+1 до нуля на першому етапі.
Отже, маємо: результат розрахунковий х = 0.507, за калькулятором х = 0.5066, похибка x = |0.5066-0.507| = 0.0004.
Модифікована стратегія подвійного кроку.
Для зменшення обсягу обчислень синхронного ітераційного процесу стратегію подвійного кроку модифікують таким чином. Другий крок на першому етапі використовується тільки в тому випадку, якщо цей крок наближає до мети, тобто до заздалегідь відомого числа, наприклад, нуля або одиниці. В протилежному випадку, дані другого кроку не використовуються для подальшої побудови ітераційного процесу, а використовуються лише дані першого кроку. На другому етапі в такій ситуації другий крок минається.
Модифіковану стратегію подвійного кроку розглянемо на прикладі логарифмічної функції.
Логарифмічна функція, як і попередня експоненціальна, має гіршу збіжність порівняно з тригонометричними функціями. Тому в загальному випадку для обчислення логарифмічної функції за аналогією з експонентою, при побудові ітераційного процесу використовується стратегія подвійного кроку.
Для
обчислення функції
використовуються ітераційні рівняння
[2]:
(4.1)
Обчислення індексу величини кроку ітерації – i виконується відповідно до рівняння (3.2). Початкові умови визначаються таким чином: xпоч = x; yпоч = 1-x; поч = 0; sign поч = sign yпоч. На першому етапі, в процесі обчислення ітераційного процесу для аргументу величина xk наближається до одиниці [2].
Таблиця 3.3.
k |
i |
|
|
|
|
|
0 |
1 |
1 |
x1 = 0.5066 (1 + 1/2) = 0.7599 |
y1 = 0.4934 – 0.50661/2 = 0.2401 |
1 |
1 = 0.0 – 0.40550 = –0.4055 |
1 |
1 |
1 |
x2 = 0.7599 (1 + 1/2) = 1.1399 |
y2 = 0.2401 – 0.75991/2 = –0.1399 |
-1 |
2 = –0.4055 – 0.40547 = –0.8110 |
2 |
2 |
-1 |
x3 = 1.1399 (1 – 1/4) = 0.8549 |
y3 = –0.1399 + 1.13991/4 = 0.1451 |
1 |
3 = –0.8110 + 0.2877 = –0.5233 |
3 |
2 |
1 |
x4 = 0.8549 (1 + 1/4) = 1.0686 |
y4 = 0.1451 – 0.85491/4 = –0.06862 |
-1 |
4 = –0.5233 – 0.22314 = –0.7464 |
4 |
3 |
-1 |
x5 = 1.0686 (1 – 1/8) = 0.9350 |
y5 = –0.06862 + 1.06861/8 = 0.06496 |
1 |
5 = –0.7464 + 0.1335 = –0.6129 |
5 |
3 |
1 |
x6 = 0.9350 (1 + 1/8) = 1.0519 |
y6 = 0.06496 – 0.93501/8 = –0.05191 |
-1 |
6 = –0.6129 – 0.11778 = –0.7307 |
6 |
4 |
-1 |
x7 = 1.0519 (1 – 1/16) = 0.9862 |
y7 = –0.05191 + 1.05191/16 = 0.01383 |
1 |
7 = –0.7307 + 0.06454 = –0.6662 |
7 |
4 |
1 |
x8 = 0.9862 (1 + 1/16) = 1.0478 |
y8 = 0.01383 – 0.98621/16 = –0.04781 |
-1 |
|
8 |
5 |
1 |
x9 = 0.9862 (1 + 1/32) = 1.0170 |
y9 = 0.01383 – 0.98621/32 = –0.01699 |
-1 |
9 = –0.6662 – 0.03077 = –0.6970 |
9 |
5 |
-1 |
x10 = 1.0170 (1 – 1/32) = 0.9852 |
y10 = –0.01699 + 1.01701/32 = 0.01479 |
1 |
10 = –0.6970 – 0.03175 = –0.6653 |
10 |
6 |
1 |
x11 = 0.9852 (1 + 1/64) = 1.0006 |
y11 = 0.01479 – 0.98521/64 = –0.0006 |
-1 |
11 = –0.6653 – 0.0155 = –0.6808 |
11 |
6 |
-1 |
x12 = 1.0006 (1 – 1/64) = 0.9850 |
y12 = –0.0006 + 1.00061/64 = 0.01503 |
1 |
|
12 |
7 |
-1 |
x13 = 1.0006 (1 – 1/128) = 0.9928 |
y13 = –0.0006 + 1.0006 1/128 = 0.00722 |
1 |
13 = –0.6808 + 0.00784 = –0.6730 |
13 |
7 |
1 |
x14 = 0.9928 (1 + 1/128) = 1.00056 |
y14 = 0.00722 – 1.000561/128 = – 0.000597 |
-1 |
14 = –0.6730 – 0.00778 = –0.6808 |
З таблиці 3.3. випливає, що на другому етапі з обчислень виключені два рядки k = 7, 11.
При k = 13 маємо: результат розрахунковий = –0.6808, за вхідними данними = –0.68. Абсолютна похибка = |–0.68 – (–0.6808)| = 0.0008.
3.3. Контрольні запитання та завдання
1. Поясните стратегію подвійного кроку і в яких випадках її використовують?
2. Які константи використовуються при обчисленні експоненціальної і логарифмічної функцій?
3. Поясните спосіб організації синхронного модифікованого процесу ітерацій.
4. Чи можливо при обчисленні експоненціальної і логарифмічної функцій застосувати асинхронний спосіб організації ітераційного процесу?
4 ВИКОНАННЯ МНОЖНО-ДІЛИЛЬНИХ ОПЕРАЦІЙ МЕТОДОМ ”ЦИФРА ЗА ЦИФРОЮ”
4.1 Мета заняття:
Вивчити організацію обчислювального процесу методом “цифра за цифрою” під час виконання окремих операцій множення і ділення, а також складних множно-ділильниx операцій. Закріпити навички по організації синхронного, а також вивчити способи організації асинхронного ітераційного процесу на прикладі виконання множно-ділильниx операцій.
4.2 Методичні вказівки.
Метод “цифра за цифрою” є універсальним у тому розумінні, що з однаковим успіхом дозволяє обчислювати не тільки більшість функцій, але й виконувати арифметичні операції множення і ділення. При цьому вигляд ітераційних рівнянь зберігається, що дозволяє мати єдині для подібних задач апаратні засоби.
Обчислення множно-ділильниx операцій можна виконати як синхронним, так і асинхронним методом організації ітераційного процесу. Ітераційні процеси при виконанні множно-ділильниx операцій мають добру збіжність і, отже, немає необхідності застосовувати стратегію подвійного кроку. Формально це можна записати як те, що k = i.
Для обчислення множно-ділильниx операцій використовуються ітераційні рівняння [2].
(4.1)
Початкові умови мають вигляд: yпоч = А; Uпоч = 0; iпоч = 0; поч = 1.
В даному ітераційному процесі обчислення yi відповідає першому етапу, на якому y 0 зі збільшенням числа кроків. На другому етапі обчислюється функція U.
Рівняння (4.1) дозволяють обчислювати комплексний множно-ділильний вираз типу:
U = (A/B) C (4.2)
Для спрощення рівнянь (4.1) припускається, що
В А , 0 С 1 (4.3)
У випадку, якщо вхідні дані у виразі (4.2) не задовольняють нерівностям (4.3), ці дані можуть бути зведені до певних нерівностей шляхом уведених масштабних множників пропорційних ступеню основи системи числення, в якій виконуються обчислення. Надалі такий масштаб дозволяє одержувати шукане число шляхом зсуву розрахункового результату по розрядній сітці на число розрядів, що дорівнює ступеню основи в масштабному множнику.
Під час виконання окремих операцій множення або ділення в рівнянні (4.2) слід приймати відповідно B = 1 або С = 1.
Виконаємо обчислення виразу (4.2), використовуючи синхронний і асинхронний методи організації ітераційного процесу. Нехай маємо А = 62,5; В = 0,75; С = 5.
Синхронний спосіб організації ітераційного процесу.
Для зведення вxідниx даних до нерівностей (4.3) уведемо масштабні множники: А = 102·0,625; B = 100·0,75; С = 101·0,5, маємо MA = 102, MB = 100, MC = 101.
Загальний масштаб дорівнює М = MA/MB·MC = 103. i {-1; 1}, iмах = 9;
Результати обчислень за синхронним методом зведемо до таблиці 4.1:
Таблиця 4.1.
і |
|
|
|
|
0 |
1 |
y1 = 0.625 – 0.75·20 = – 0.125 |
-1 |
U1 = 0 + 0.5·20 = 0.5 |
1 |
-1 |
y2 = – 0.125 + 0.75/2 = 0.25 |
1 |
U2 = 0.5 – 0.5/2 = 0.25 |
2 |
1 |
y3 = 0.25 – 0.75/4 = 0.0625 |
1 |
U3 = 0.25 + 0.5/4 = 0.375 |
3 |
1 |
y4 = 0.0625 – 0.75/8 = – 0.03125 |
-1 |
U4 = 0.375 + 0.5/8 = 0.4375 |
4 |
-1 |
y5 = – 0.03125 + 0.75/16 = 0.01563 |
1 |
U5 = 0.4375 – 0.5/16 = 0.4063 |
5 |
1 |
y6 = 0.01563 – 0.75/32 = – 0.007808 |
-1 |
U6 = 0.4063 + 0.5/32 = 0.4219 |
6 |
-1 |
y7 = – 0.007808 + 0.75/64 = 0.00391 |
1 |
U7 = 0.4219 – 0.5/64 = 0.4141 |
7 |
1 |
y8 = 0.00391 – 0.75/128 = – 0.00195 |
-1 |
U8 = 0.4141 + 0.5/128 = 0.418 |
8 |
-1 |
y9 = – 0.00195 + 0.75/256 = 0.00098 |
1 |
U9 = 0.418 – 0.5/256 = 0.4161 |
9 |
1 |
y10 = 0.00098 – 0.75/512 = – 0.000485 |
-1 |
U10 = 0.4161 + 0.5/512 = 0.4171 |
Враховуючи масштабний множник, остаточно маємо:
Результат розрахунковий: U = 0.4171·103 = 417.1, за калькулятором: U = 416.7. Абсолютна похибка U = |416.7 – 417.1| = 0.4.
Асинхронний спосіб організації ітераційного процесу.
Розглянемо приклад обчислення операції ділення, використовуючи асинхронний спосіб організації ітераційного процесу.
Для зменшення загального числа кроків при обчисленні ряду деяких функцій можливе застосування асинхронного методу побудови ітераційного процесу. До числа таких функцій відносяться експонента, логарифмічна функція та ін. [2]. На відміну від синхронного способу при побудові асинхронного ітераційного процесу можуть бути використані не всі константи. Більшість з них на другому етапі можна минути. На відміну від синхронного методу, в якому результат обчислень вибирається за рядком першого етапу, де маємо найкраще наближення аргументу до деякого відомого числа, в асинхронному методі результат вибирається за останнім рядком ітераційного процесу. Кількість кроків в такому випадку не задається. А ітераційний процес завершується по досягненню заданої похибки наближення – на першому етапі.
При асинхронному методі побудови ітераційного процесу можуть бути визначені різноманітні стратегії найкращого наближення аргументу на першому етапі до заздалегідь відомого значення. Розглянемо два методи організації асинхронного ітераційного процесу.
Спосіб
перший.
В літературі [2] цей варіант асинхронної
організації ітераційного процесу
визначається як спосіб “спробного
кроку”. В цьому випадку під час визначення
коефіцієнтів напрямку руху
на першому етапі можливі два випадки.
Випадок
перший, коли yпоч > 0,
тоді приймають
{0,1}.
Причому, якщо в процесі виконання
ітерацій yi > 0,
то
= 1,
в протилежному випадку
= 0.
Випадок другий, коли
yпоч < 0,
тоді приймають
{0, -1}.
Причому, якщо yi < 0;
то
= -1,
в протилежному випадку
= 0.
У зв'язку з тим, що
для
кожного з випадків набуває тільки одного
знака, цей спосіб інколи визначають як
“знакопостійні” ітерації [2], на відміну
від інших – “знакозмінних”, де
приймає
додатні і від’ємні значення.
Застосуємо спосіб “ спробного кроку”, тобто {0; 1}. Причому, = 0, якщо yi < 0; = 1, якщо yi > 0. Рядок, на якому = 0 виключається з ітераційного процесу.
Вихідні дані А = 62.5; В = 0.75; С = 1, = 0.001. Для зведення вxідниx даних до нерівностей (4.3) уведемо масштабні множники: А = 102·0.625, тобто MA = 102, B = 100·0.75, тобто MB = 100, C = 100·1, тобто MC = 100. Загальний масштаб дорівнює М = MA/MB·MC = 102.
Визначимо
початкові умови: yпоч = A = 0.625,
= 1,
{0; 1},
Uпоч = 0.
Таблиця 4.2.
i |
|
|
|
|
0 |
1 |
y1 = 0.625 - 0.75·1.0 = -0.125 |
0 |
|
1 |
1 |
y2 = 0.625 - 0.75/2 = 0.25 |
1 |
U2 = 0.0 + ½ = 0.5 |
2 |
1 |
y3 = 0.25 – 0.75/4 = 0.0625 |
1 |
U3 = 0.5 + ¼ = 0.75 |
3 |
1 |
y4 = 0.0625 - 0.75/8 = -0.0313 |
0 |
|
4 |
1 |
y5 = 0.0625 - 0.75/16 = 0.0156 |
1 |
U5 = 0.75 + 1/16 = 0.8125 |
5 |
1 |
y6 = 0.0156 - 0.75/32 = -0.00784 |
0 |
|
6 |
1 |
y7 = 0.0156 - 0.75/64 = 0.00388 |
1 |
U7 = 0.8125 + 1/64 = 0.8281 |
7 |
1 |
y8 = 0.00388 - 0.75/128 = -0.00198 |
0 |
|
8 |
1 |
y9 = 0.00388 - 0.75/256= 0.00095 |
1 |
U9 = 0.8182 + 1/256 = 0.832 |
З урахуванням масштабного множника МА = 102 маємо:
Результат розрахунковий : U = 0.831·102 = 83.1, за калькулятором: U = 83.3. Абсолютна похибка U = |83.3 – 83.1| = 0.2.
Спосіб другий. В цьому випадку при визначенні коефіцієнтів напрямку руxу на першому етапі вважають, що {-1,1}. Причому = -1 якщо yi – від’ємне і = 1, якщо yi – додатне. Як і в методі “спробного кроку”, багато констант у процесі обчислень 2-го етапу минається. Під час побудови асинхронного ітераційного процесу стратегія найкращого кроку полягає ось в чому:
При незмінному початковому значенні yi по черзі для кожної константи розраховуються значення yi+1. Кожен результат, отриманий на i-му кроці, порівнюється з результатом, отриманим на i+1-му кроці. Якщо yi+1<yi, то ітерація триває й на другому етапі на цих кроках функція не обчислюється. У випадку якщо yi+1>yi, те i-й крок у цьому випадку є найкращим і на цьому кроці на другому етапі обчислюється функція. При наступних ітераціях за початкове значення yi вибирається значення найкращого попереднього кроку. При цьому значення yi+1 необхідно перерахувати при початковому значенні найкращого кроку. Обчислення на першому етапі завершуються, коли виконується співвідношення yi ≤ .
Природно, що при такій стратегії руху буде потрібно найменше число кроків для одержання необхідної точності обчислення функції. Надалі цей спосіб визначимо, як спосіб i мін.
Розглянемо даний метод на прикладі обчислення операцій множення.
Вихідні дані: А = 36.8, В = 1, С = 1.68, = 0.001.
Для приведення вихідних даних до нерівностей (4.3) введемо масштабні множники: А = 102·0.368; С = 101·0.168, тобто MA = 102, MC = 101.
Загальний масштаб дорівнює М = MA·MC = 103.
Визначимо початкові умови: yпоч = A = 0.368, = 1, Uпоч = 0.
Результати обчислень зведемо до таблиці 4.3.
Таблиця 4.3.
-
i
0
1
y1 = 0.368 – 1/1 = – 0.632
-1
1
1
y2 = 0.368 – 1/2 = – 0.132
-1
2
1
y3 = 0.368 – 1/4 = 0.118
1
U3 = 0 + 0.168/4 = 0.042
3
1
y4 = 0.368 – 1/8 = 0.243
1
3
1
y4 = 0.118 – 1/8 = – 0.007
-1
U5 = 0.042 + 0.168/8 = 0.063
4
1
y5 = 0.118 – 1/16 = 0.0555
1
4
-1
y5 = –0.007 + 1/16 = 0.0555
1
5
-1
y6 = –0.007 + 1/32 = 0.0243
1
6
-1
y7 = –0.007 + 1/64 = 0.00863
1
7
-1
y8 = –0.007 + 1/128 = 0.00081
1
U4 = 0.063 – 0.168/128 = 0.0617
Сірим кольором в таблиці позначені строки, в яких значення yi+1 були перераховані при значенні yi найкращого кроку. Враховуючи масштабний множник М = МА·МС = 103 маємо: результат розрахунковий U = 0.06170·103 = 61.7, результат за калькулятором U = 61.824. Абсолютна похибка U = |61.824 – 61.7| = 0.124.
