- •Міністерство Освіти і Науки України Національний Університет “Львівська Політехніка”
- •Аналіз обчислювальної похибки при виконанні базових операцій алгоритмів цифрової обробки сигналів. Обчислення математичних функцій
- •Мета роботи
- •Загальні теоретичні відомості
- •Порядок виконання роботи
- •Зміст звіту до лабораторної роботи
- •Контрольні запитання
- •Література
- •Варіанти завдань до лабораторної роботи
- •Приклад приведення виразу до аналітичного вигляду Завдання
Варіанти завдань до лабораторної роботи
Вар. |
Функція |
Формула розкладу |
Додаткові дані |
1 |
(| 1/(20+x) |1) |
x]-1.,1[ x= 0.1
| |
2 |
x] 0,2[ x= 0.1 | ||
3 |
x]-1., 1.[ x= 0.05
| ||
4 |
(| 7x/17|1) |
x]-1, 1[ x= 0.1 | |
5 |
x]0.,[ x= 0.15 | ||
6 |
x]0,2[ x= 0.15 - числа Бернулі | ||
7 |
x]-π,π/2 [ x= 0.1 - числа Eйлера | ||
8 |
x]-2., 6.[ x= 0.07 | ||
9 |
ln(1-x) (-1 x1) |
x]-1., 1.[ x= 0.2 | |
10 |
(| x|1) |
x]-1., 1.[ x= 0.02 | |
11 |
(1 ± x)- m (| x|1) |
x]-1., 1.[ x= 0.025 m= 1 | |
12 |
arccos x (| x|1) |
x]-1., 1.[ x= 0.01 | |
13 |
ln x (x> 0) |
x]0., 10.[ x= 0.4 | |
14 |
(| x|) |
x]-1., 1.[ x= 0.05
| |
15 |
(| x|1) |
x]-1.,1[ x= 0.05
| |
16 |
(| x|1) |
x]0,0.5[ x= 0.01 | |
17 |
x]0.,/2[ x= 0.01 | ||
18 |
x],2[ x= 0.02 | ||
19 |
x]0,2[ x= 0.3 - числа Бернулі | ||
20 |
x]0,π/2 [ x= 0.01 - числа Eйлера | ||
21 |
x]-1., 1.[ x= 0.03 | ||
22 |
x]0., 10.[ x= 0.1 | ||
23 |
(| x|1) |
x]0., 1.[ x= 0.006 | |
24 |
ln 1/x (x> 0) |
x]0., 10.[ x= 0.4 | |
25 |
x]0., 2[ x= 0.18 |
Приклад приведення виразу до аналітичного вигляду Завдання
Вар. |
Функція |
Формула розкладу |
Додаткові дані |
26 |
x]9., 15.[ x= 0.05 |
Згідно поставленого завдання, аналітичний вид математичної функцій, що буде обчислюватися, буде мати вигляд( для наочності обчислень беремо 5-6 членів ряду):
Обчисливши коефіцієнти при степенях, отримаємо:
2.На основі отриманого виразу обчислюємо еталонне значення функції на проміжку зміни х, fe(x).( При реалізації на мові С, тип змінної х та значення fe встановлюємо у float, double)
Обчислені значення fe заносимо у відповідний стовпець Таблиці 1.
3.Припустимо, мінімальне обчислене значення fe рівне -3,12457862438 , а максимальне 8,54781235.
Для обчислення значення функції f8 та f16 потрібно виконати узгодження з розрядністю обчислених коефіцієнтів, змінної х та результату.
3.1 Приведення коефіцієнтів та змінної х до формату з фіксованою комою довжиною 8 біт( для f8).
Згідно завдання х міняється в межах 9..15 а вираз 4х/5 відповідно —7,2..12, результат , згідно припущення, коливається в межах -3,12457862438..8,54781235. Отже для представлення х, коефіцієнтів та результату потрібно вибрати кількість розрядів для цілої частини та дробової частини з врахуванням того що їх загальна кількість 8.
Оскільки в нас результат є знаковим то 1 біт виділяється для ознаки знаку, ціла частина виразу 4х/5 коливається від 7 до 12 (0111 до 1100) а результату від 3 до 8 (0011 до 1000). Таким чином для кодування цілої частини змінної х, коефіцієнтів та результату необхідно 4 двійкові розряди. Отже для дробової частини залишається 3 розряди.
При використанні типів даних з рухомою комою не виникає проблеми з представленням чисел з великою кількістю чисел після коми( довгої дробової частини). При використанні форматів з фіксованою комою необхідно виконати переведення з числа у фіксований формат.
Для наших даних переведення виконується наступним чином:
Ціла частина виразу 4х/5, коефіцієнтів та результату переводиться в 2-ву систему числення ( згідно з правила переведення)- в даному випадку ціла частина всіх значень має займати 4 розряди, у разі малого числа виконується доповнення нулями.
Для х=9, 4х/5 =7,2 , ціла частина 7 рівна 111, доповнивши нулями отримаємо 0111
Дробова частина виразу 4х/5, коефіцієнтів та результатів переводиться у 2-ву систему числення ( згідно з правила переведення дробової частини)- в даному випадку дробова частина має займати не більше 3 розрядів.
Для х=9, 4х/5 =7,2 , дробова частина 0,2 рівна 001.
Таким чином число 7,2 в 2-вій системі числення у форматі з фіксованою комою ( 8 біт) рівна 0111.001 а враховуючи що в нас знакові дані то 00111.001.
Оскільки засоби мови С не мають можливості працювати з форматами з фіксованою комою то приходиться додатково проводити перерахунок чисел з одного формату в інший. Тобто якщо результат 00111.001 перевести в 10- ву систему числення то отримаємо +7,125. Тобто число 7,2 неможливо точно представити у форматі з фіксованою комою(8 біт), виникає похибка.
Відповідно до цього замість 7,2 для обчислення результату у форматі з фіксованою комою будемо використовувати 7,125.( така сама процедура виконується для всіх коефіцієнтів розкладу та значень виразу 4х/5 для всіх х). Крім того у виразі містяться операції множення, піднесення до степеня та додавання, тому необхідно виконувати переведення у фіксований формат кожного проміжного результату, з врахуванням того,що ми зафіксували кількість біт на цілу частину 4 біти, на дробову 3 і на знак 1. Можлива ситуація коли всі змінні та коефіцієнті додатні тоді знаковий розряд можна відкинути і використовувати всі 8 розрядів для представлення цілої та дробової частини. У випадках коли всі змінні та результати не містять цілої частини то для її представлення немаж потреби виділяти біти і всі 8 біт виділяються для представлення дробової частини та знаку.
Використовуючи перевід у фіксований формат( 8 біт) обчислюємо значення виразу f8 для всіх значень х із заданого проміжку.
Результати обчислень заносимо в таблицю 1 у відповідний стовпець.
3.2 Приведення коефіцієнтів та змінної х до формату з фіксованою комою довжиною 16 біт( для f16).
Згідно завдання х міняється в межах 9..15 а вираз 4х/5 відповідно —7,2..12, результат , згідно припущення, коливається в межах -3,12457862438..8,54781235. Отже для представлення х, коефіцієнтів та результату потрібно вибрати кількість розрядів для цілої частини та дробової частини з врахуванням того що їх загальна кількість 16.
Оскільки в нас результат є знаковим то 1 біт виділяється для ознаки знаку, ціла частина виразу 4х/5 коливається від 7 до 12 (0111 до 1100) а результату від 3 до 8 (0011 до 1000). Таким чином для кодування цілої частини змінної х, коефіцієнтів та результату необхідно 4 двійкові розряди. Отже для дробової частини залишається 16-1-4=11 розрядів.
При використанні типів даних з рухомою комою не виникає проблеми з представленням чисел з великою кількістю чисел після коми( довгої дробової частини). При використанні форматів з фіксованою комою необхідно виконати переведення з числа у фіксований формат.
Для наших даних переведення виконується наступним чином:
Ціла частина виразу 4х/5, коефіцієнтів та результату переводиться в 2-ву систему числення ( згідно з правила переведення)- в даному випадку ціла частина всіх значень має займати 4 розряди, у разі малого числа виконується доповнення нулями.
Для х=9, 4х/5 =7,2 , ціла частина 7 рівна 111, доповнивши нулями отримаємо 0111
Дробова частина виразу 4х/5, коефіцієнтів та результатів переводиться у 2-ву систему числення ( згідно з правила переведення дробової частини)- в даному випадку дробова частина має займати не більше 11 розрядів.
Для х=9, 4х/5 =7,2 , дробова частина 0,2 рівна 00110011001.
Таким чином число 7,2 в 2-вій системі числення у форматі з фіксованою комою ( 16 біт) рівна 0111.00110011001 а враховуючи що в нас знакові дані то 00111.00110011001.
Оскільки засоби мови С не мають можливості працювати з форматами з фіксованою комою то приходиться додатково проводити перерахунок чисел з одного формату в інший. Тобто якщо результат 00111.001 перевести в 10- ву систему числення то отримаємо +7,19970703125. Тобто число 7,2 неможливо точно представити у форматі з фіксованою комою(16 біт), виникає похибка, але в порівнянні з 8-ми бітним представленням похибка суттєво менша.
Відповідно до цього замість 7,2 для обчислення результату у форматі з фіксованою комою будемо використовувати 7,19970703125.( така сама процедура виконується для всіх коефіцієнтів розкладу та значень виразу 4х/5 для всіх х). Крім того у виразі містяться операції множення, піднесення до степеня та додавання, тому необхідно виконувати переведення у фіксований формат кожного проміжного результату, з врахуванням того,що ми зафіксували кількість біт на цілу частину 4 біти, на дробову 3 і на знак 1. Можлива ситуація коли всі змінні та коефіцієнті додатні тоді знаковий розряд можна відкинути і використовувати всі 8 розрядів для представлення цілої та дробової частини. У випадках коли всі змінні та результати не містять цілої частини то для її представлення немає потреби виділяти біти і всі 16 біт виділяються для представлення дробової частини та знаку.
Використовуючи перевід у фіксований формат( 16 біт) обчислюємо значення виразу для всіх значень х із заданого проміжку.
Після обчислення всіх значень fe f8 f16 виконуємо обчислення абсолютної та відносної похибки проведених обчислень для всіх значень х з заданого діапазону .
На основі проведених розрахунків похибок вивести відповідні графіки.
Схема обчислень для режиму з фіксованою крапкою повинна базуватись на перетворенні у фіксований формат( перетворення у двійкову систему – перетворення назад в десяткову) при кожній операції множення та додавання, а програмно має здійснюватись за допомогою спеціально розроблених функцій.
Таблиця коефіціентів Бернулі
Коефіціенти від непарних n(крімn=1) рівні 0.
Таблиця коефіціентів Ейлера
n E(n)
1 1
2 1
3 1
4 1
5 4
6 1
7 1
8 11
9 11
10 1
11 1
12 26
13 66
14 26
15 1
16 1
17 57
18 302
19 302
20 57
21 1
22 1
23 120
24 1191
25 2416
26 1191
27 120
28 1
29 1
30 247
31 4293
32 15619
33 15619
34 4293
35 247
36 1
37 1
38 502
39 14608
40 88234
41 156190
42 88234
43 14608
44 502
45 1
46 1
47 1013
48 47840
49 455192
50 1310354
51 1310354
52 455192
53 47840
54 1013