You are on page 1of 88

Міністерство освіти і науки України

Комп’ютерні технології та програмування


Методичні вказівки до практичних занять
для студентів напряму підготовки
6.050202 «Автоматизація та комп’ютерно-інтегровані технології»
всіх форм навчання

Луцьк 2016
УДК 629.05
К50

До друку ________________ Голова Навчально-методичної ради Луцького НТУ


(підпис)

Електронна копія друкованого видання передана для внесення в репозитарій Луцького


НТУ ________________ директор бібліотеки.
(підпис)

Затверджено Навчально-методичною радою Луцького НТУ,


протокол № від « » 20 року.

Рекомендовано до видання Навчально-методичною радою факультету комп’ютерних наук


та інформаційних технологій Луцького НТУ, протокол № від « » 20 ___
року.
________________ Голова навчально-методичної ради факультету комп’ютерних наук
та
(підпис) інформаційних технологій

Розглянуто і схвалено на засіданні кафедри автоматизованого управління виробничими


процесами Луцького НТУ, протокол № від « » 20 ____ року.

Укладач: _______________ О.М. Решетило, кандидат технічних наук, доцент Луцького


НТУ
(підпис)

Рецензент: _______________ Р.М. Полінкевич, кандидат технічних наук, доцент


Луцького
(підпис) НТУ

Відповідальний
за випуск: ____________ Л.О. Гуменюк, кандидат технічних наук, доцент Луцького
НТУ
(підпис)

Комп’ютерні технології та програмування [Текст] : Методичні вказівки до


практичних занять для студентів напряму підготовки 6.050202 «Автоматизація
К50
та комп’ютерно-інтегровані технології» всіх форм навчання уклад. О.М.
Решетило. – Луцьк: Луцький НТУ, 2016. – 88 с.

Видання містить методичні вказівки до практичних занять та контрольні питання.


Призначене для студентів напряму підготовки 6.050202 «Автоматизація та
комп’ютерно-інтегровані технології» всіх форм навчання.

© О.М. Решетило, 2016

2
ЗМІСТ

ВСТУП ..................................................................................................................... 4
Практична робота №1.
Вивчення будови ПЕОМ ........................................................................................ 5
Практична робота №2.
Вивчення будови процесора і організації пам’яті ............................................. 17
Практична робота №3.
Дослідження логічних елементів......................................................................... 25
Практична робота №4.
Основи роботи з MATLAB................................................................................... 30
Практична робота №5.
Написання програм з використанням умовних операторів .............................. 36
Практична робота №6.
Написання програм з використанням циклічних операторів ........................... 40
Практична робота №7.
Побудова графіків функцій .................................................................................. 44
Практична робота №8.
Рішення алгебраїчних і трансцендентних рівнянь в середовищі MATLAB... 52
Практична робота №9.
Рішення систем рівнянь в середовищі MATLAB .............................................. 56
Практична робота №10.
Загальні відомості про програмний комплекс SIMULINK. Побудова простих
моделей................................................................................................................... 62
Практична робота №11.
Моделі алгебраїчних об'єктів. Форматування об’єктів моделей ..................... 72
Практична робота №12.
Маскування підсистем в Matlab/Simulink........................................................... 78
Список літератури................................................................................................. 85

3
ВСТУП

Метою викладення дисципліни є формування у майбутніх спеціалістів


з комп’ютерно-інтегрованих технологій знань та навиків щодо:
 теоретичні засади і принципи побудови сучасних і перспективних
електронних обчислювальних машин, основи і прикладні системи
програмування та формування вмінь орієнтуватись у складній
комп’ютерній мережі;
 підвищення продуктивності праці ПЕОМ на програмно-апаратному рівні, а
також відновлення втраченої інформації та захисту даних на магнітних
носіях;
 організацію обчислювальних процесів на персональних комп’ютерах та їх
алгоритмізацію;
Завданням вивчення дисципліни є:
 вироблення вміння найбільш грамотно конфігурувати та реконфігурувати
програмно-апаратні пристрої ПЕОМ з метою забезпечення максимальної
продуктивності праці ПЕОМ для рішення проблемних задач у сфері
управління та автоматики;
 вироблення вміння відновлювати дієздатний стан ПЕОМ, встановлювати
нові програмні продукти та грамотного їхнього використання для рішення
задач, пов'язаних з підтримкою цілісності інформації на дисках, контролю
та тестуванню апаратних пристроїв, для рішення системних та прикладних
задач.
У результаті вивчення дисципліни студент повинен:
Знати: архітектуру сучасних ЕОМ; склад та принцип дії типових
пристроїв, що входять до складу ЕОМ; типи пам’яті, яка використовується в
ЕОМ; структуру гнучкого та жорсткого дисків; призначення окремих полів
системної частини диску; алгоритми підготовки дисків до праці; порядок
відновлення втраченої інформації та методи збереження даних; способи
захисту інформації від несанкціонованого доступу; алгоритми відновлення
працездатності ЕОМ.
Вміти: аналізувати існуючі системи персональних ЕОМ; аналізувати
окремі складові ПЕОМ; конфігурувати програмне та апаратне забезпечення
ПЕОМ; налагоджувати конфігурацію існуючої ПЕОМ на максимальну
продуктивність праці; підтримувати цілісність файлової системи в
працездатному стані.
Мати уявлення: про перспективи та шляхи розвитку як окремих
типових вузлів ЕОМ, так і ЕОМ у цілому.
Комп’ютерна техніка займається питаннями збору, накопичення,
опрацювання і передачі інформації з використанням різноманітних технічних
засобів.

4
Практична робота №1
Тема: Вивчення будови ПЕОМ
Мета: Ознайомлення з будовою ПЕОМ

Теоретичні питання
Основою будь якої комп’ютерної системи є друкована плата з
головним процесором, або мікроконтролером і підтримуючими
мікросхемами. Друковані плати поділяються на два класи:
1. одноплатні комп’ютери;
2. шинно-орієнтовані – це комп’ютери в яких центральна плата
реалізує схему мінімальної конфігурації, а інші функції реалізуються за
допомогою багато чисельних допоміжних плат. Всі головні компоненти
з’єднуються паралельними провідниками, які називаються шинами.
Центральна плата до якої приєднуються всі інші називається материнською
платою, а приєднувальні плати дочірніми.
Системна плата. Системна плата була розроблена фірмою IBM і
прийнята за основний стандарт для розробки дочірніх плат. Основні
підтримуючи схеми були розташовані на материнській платі. Ця
багатофункціональна реалізація плати відобразилась в її розвитку, як
системна плата. В системній платі немає відео адаптера, аналогового-
цифрових перетворювачів (АЦП), цифро-аналогових перетворювачів (ЦАП)
та інших дочірніх плат.
Мікропроцесор – складний програмнокерований пристрій,
призначений для обробки цифрової інформації та керування процесом цієї
обробки, виконаний у вигляді однієї чи кількох інтегральних мікросхем
підвищеного ступеня інтеграції.
Пам’ять – це елемент необхідний мікропроцесору для здійснення
будь-яких операцій, крім того пам’ять визначає як програмується сам
процесор і рівень складності розв’язуваних задач. Пам’ять ділиться на два
класи : основна і зовнішня. Основна – це пам’ять до якої комп’ютер або
мікропроцесор може безпосередньо звернутися таку пам’ять називають ОЗП
(оперативна). Доступ до нової пам’яті отримують за допомогою адресної
шини, або портів вводу-виводу. Так-як будь-яку частину цієї пам’яті, будь-
який її байт може бути знайдений в будь-який момент часу, то її називають
пам’ять з прямим доступом RАM. Пам’ять яка потребує більш значних
часових затрат на доступ називається зовнішньою – ця пам’ять забезпечує
більш тривале збереження інформації і являється базисом на якому
формується комп’ютерна система. Зовнішня пам’ять в багато разів може
перевищувати основну пам’ять, але доступ до зовнішньої пам’яті не може
комп’ютерною системою оброблятися одразу.
Кеш-пам’ять – використовується для прискорення доступу до
оперативної пам’яті.
BIOS (постійна пам’ять) – базова система вводу – виводу, система
зашита в пам’ять комп’ютера і вона визначає його базові характеристики,
тобто з якою операційною системою даний комп’ютер буде працювати, які
5
тестові прикладні програми, що комп’ютер може зробити без запуску
програм з диска, або носія інформації, як комп’ютер буде реагувати на
специфічні команди або ситуації.

Рис. 1.1 – Структура і принцип функціонування комп’ютерних систем

Основним елементом комп’ютерної системи являється процесор в


склад якого входять:
1) пристрій керування вибору команд з пам’яті і їх виконання;
2) АЛП (арифметико – логічний пристрій) – який виконує операції над
даними;
3) Регістри – здійснюють тимчасове зберігання даних і стану
процесора;
4) Схема для керування і зв’язки з підсистемами пам’яті і модулями
вводу-виводу.
Процесор складається з наступних регістрів і АЛП:
1. Лічильник команд – він призначений для організації звернення до
комірки пам’яті в якій зберігається програма. В кінці кожного циклу
виконання команди лічильник вказує адрес комірки пам’яті в якій містить
наступну команду програми
2. Регістр команд – використовується для зберігання команди , яка
безпосередньо виконується машиною. Код команди пересилається з регістра
команд в пристрій керування комп’ютерної системи і декодується. Після
цього відбувається дія по реалізації команди.
3. Регістр адреса – зберігає значення виконуючого адреса комірки
пам’яті комп’ютерної системи, якщо машина здійснює вибір команди, то в
регістр адресу пересилається зміст команди лічильника команд для
вказування адресу пам’яті де зберігається команда.
4. Регістр даних – використовується для тимчасового зберігання слів
при обміні інформації між пам’яттю і процесором.
5. Акумулятор – являється одним з основних елементів процесора.
Комп’ютерна система може виконувати арифметичну, або логічну операцію

6
тільки над двома операндами одночасно коли один з операндів видаляється з
пам’яті в регістр даних, а другий операнд знаходиться в акумуляторі
процесора.
6. Регістр переносу – це однорозрядний регістр, який виступає в
якості продовження акумулятора і який заповнюється при його переповненні.
Цей регістр використовується також для організації циклічних зсувів.
Структурна схема ЕОМ. ЕОМ призначені для опрацювання
інформації і відображення результатів опрацювання.

Рис. 1.2 – Структурна схема ЕОМ

Під час рішення задачі програма й операнди (числа, над якими


провадяться операції) знаходяться в оперативній пам'яті (ОЗП). В процесі
рішення задачі АЛП постійно взаємодіє з ОЗП, передаючи в ОЗП проміжні і
кінцеві результати й одержуючи з ОЗП операнди дії всіх частин ЕОМ при
рішенні задача здійснюється під впливом керуючих сигналів, які
виробляються пристроєм керування відповідно до програми, записаної в
ОЗП.
ПЗУ призначено для збереження стандартних програм.
Існує ще понад ОЗП (СОЗП), що має малий обсяг і високу швидкодію.
СОЗП застосовується для короткочасного збереження операндів і проміжних
результатів.
Якість ЕОМ визначається: обсягом ОЗП (тобто кількістю одночасно
збережених в ОЗП двійкових слів); швидкодією, обумовленою кількістю
операцій в секунду. Після виконання задачі, програма і результати через
пристрій виводу записуються в зовнішній ЗП. У якості зовнішніх ЗП
використовуються магнітна стрічка, магнітний диск, магнітний барабан.
Програма вводиться в ОЗП з зовнішніх ЗП або з клавіатури через пристрій
вводу.
Вузли ЕОМ. Вузли ЕОМ класифікуються на:
1. комбінаційні – це вузли, вихідні сигнали яких визначаються тільки
сигналом на вході, що діє в дійсний момент часу (дешифратор). Вихідний
сигнал дешифратора залежить тільки від двійкового коду, поданого на вхід у
даний момент часу. Комбінаційні вузли називають також автоматами без
пам'яті.
7
2. послідовні (автомати з пам'яттю) – це вузли, вихідний сигнал яких
залежить не тільки від комбінації вхідних сигналів, що діють у дійсний
момент часу, але і від попереднього стана вузла (лічильник).
3. програмовані вузли функціонують у залежності від того, яка
програма в них записана. Наприклад, якщо програмується логічна матриця
(ПЛМ), що у залежності від пропаленої в ній програми може виконувати
функції суматора, дешифратора, ПЗУ.
Суматор.

Рис. 1.3 – Суматор

Суматор може бути побудований як комбінаційна схема – послідовний


суматор і як послідовна схема – суматор, що накопичує. Суматор здійснює
додавання цифр розрядів слів і цифр переносу по правилах додавання по
модулю 2. Робота суматора строго регламентована відповідно до таблиці:

Таблиця 1.1.
Результати роботи суматора
ai bi Pi Si Pi+1
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

8
Рис. 1.4 – Послідовний суматор

Послідовний суматор здійснює додавання операндів і цифр переносу


порозрядно, починаючи з молодшого розряду. Основою його схеми є
однорозрядний суматор. Додавання проводиться в однорозрядному суматорі
SM. Цифри i-того розряду що складається і цифра переносу з молодшого
розряду передаються на вхід суматора одночасно з приходом тактового
імпульсу. Регістри 1 і 2 використовуються для прийому і збереження цифр i-
того розряду операндів. У D - тригері зберігається цифра переносу з
молодшого розряду. Регістр 3 приймає і береже цифру i-того суми. З
приходом тактового імпульсу з регістрів 1, 2 і D - тригера розряду що
складаються і цифра переносу надходить на вхід однорозрядного суматора.
Одночасно регістр 3 звільняється для прийому цифри суми.

Рис. 1.5 – Паралельний суматор

В паралельному суматорі всі розряди операндів додаються одночасно,


але швидкодія знижується за рахунок часу передачі цифри переносу з
молодшого розряду.
Арифметико-логічний пристрій (АЛП). АЛП призначено для
виконання арифметичних і логічних операцій над операндами. АЛП
9
класифікуються таким чином:
1. По засобам дій над операндами. Бувають АЛП послідовної і
паралельної дії. У послідовних АЛП дії над операндами провадяться
послідовно розряд за розрядом починаючи з молодшого. У паралельних АЛП
всі розряди операндів опрацьовуються одночасно.
2. По виду оброблюваних чисел АЛП можуть робити операції над
двійковими числами з фіксованої або плаваючої комою і над двійково-
десятковими числами.
Кожна десяткова цифра записується чотирма розрядами двійкового
коду.
1971  0001 1001 0111 0001
АЛП при дії над двійково-десятковими числами повинні містити схему
десяткової корекції. Схема десяткової корекції перетворить отриманий
результат таким чином, щоб кожний двійково-десятковий розряд не містив
цифру більше 9.
При записі числа з фіксованою комою кома фіксується після
молодшого розряду, якщо число ціле, і перед старшим, якщо число менше 1.
При записі чисел із плаваючою комою виділяється ціла частина, що
називається мантисою, і показник ступеня, що характеризує положення коми.
37 і 0.37 - із фіксованої комою
37*10^-2 - із плаваючої комою
3. По організації дій над операндами розрізняють блокові і
багатофункціональні АЛП.
У блокових АЛП окремі блоки призначені для дій над двійково-
десятковими числами, окремо для дій над числами з фіксованої комою,
окремо з плаваючої комою.
У багатофункціональних АЛП ті самі блоки опрацьовують числа з
фіксованої комою і двійково-десяткові числа.
Багатофункціональні АЛП.

Рис. 1.6 – АЛП

Клапани К1 і К2 об'єднують суматори 1, 2 і 3 для дій над числами з


фіксованої комою.
Для дій над числами з плаваючої комою клапан К2 об'єднує суматори 2
і 3 для опрацювання мантис, а клапан К1 від’єднує перший суматор від
другого. Суматор 1 опрацьовує порядки.

10
4. За структурою АЛП бувають із безпосередніми зв'язок і
багатозв’язковими.
Дешифратор. Дешифратор призначений для перетворення двійкового
коду на вході в керуючий сигнал на однім із виходів. Якщо входів n то
вихідних шин повинно бути N = 2^n.

X1 X2 X3 Z0 Z1 Z2 Z3 Z4 Z5 Z6 Z7
0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0
0 1 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 0 0 1 0 0
1 1 0 0 0 0 0 0 0 1 0
1 1 1 0 0 0 0 0 0 0 1

Дешифратори можуть бути лінійні, у яких усі перемінні Х1, Х2, Х3


подаються на вхід одночасно.

Рис. 1.7 – Дешифратор лінійний

Їх швидкодія більше, але більш 3-х перемінних одночасно подати не


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

11
Рис. 1.8 – Дешифратор (діодна матриця)

У цій схемі використовується негативна логіка. При подачі "1" на анод


діода він закривається. Якщо закриті всі 3 діода, які під’єднанні до однієї
горизонтальної лінії, то на цій лінії потенціал - Е, що відповідають рівню "1".
Багатокаскадний дешифратор можна організувати у такий спосіб:

Рис. 1.9 – Багатокаскадний дешифратор

Два лінійних дешифратора опрацьовують по 2 слова. В останньому


каскаді утворяться кон’юнкції вихідного сигналу АЛП першого каскаду.
Багатокаскадні дешифратори мають меншу швидкодію.

12
Програмована логічна матриця (ПЛМ).

Рис. 1.10 – ПЛМ

ПЛМ є вузлом ЕОМ, функціонування якого визначається програмою,


записаної в нього. ПЛМ може використовуватися в якості дешифратора ПЗУ.
При записі програми в ПЛМ пропалюються плавкі запобіжники, що
з'єднують транзистори МДП із шинами матриці. Матриця М1 називається
матрицею кон’юнкції. На горизонтальні шини подаються змінні. На
вертикальних шинах утворяться кон’юнкції. На вертикальних шинах
з'являється одиничний сигнал тільки тоді, коли всі транзистори, включені у
вузли матриці до цієї шини закриті. У вузлах матриці включаються
транзистори МДП.
Пропалювання програми відповідно до призначення матриці
складається в тому, що пропалюється плавкий запобіжник і транзистор,
підєднується до вузла матриці. Якщо на входи транзисторів подати нулі, то
вони будуть закриті. Матриця М2 називається матрицею диз'юнкції. На її
горизонтальних шинах з'являється сигнал у тому випадку, якщо знімати
сигнал через інвертор.
Суматор, який накопичує. Суматор, який накопичує , є автоматом із
пам'яттю, тобто слова можуть приходити по черзі в довільні моменти часу і
запам'ятовуватися в лініях затримки або в тригерах. Такий суматор
застосовується в асинхронних пристроях, які не прив'язані до тактів
тактового генератора.

13
Рис. 1.11 – Накопичувальний суматор

З приходом що складається аi=1 елемент "АБО" встановлюється в "1",


тригер встановлюється в "1". Якщо bi=1 і приходить через який час після ai,
то воно запам'ятовується в лінії затримки й одночасно bi перекидає тригер у
"0". На інверсному виході тригера встановлюється "1", отже на другу схему
"І" подаються дві одиниці, отже на виході другої схеми "АБО" формується
цифра переносу в старший розряд, рівна "1". Якщо Pi=0, то цифра суми, що
знімається з прямого виходу тригера, дорівнює "0". Якщо Pi=1, то сума Si=1.

ai bi Pi Si Pi+1
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

Інтерфейс. Пристрої обчислювальної системи з'єднуються один з


одним за допомогою уніфікованих систем зв'язку, названих інтерфейсом.
Інтерфейс являє собою систему шин, що узгоджують пристрої, алгоритми
всіх частин, які забезпечують зв'язок в ЕОМ між собою. Від характеристик
інтерфейсу залежить швидкодія і надійність ЕОМ. Інтерфейс повинний бути
стандартизований із тим, щоб він забезпечував зв'язок процесора й
оперативної пам'яті з будь-яким периферійним пристроєм (ПП). Необхідне
перетворення формату даних повинно проводитися в ПП. Алгоритми
функціонування інтерфейсу і керуючого сигналу АЛП також повинні бути
стандартизовані.
Типи інтерфейсу:
1. Інтерфейс ОЗП - через нього провадиться обмін даними між ОЗП і
процесором, між ОЗП і каналами вводу - виводу. Головним в обміні даними,
тобто починаючу операцію обміну, є процесор і канали вводу - виводу, а
виконавцем - ОЗП. Цей інтерфейс є швидкодіючим. Інформація через нього
передається словами і напівсловами.

14
2. Інтерфейс із процесором - через нього відбувається обмін
інформацією між процесором і каналами вводу - виводу. Головний -
процесор, виконавець - канали. Інтерфейс є швидкодіючим. Обмін
інформацією через нього відбувається словами і напівсловами.
3. Інтерфейс вводу-виводу. Через нього відбувається обмін
інформацією між каналами вводу - виводу й пристроями керування ПК.
Обмін інформацією проводиться байтами. Його швидкодія менше, ніж у
перших двох типів.
4. Інтерфейс периферійних апаратів (ПА). Через нього відбувається
обмін інформацією між пристроями керування ПК і самими ПК. Він не може
бути стандартизований, тому що ПК дуже різноманітні.
По цифровому каналі зв'язку сигнал може передаватися паралельно або
послідовно. Паралельна передача цифрового сигналу потребує окремі лінії
для кожного розряду, але є більш швидкодіючі. При послідовній передачі
цифрові сигнали передаються послідовно по одній лінії зв'язку. По засобам
передачі інформації в часі інтерфейс може бути синхронний і асинхронний.
Синхронний характерний постійної тимчасовою прив’язкою, а асинхронний -
без постійної тимчасової прив'язки. При синхронній передачі даних сигнали,
що синхронізують, МП задають тимчасовий інтервал, в момент якого
зчитується інформація з одного датчика. Тимчасовий інтервал визначається
найбільшим часом затримки в системі передача даних і максимальним часом
перетворення аналогового сигналу в цифровий. Асинхронна передача даних
характеризується наявністю керуючих сигналів: "Готовність до обміну",
вироблюваний датчиком вихідної інформації; "Початок обміну", "Кінець
обміну", "Контроль обміну", вироблювані МП. При такій організації обміну
автоматично встановлюється раціональне співвідношення між швидкістю
передачі даних і розмірами затримки сигналів у каналі зв'язку.
Обмін даними між оперативною пам'яттю і периферійними
пристроями (ПП).

Рис. 1.12 – Схема обміну даними

1. Програмно керований обмін даними. У цьому випадку передача


даних від ПП в пам'ять і обернено проводиться через МП відповідно до
мікропрограми, записаної в ОЗП, МП керує обміном і операція обміну
відбувається так само, як і операція основної програми. При програмному

15
керуванні передачею даних процесор "відривається" від виконання основної
програми на весь час операції вводу - виводу, отже знижується
продуктивність ЕОМ. Для вводу блока даних необхідно занадто багато
операцій, таких як перетворення форматів, адресація в пам'яті, визначення
початку і кінця блока даних. В результаті швидкість передачі даних
знижується. Дешифратор визначає номер ПП, із яких буде відбуватися обмін
даними відповідно до програми. Мультиплексор передає дані від одного з
ПП відповідного номера через МП в ОЗП. Після того, як дешифратор
визначив номер ПА і МП надіслав запит про обмін даними, МП чекає сигнал
готовності від ПП. Демультиплексор передає дані з ОЗП на одне з ПП.

Рис. 1.13 – Програмно-керований обмін даними

2. Обмін даними з використанням прямого доступу до пам'яті (ПДП).


При цьому МП звільняється від участі в обміні даними. ОЗП зв'язується з МП
і з апаратурою, що керує обміном даних різними шинами. Обміном даними
цілком управляють за допомогою апаратних засобів. Ініціатором обміну
даними являється

Рис. 1.14 – Схема прямого доступу до пам’яті

ПП, що надсилає запит про обмін даними на прапорець запиту ПДП.


Прапорець запиту активізує блок ПДП. Блок ПДП посилає в пам'ять сигнал
читання або запису і визначає осередок ОЗП, із яким почнеться обмін

16
даними. Блок ПДП посилає ці сигнали, після того, як одержить від МП
сигнал підтвердження. Регістр даних передає дані з ОЗП в ПП і з ПП в ОЗП.
При ПДП процесор звільняється від керування операціями вводу - виводу і
може паралельно виконувати основну програму. ПДП забезпечує більш
висока швидкодія і більш високу продуктивність роботи ЕОМ.

Практична робота №2
Тема: Вивчення будови процесора і організації пам’яті
Мета роботи: Ознайомлення з будовою процесора і організації пам’яті.

Теоретичні питання
Сучасні мікропроцесори (МП)
МП виконує функції процесора ЕОМ, тобто керує процесом виконання
операцій і виконує їх. МП може бути реалізований на одному або декількох
кристалах. Звичайно процесор містить АЛП, який керує пам’яттю. МП
вибирає команду з пам'яті, дешифрує, виконує її, робить арифметичні і
логічні операції, одержує дані з пристроїв вводу і посилає їх на пристрої
виводу. МП разом із пам'яттю і каналами вводу-виводу є ЕОМ.
МП можуть бути однокристальні, багатокристальні і секціоновані.
Однокристальні МП виготовляються на основі МДП-технології, а
секціоновані і багатокристальні - на основі біполярних транзисторів.
МДП-транзистори споживають менше енергії, але мають меншу
швидкодію в порівнянні з біполярними транзисторами. В однокристальному
МП функції керування, операційна частина й пристрій керування реалізовані
на однім кристалі, а в багатокристальному - на різних кристалах. В
секціонованих пристроях керування, які керують пам'яттю і АЛП реалізовані
на однім кристалі, але малої розрядності. Для збільшення розрядності варто
об'єднувати в паралель декілька МП.
МП, як функціональний пристрій ЕОМ характеризується форматом
опрацювання даних і команд, кількістю команд, методом адресації даних,
числом внутрішніх регістрів загального призначення (РЗП), можливостями
організації й адресації стека, параметрами пам'яті, побудовою систем
переривання програми, системами вводу-виводу, системами інтерфейсу.
МП ставиться до числа що програмуються пристроїв ЕОМ. МП, що
виконує послідовність мікрооперацій, має більшу логічну і функціональну
гнучкість, чим жорстко закомутовані процесори ЕОМ. Змінюючи вміст ПЗП і
ПЛМ, можна настроюватися на виконання вимог конкретної задачі. МП -
комплект - це набір ВІС, функціонально що сполучаються і застосовуваних
для побудови мікроЕОМ.
Керуюча пам'ять, що містить мікропрограму з команд, передбачених
для даного МП, реалізована на ПЛМ і знаходиться в однієї ВІС із
центральним процесором і пристроєм керування.
Однокристальні МП застосовуються в найпростіших пристроях
цифрової автоматики й у якості мікроконтролерів.
17
Контролер - пристрій керування вводом-виводом. Багатокристальні
МП і секціоновані призначені для побудови мікроЕОМ і систем
швидкодіючої автоматики.
Застосування МП:
1. Вмонтовані системи контролю і керування. МП вбудовуються в
устаткування, не комплектуються зовнішніми пристроями і містять
спеціальний пульт керування і ПЗП керуючою програмою.
2. Локальні системи накопичення й опрацювання інформації. Локальні
- тобто розташовані на робочому місці системи накопичення й опрацювання
інформації, що здійснюють інформаційне забезпечення спеціалістів і
керівників. Локальні системи, які використані на великих ЕОМ із великим
обсягом пам'яті, що дозволяє створити автоматизовану систему
інформаційного забезпечення.
3. Розподілені системи керування складними об'єктами. У розподілених
системах схеми опрацювання даних і МП розташовуються поблизу джерел
інформації (двигуни і т.д.). Вони пов'язані з центральною системою
опрацювання і накопичення даних.
4. Розподілені системи паралельних обчислень. У тому випадку, якщо
дозволяє алгоритм рішення задачі, декілька процесорів проводять виконання
даної задачі.
МП і мікроЕОМ використовуються в системах керування
радіотехнічним устаткуванням судів. МікроЕОМ вирішує навігаційні задачі,
розпізнає м, вирішує оперативно-технічні задачі, виконує автоматичне
спостереження за ціллю і т.д.
Типова структура частини МП

Рис. 2.1 – Структура МП


А - акумулятор
СК - лічильник команд
РК - регістр команд
РОП - регістр адреси пам'яті
РДП - регістр даних пам'яті

Процес виконання команди складається з 2-х циклів: циклу вибірки і


виконавчого циклу. Цикл вибірки починається зі зчитування з лічильника

18
команд номера осередку ОЗП, що містить код команди. Після зчитування
вміст лічильника команд відразу збільшується на 1. Номер осередку ОЗП
передається через регістр адреси пам'яті й адресної шини в дешифратор ОЗП.
Дешифратор ОЗП вибирає осередок ОЗП, що містить код команди. Код
команди зчитується з ОЗП і через шину даних передається в регістр даних
пам'яті. З регістра даних пам'яті код команди передається в регістр команд де
він зберігається до кінця виконання команди і через акумулятор код команди
передається в АЛП. АЛП аналізує код команди і якщо не потрібно
додаткового звертання до пам'яті переходить до виконавчого циклу.
Якщо ж потрібно додаткове звертання до пам'яті, то МП переходить до
другого машинного циклу, що так само починається з циклу вибірки. МП
запитує в ОЗП додаткові дані і виконує команди.
Команди можуть виконуватися за 1,2 або 3 машинних цикли. У
кожному машинному циклі відбувається тільки одне звертання до пам'яті.
Виконання команди відбувається під керуванням сигналів, вироблюваних
пристроєм керування. При виконанні команди АЛП взаємодіє з РОН. РОН
використовуються для короткочасного збереження операндів і результатів.
Тригери стану сигналізують про такі стани МП: обнулення
акумулятора, вміст знакового розряду, переповнювання розрядної сітки,
цифри переносів із 8-го і 4-го розрядів, уміст розряду контролю на парність.
Адресна шина є однонаправленою, а шина даних – двонаправленою. СТЕК -
особливий вид пам'яті, що розширює функціональні можливості МП.
Наприклад при виконанні програми , що перериває , в СТЕК поміщається
номер команди повернення і результат виконання останньої команди перед
переходом до виконання програми , що перериває.
Центральний процесорний елемент.

Рис. 2.2 – Центральний процесор

МП заснований на принципі керування жорсткої логіки. РОН У, C, D,


19
E, H, L, пристрій керування й операційної частини реалізовані в однім
кристалі. 6 регістрів загального призначення й акумулятор є програмно
доступними, тобто при написанні програми програміст може до них
звертатися. Регістри W, Z і буферні регістри є програмно недоступними,
тобто вони беруть участь у виконанні програми, але програміст до них
звернутися не може. РОН є 8-ми розрядними. Якщо операції відбуваються
над 16-ти розрядними операндами, то РОН об'єднуються попарно. Регістри
покажчика стека, лічильник команд і регістр адреси є 16-ти розрядними.
Покажчик стека містить номер верхнього зайнятого осередку стека. При
записі інформації в стек уміст покажчика стека зменшується на 1, а при
зчитуванні збільшується на 1. Лічильник команд містить номер осередку
ОЗП, що містить таку команду. При зчитуванні з лічильника команд номера
осередку команд вміст лічильника збільшується на 1.
Регістр адреси служить для передачі вмісту лічильника команд через
шину адреси і буфер адреси в ОЗП.
Пристрій керування містить регістр команд, дешифратор команд і
керуючий пристрій, у який входи ПЛМ, що містить керуючу пам'ять.
Керуюча пам'ять містить мікропрограми усіх 78-ми команд для даного
МП. АЛП доповнюється схемою десяткової корекції для дій над двійково-
десятковими числами. При діях над двійково-десятковими тобто при
використанні коду 8421 максимально припустима комбінація 1001 (тобто 9),
але при використанні 4-х двійкових розрядів максимально можливе число
1111 (тобто 15). Схема десяткової корекції віднімає 6 і формує цифру
переносу в старший розряд. На керуючий пристрій надходять послідовності
Ф1 і Ф2 тактового генератора, сигнал готовності від ОЗП, ПЗП або УВВ до
прийому або передачі даних. Сигнал запиту на переривання від зовнішніх
пристроїв, що запам'ятовують. Сигнали захоплення, скидання так само
формуються ВЗУ. МП формує сигнал дозвіл переривання і продовжує
виконувати поточну команду і по закінченні поточної команди МП
переходить до задоволення запиту про переривання. Сигнал чекання,
сформований МП означає, що він чекає сигнал готовності від ОЗП, ПЗП або
ВЗУ. Регістр ознак є 5-ти розрядним. Він сигналізує про такий стан МП -
обнулення, переповнюванні розрядної сітки, вміст знакового розряду, вміст
розряду контролю на парність і формування цифри переносу з 8-го і 4-го
розряду.
Система збору даних. Ця система призначена для послідовного
опитування 8-ми аналогових датчиків і передача інформації в ОЗП.
Опитування датчиків перетворення аналогової інформації в цифрову, запис
інформації в ОЗП провадиться під керуванням МП.

20
Номер опитуваного датчика формується в одному із РОН, в основному
в регістрі В. В 8-ми розрядному регістрі в 5-ти старших розрядах
записуються одиниці, а в трьох молодших розрядах - номер датчика.
Спочатку в регістрі В записане число F8 у 16-тиричной системі числення:
11111000=F8
001
010
При опитуванні кожного датчика
вміст регістра У збільшується на 1.
При опитуванні останнього датчика в
регістрі записується число FF =
11111111.
Додавання такої 1 обнулює
регістр В. На виході тригера нуля TZ
з'являється 1. Номер осередку ОЗП, у
якій повинний бути записаний
результат опитування датчика,
утримується в парі РОН, наприклад, у
регістрах HL.
Алгоритм роботи системи збору
даних: наприклад будемо вважати, що
перший зайнятий осередок ОЗП має
Рис. 2.3 – Блок-схема збору номер 1350 у шістнадцятковій системі.
даних У її буде приміщений результат
опитування 1-го датчика з номером 000. Через акумулятор і шину даних
номер датчика подається на пристрій виводу 1 (УВ1). УВ1 подає номер
датчика на комутатор. Комутатор опитує потрібний датчик і передає
аналоговий сигнал на АЦП. АЦП перетворить аналог. сигнал у цифровий і
передає цифровий сигнал на УВВ1. Якщо в першому такті імпульсної
послідовності Ф1 МП передає номер датчика, то в другому такті він очікує
приходу сигналу закінчення перетворення від АЦП. Сигнал закінчення
рівний 1 передається через УВВ2, через шину даних в акумулятор. Наявність
сигналу закінчення акумулятор перевіряє операцією циклічного зсуву
вправо. Якщо сигнал закінчення прийшов, те при зсуві вправо 1 із молодшого
розряду акумулятора передається в тригер зсуву ТС, тригер зсуву
перекидається в стан 1 і дані з устрою запровадження 1 по шині даних
передаються в акумулятор, а з нього в осередок ОЗП. Вміст пари регістрів HL
і регістра В збільшується на 1, при цьому формується номер такого датчика і
номер осередку, куди повинний бути приміщений такий результат.
Блок мікропрограмного керування (БМК).

21
Рис. 2.4 – БМК

Структура мікрокоманд. З ОЗП в блок мікропрограмного керування


(БМК) надходить код команди, що містить адресу першої мікрокоманди
(МК) мікропрограми виконання даної команди. Ця мікропрограма записана в
керуючій пам'яті, що входить до складу устрою керування. По зазначеній
адресі зчитується з керуючої пам'яті МК для всього мікропроцесорного
пристрою. Ця МК містить МК СРП БМК, мікрокоманду ОЗП, М пристрої
запровадження - висновку.
МК МК МК МК
...
ЦПЭ БМК ОП УВВ
Сформовані МК передаються на відповідні вузли мікропроцесорного
пристрою. БМК служить для формування адреси такої МК. Якщо немає
ніяких умовних переходів, то така МК зчитується з такого осередку ПЗП, на
якому організована керуюча пам'ять. МК БМК містить поле умовних
переходів УА6... УА0, у якому записується адреса такої МК; поле керування
ознаками УФ3... УФ0 і поле керування завантаженням мікрокоманди ЗМ.
Поле керування ознаками указує вид переходу: умовний, безумовний і
засіб формування адреси такої МК при наявності умовного переходу.
Керуючі сигнали для керування ознаками - це сигнал переносу і сигнал зсуву
вправо. При наявності в поле керування завантаженням ЗМ = 1, адреса МК
завантажується в регістр адреси МК. МК БМК:

Поле умовних переходів Поле керування ознаками Поле керування


YA6 ... YA0 УФ3 ... УФ0 завантаженням ЗМ

МК операційного устрою містить код мікрооперації F6... F4, номер


регістра загального призначення F3... F0, що є приймачем або джерелом
інформації. Сигнал, що маскує, ДО, у загальному випадку є двохрозрядним,
ВА - сигнал дозволу видачі адреси і ВД - сигнал дозволу видачі даних. МК
ОУ:

F6... F4 F3... F0 K BA ВД

Блок пріоритетного переривання (БПП). Кожній команді відповідає

22
мікропрограма, що складається з окремих мікрокоманд (МК). На входи К7...
К0 БМК подається код команди, що є адресою перший МК мікропрограми
даної команди в керуючій пам'яті. 1-ая МК містить указівки, як формувати
адресу другий МК. Ця адреса формується логічною схемою визначення
адреси такої МК. Остання МК кожної мікропрограми містить указівка JZR
про перехід у нульовий рядок 15-ой колонки. По цій адресі утримується МК,
у поле ЗМ якої утримується "1". До цього часу на входах К7... К0 надходить
код такої команди, що по сигналі ЗМ=1 завантажуються в регістр адреси МК.
Так відбувається виконання програми у відсутність переривань.
На виході переривання (ПР) БПП формується сигнал, при цьому
встановлюється такий рівень, що мультиплексор М передає номер рядка з
виходу БМК на вхід Астр ПЗП. При виконанні JZR (перехід за адресою
(0,15)) формується сигнал строб дозволу переривання рівний "1", що
подається на вхід БПП. Якщо під час виконання поточної програми надійшов
запит на переривання, то мікропроцесор, виконавши поточну команду
передає в стек номер такої команди (команда повернення) і результат
виконання поточної команди.
При наявності "1" на вході строб дозволу переривання (СРП) і запиту
на вході запиту (ЗП), БПП на виході переривання виробляє сигнал, що
відключає мультиплексор М від виходу МА1..МА4 подає номер рядка в ПЗП
з виходу код переривання (КП) БПП.
Перша МК першої команди, що перериває, містить код адреси (31,15),
де 15 - номер колонки, що зберігся при виконанні останньої МК поточної
команди, а 31 = 11111(2) номер рядка в 15-ой колонці, що утвориться
подачею +5В через резистор на входи Астр ПЗП. Блок БПП містить
спеціальний блок рівня пріоритету. Пріоритет кодується 3-х розрядним
кодом. Перевага має устрій із більш низьким рівнем пріоритету. Якщо
надійшов запит відразу від декількох устроїв, то устрій порівняння
пріоритету виявляє більш низький рівень і цей запит задовольняється
першим. По закінченні переривання програми остання МК, якої є JZR
(перехід за адресою (0,15) ) по сигналі ЗМ = 1 завантажується чергова
команда основної програми.
Організація пам'яті ЕОМ. Пам'ять ЕОМ організована по ієрархічній
градації, тобто пристрої які мають великий обсяг пам'яті мають меншу
швидкодію. Найбільшою швидкодією володіють НОЗП (понад ОЗП). Вони
звичайно реалізуються на регістрах, тому в МП НОЗП називається РОН.
Обсяг пам'яті НОЗП дуже малий. Звичайно пам'яттю машини називають
ОЗП. Швидкодія ОЗП повинна бути не менше ніж швидкодія електронних
схем операційної частини, пам'яті повинна бути достатньо для запису
програми розв'язуваної задачі, а так само вихідних даних, проміжних і
кінцевих результатів. Зовнішні пристрої, що запам'ятовують, мають
практично необмежений обсяг пам'яті і найменшої швидкодії. ОЗП не
зберігає інформацію при відключенні живлення. Існують ПЗП, що зберігають
інформацію при відключенні живлення. ПЗП працюють тільки в режимі
читання, а ОЗП в режимі читання і запису. Існують перепрограмовані ПЗП
23
(ППЗП), що зберігають інформацію при відключенні живлення і
припускають запис інформації. При цьому час запису в багато разів більше
часу зчитування. Зчитування інформації з ОЗП може відбуватися з руйнацією
інформації або без.
При руйнації інформації при зчитуванні необхідно додатковий час на
відновлення інформації. Час зчитування складається з часу пошуку адреси,
часу власного зчитування і часу регенерації (відновлення) ліченої інформації.
ОЗП реалізується на мікросхемах. Елемент пам'яті реалізований на тригерах.
Тригер може бути побудований на біполярних і уніполярних транзисторах.

Рис. 2.5 – Організація пам’яті

По шині адреси (ША) у регістр адреси надходить n-розрядний


двійковий код адреси. n1 розряд використовується для запису номера рядка, а
n2 - для запису номера стовпчика. Дешифратори рядків і стовпчиків
виробляють керуючі сигнали на відповідних виходах. Під дією цих керуючих
сигналів відбувається вибір що адресується елемента пам'яті, якщо на вході
вибору кристала (ВК) дешифратора рядків "1", те ОЗП знаходиться в режимі
збереження. Якщо на ВК "0", те ОЗП знаходиться або в режимі читання, або
в режимі запису. Нормальним є режим читання. Інформація надходить через
підсилювач читання (УЧ) і вихідний тригер.
Режим запису забезпечується подачею сигналу дозволу запису (РЗ) на
підсилювач запису (ПЗ). Інформація через тригер і УЗ подаються на
інформаційні ланцюги 1 і 0. Тригери реалізовані на МДП - транзисторах.
Транзистори VT2 і VT4 є навантаженням тригера. Напруга затвор -
початок цих транзисторів має нульове значення, тому вони завжди відкриті.
Тригер реалізований на VT1 і VT3. У ньому записана "1", якщо VT1
закритий. При збігу сигналів від дешифратора рядків і стовпчиків тригер
готовий до запису або зчитування інформації. Керуючий сигнал із виходу
дешифратора стовпчиків діє на VT7 і VT8. Керуючий сигнал із виходу
дешифратора рядків впливає на VT5 і VT6.
Запис "1" проводиться в тому випадку, якщо на інформаційний ланцюг
24
(ІЛ) нуля надходить логічний "0". Для запису "0" логічний "0" подається в
ІЛ1.
У режимі читання стан тригера передається через відкриті VT5-VT8 в
інформаційні ланцюги. Якщо елемент пам'яті береже "1", те рівень "1"
надходить у ІЛ1, а якщо "0", те рівень логічної "1" надходить у ІЛ0.
Постійні запам'ятовуючі пристрої. Відрізняється від ОЗП тим, що в
нього інформація записується однократно. Для ПЗП можливий тільки режим
читання. Інформація з ПЗП зчитується по словам. В однім рядку записується
декілька слів. Вибір слова в рядку проводиться за допомогою селектора.
Селектор зібраний на VT0 - VT7. Буфер вводу - виводу зібраний на
багатоемітерних транзисторах БТ1 - БТ4. Ввід і вивід кодів слів проводиться
з тих самих виходів: 1, 2, 3, 4.
На дешифратор рядків передається 5-ти розрядний номер рядка, що
містить вісім чотирьох розрядних слів. З дешифратора слів номер слова
передається на селектор. Наприклад, нехай обрано (1) рядок і (0) слово.
Необхідно записати з другого входу "1". Транзистор БТ2 відчиниться. Тік
цього транзистора протікає через резистор R і закриває 2-й транзистор в
обраної "четвірці". У такий спосіб стан транзистора визначається записаним
розрядом: при записі "1" - закритий, при записі "0" - відкритий. Потім
підвищують напругу колекторного живлення накопичувача. Через відкритий
транзистор потече підвищений тік, що пропалить перемичку, яка виготовлена
з ніхрому з опором у декілька десятків Ом. Для її пропалювання достатній
струм 20-30 мА. Перед записом слів опорна напруга, подана на
багатоемітерний транзистор збільшується з тим, щоб транзистор знаходився
в стані, близькому до закритого. При читанні інформації також відбувається
вибір слова і якщо перемичка в транзисторі не пропалений, то тік цього
транзистора створює падіння напруги на R0, що закриває багатоемітерний
транзистор. Стан багатоемітерного транзистора визначає код на виході. В
такий спосіб програму пропалює користувач.

Практична робота №3
Дослідження логічних елементів
Мета роботи:
- теоретичне вивчення логічних елементів, що реалізовують
елементарні функції алгебри логіки (ФАЛ);
- експериментальне дослідження логічних елементів, побудованих на
вітчизняних мікросхемах серії К155.
Теоретичні питання
Математичною основою цифрової електроніки і обчислювальної
техніки є алгебра логіки або булева алгебра (на ім'я англійського математика
Джона Буля).
В булевій алгебрі незалежні змінні або аргументи (X) приймають тільки
два значення: 0 або 1. Залежні змінні або функції (Y) також можуть приймати
тільки одне з двох значень: 0 або 1. Функція алгебри логіки (ФАЛ)
25
представляється у вигляді:
У = F (X1; X2; X3 ... XN ).
Дана форма завдання ФАЛ називається алгебраїчною.
Основними логічними функціями є:
- логічне заперечення (інверсія):
У= X;
- логічне складання (диз’юнкція):
У = X1 + X2 або У = X1 V X2 ;
- логічне множення (кон’юнкція):
У = X1 • X2 або У = X1 Λ X2 .
До складніших функцій алгебри логіки відносяться:
- функція рівнозначності (еквівалентності):
У = X1 • X2 + X1 • X2 або У = X1 ~ X2 ;
- функція нерівнозначності (складання по модулю два):
У = X1 • X2 + X1• X2 або У = X1 ⊕ X2 ;
- функція Пірсу (логічне складання із запереченням):
У = X1+ X2 ;
- функція Шеффера (логічне множення із запереченням):
У = X1• X2 ;
Для булевої алгебри справедливі наступні закони і правила:
- розподільний закон:
X1 (X2 + X3) = X1 • X2 + X1 • X3
X1 + X2 • X3 = (X1 + X2) (X1 + X3) ;
- правило повторення:
X•X=X X+X=X;
- правило заперечення
X • X = 0, X + X = 1;
- теорема де Моргана
X1 + X 2 = X1 • X2 , X1 • X 2 = X1 + X2 ;
- тотожність
X • 1 = X, X + 0 = X, X • 0 = 0, X + 1 = 1.
Схеми, які реалізують логічні функції, називаються логічними
елементами. Основні логічні елементи мають, як правило, один вихід (Y) і
декілька входів, число яких рівно числу аргументів (X1;X2;X3 ... XN ). На
електричних схемах логічні елементи позначаються у вигляді прямокутників
з висновками для вхідних (зліва) і вихідних (справа) змінних. Усередині
прямокутника зображується символ, що вказує функціональне призначення
елемента.
На рис. 3.1-3.10 представлені логічні елементи, які реалізують
розглянуті функції. Там же представлені так звані таблиці станів або таблиці
істинності, відповідні логічні функції, що описують, в двійковому коді у
вигляді станів вхідних і вихідних змінних. Таблиця істинності є також
табличним способом завдання ФАЛ.
На рис. 3.1 представлений елемент ні, що реалізовує функцію логічного
26
заперечення У = X .

Рис. 3.1 – Функція логічного заперечення


Елемент “АБО” (рис. 3.2) і елемент “І” (рис. 3.3) реалізують функції
логічного складання і логічного множення відповідно.

Рис. 3.2 – Елемент “АБО”

Рис. 3.3 – Елемент “І”

Функції Пірсу і функції Шеффера реалізуються за допомогою


елементів “АБО-НІ” і “І-НІ”, представлених на рис. 3.4 і рис. 3.5 відповідно.

Рис. 3.4 – Елемент “АБО-НІ”

Рис. 3.5 – Елемент “І-НІ”

Елемент Пірсу можна представити у вигляді послідовного з'єднання


елемента “АБО” і елемента (рис. 3.6) „НІ”, а елемент Шеффера - у вигляді
послідовного з'єднання елемента “І” і елемента “НІ” (рис. 3.7).

27
Рис. 3.6 – Елемент Пірсу

Рис. 3.7 – Елемент Шеффера

На рис. 3.8 і рис. 3.9 представлені елементи “Виключаюче АБО” і що


“Виключаюче АБО - НІ”, що реалізують функції нерівнозначності і
нерівнозначності із запереченням відповідно.

Рис. 3.8 – Елемент “Виключаюче АБО”

Рис. 3.9 – Елемент “Виключаюче АБО - НІ”

Логічні елементи, які реалізують операції кон’юнкції, диз’юнкції,


функції Пірсу і Шеффера, можуть бути, в загальному випадку, n-вхідні. Так,
наприклад, логічний елемент з трьома входами, що реалізують функцію
Пірсу, має вигляд, представлений на рис. 3.10.

Рис. 3.10 – Елемент Пірсу з трьома входами

В таблиці істинності (рис. 3.10) на відміну від таблиць для рис. 3.2 є
вісім значень вихідної змінної Y. Ця кількість визначається числом можливих
комбінацій вхідних змінних N, яке, в загальному випадку, рівно: N = 2n, де n –
число вхідних змінних.
Логічні елементи використовуються для побудови інтегральних
28
мікросхем, що виконують різні логічні і арифметичні операції і мають різне
функціональне призначення. Мікросхеми типу К155ЛН1 і К155ЛА3,
наприклад, мають в своєму складі шість інвертувань і чотири елементи
Шеффера відповідно (рис. 3.11), а мікросхема К155ЛР1 містить елементи
різного вигляду (рис. 3.12).

Рис. 3.11 - Мікросхеми типу К155ЛН1 і К155ЛА3

Рис. 3.12 - Мікросхема К155ЛР1

ФАЛ будь-якої складності можна реалізувати за допомогою вказаних


логічних елементів. Як приклад розглянемо ФАЛ, задану у формі алгебри, у
вигляді:
Y = X1 • X 2 • X3 + X1 • X 2 • X3 + X1 • X 2 • X3 + X1 • X 2 • X3
Спростимо дану ФАЛ, використовуючи вищенаведені правила.
Отримаємо:
Y = X1 • X 2 • X3 + X1 • X 2 • X3 + X1 • X 2 • X3 + X1 • X 2 • X3 =
= X1 • X 2 • X3 + X1 • X 2 (X3 + X3) + X1 • X 2 • X3 =
= X1 • X 2 • X3 + X1 • X 2 + X1 • X 2 • X3 = X1 • X 2 • X3 + X1(X 2 + X 2 • X3) =
= X1 • X 2 • X3 + X1(X 2 + X 2)(X 2 + X3) = X1 • X 2 • X3 + X1(X 2 + X3) =
= X1 • X 2 • X3 + X1 • X 2 + X1 • X3
Проведена операція носить назву мінімізації ФАЛ і служить для
полегшення процедури побудови функціональної схеми відповідного
цифрового пристрою.
Функціональна схема пристрою, що реалізовує розглянуту ФАЛ,
представлена на рис. 3.13.

Рис. 3.13 – Функціональна схема

29
Практична робота №4
Тема: Основи роботи з MATLAB
Мета: Ознайомлення з системою MATLAB

Теоретичні питання
Середовище MATLAB включає інтерпретатор команд на мові високого
рівня, графічну систему, пакети розширень і реалізована на мові С. Вся
робота організовується через командне вікно (Command Window), яке
з'являється при запуску програми matlab.exe. В процесі роботи дані
розташовуються в пам'яті (Workspace), для зображення кривих, поверхонь і
інших графіків створюються графічні вікна.
В командному вікні в режимі діалогу проводяться обчислення.
Користувач вводить команди або запускає на виконання файли з текстами на
мові MATLAB. Інтерпретатор обробляє введене і видає результати: числові і
рядкові дані, попередження і повідомлення про помилки. Рядок введення
помічений знаком >>. В командному вікні показуються що вводяться з
клавіатури числа, змінні, а також результати обчислень. Імена змінних
повинні починатися з букви. Знак = відповідає операції привласнення.
Натиснення клавіші Enter примушує систему обчислити вираз і показати
результат.
Всі значення змінних, обчислені протягом поточного сеансу роботи,
зберігаються в спеціально зарезервованій області пам'яті комп'ютера, яка
називається робочим простором системи MATLAB (Workspace). Командою
clc можна стерти вміст командного вікна, проте це не торкнеться вмісту
робочого простору. Коли зникає необхідність в зберіганні ряду змінних в
поточному сеансі роботи, їх можна стерти з пам'яті комп'ютера командою
clear або clear(имя1, имя2). Перша команда видаляє з пам'яті всі змінні, а
друга - змінні з іменами имя1 і имя2. Командою who можна вивести список
всіх змінних, що входять в даний момент в робочий простір системи. Для
огляду значення будь-якої змінної з поточного робочого простору системи
достатньо набрати її ім'я і натискувати клавішу Enter.
Після закінчення сеансу роботи з системою MATLAB всі раніше
обчислені змінні втрачаються. Щоб зберегти у файлі на диску комп'ютера
вміст робочого простору системи MATLAB, потрібно виконати команду
меню File I Save Workspace As. По замовчуванню розширення імені файлу
mat, тому такі файли прийнято називати mat-файлами. Для завантаження в
пам'ять комп'ютера раніше збереженого на диску робочого простору
потрібно виконати команду меню: File/Load Workspace .
Дійсні числа і тип даних double. Система MATLAB представляє на
машинному рівні всі дійсні числа задані мантисою і показником ступеня,
наприклад, 2.85093Е+11. Цей основний тип даних носить назву double.
MATLAB за умовчанням використовує формат short для виводу дійсних
чисел, при якому показуються тільки чотири десяткові цифри після коми.
Введіть з клавіатури приклад:
» res=5.345*2.868/3.14-99.455+1.274
30
Отримайте результат обчислення:
» res = -93.2990
Якщо потрібне повне представлення дійсного числа res, введіть з
клавіатури команду:
» format long
і далі наберіть ім'я змінної
» res
натисніть клавішу Enter і отримайте більш докладну інформацію:
» res = -93.29900636942675
Тепер всі результати обчислень показуватимуться з такою високою
точністю протягом даного сеансу роботи в середовищі системи MATLAB.
Над дійсними числами і змінними типу double проводяться
арифметичні операції: складання +, віднімання -, множення *, ділення / і
зведення в ступінь ^ .
Якщо немає необхідності бачити в командному вікні результат
обчислення деякого виразу, то в кінці введеного виразу слід поставити
крапку з комою і лише після цього натискувати Enter.
В системі MATLAB присутні всі основні елементарні функції для
обчислень з дійсними числами. Будь-яка функція характеризується своїм
ім'ям, списком вхідних аргументів (перераховуються через кому і стоять
всередині круглих дужок, наступних за ім'ям функції) і обчислюваним (що
повертається) значенням. Список всіх в системі елементарних математичних
функцій може бути отриманий по команді help elfun. Обчисліть вираз,
включаючи обчислення функції арксинус:
» 2*asin(1)
Переконайтеся, що вийшов наступний результат:
» ans = 3.1416
відповідне числу π.
В системі MATLAB для обчислення числа π є спеціальне позначення:
pi.
MATLAB має також логічні функції, функції, пов'язані з
цілочисельною арифметикою (округлення до найближчого цілого: round,
усікання дробової частини числа: fix). Є ще функція mod – залишок від
ділення з урахуванням знака, sign – знак числа, lcm – якнайменше загальне
кратне, реrms – обчислення числа перестановок і nchoosek – числа поєднань і
багато інших. 1
Крім арифметичних операцій над операндами типу double виконуються
ще операції відношення і логічні операції. Операції відношення порівнюють
між собою два операнди по величині. Ці операції записуються наступними
знаками або комбінаціями знаків:

31
Символьні позначення операцій відношення
< <= > >= ~= ==
Менше або Більше або
Менше Більше Не рівно Рівно
рівно рівно
У разі істинності операції відношення її величина рівна 1, а у разі
помилковості – 0. Операції відношення мають більш низький пріоритет, ніж
арифметичні операції.
Наберіть з клавіатури вираз з операціями відношення і обчисліть його:
» a=1; b=2; c=3;
» res=(a<b)+(c~=b)+(b==a)
Ви отримаєте наступний результат:
» res = 2
Логічні операції над дійсними числами позначаються знаками:
Символьні позначення логічних операцій
& | ~
І АБО НІ

Перші дві з цих операцій є бінарними (двооперандними), а остання –


унарна (однооперандна). Логічні операції трактують свої операнди як
«істинні» (не рівні нулю) або «помилкові» (рівні нулю). Якщо обидва
операнди операції «І» істинні (не рівні нулю), то результат цієї операції
рівний 1 («істина»); у всій решті випадків операція «І» виробляє значення 0
(«не істина»). Операція «АБО» виробляє 0 («не істина») тільки у разі, коли є
помилковими (рівними нулю) обидва операнди. Операція «НІ» інвертує «не
істина» на «істину». Логічні операції мають найнижчий пріоритет.
Комплексні числа і комплексні функції. Комплексні змінні, як і
дійсні автоматично мають тип double і не вимагають ніякого попереднього
опису. Для запису уявної одиниці зарезервовані букви i або j. У разі, коли
коефіцієнтом перед уявною одиницею є не число, а змінна, між ними слід
обов'язково використовувати знак множення. Отже, комплексні числа можна
записувати таким чином:
» 2+3i;
» -6.789+0.834e-2*i;
» 4-2j;
» x+y*i;
Майже всі елементарні функції допускають обчислення з
комплексними аргументами. Обчисліть вираз:
» res=sin(2+3i)*atan(4i)/(1-6i)
Вийде результат: 10 -1.8009 - 1.9190i
Спеціально для роботи з комплексними числами призначені наступні
функції: abs (абсолютне значення комплексного числа), conj (комплексно
зв'язане число), imag (уявна частина комплексного числа), real (дійсна
частина комплексного числа), angle (аргумент комплексного числа), isreal
(«істина», якщо число дійсне).
Числові масиви. Для створення одновимірного масиву можна

32
використовувати операцію конкатенації, яка позначається за допомогою
квадратних дужок [ ]. Елементи масиву поміщаються між дужками і
відділяються один від одного пропуском або комою:
» al=[1 2 3]; d=[1+2i,2+3i,3-7i];
Для доступу до індивідуального елемента масиву потрібно застосувати
операцію індексації, для чого після імені елемента вказати в круглих дужках
індекс елемента.
Можна змінювати елементи вже сформованого масиву шляхом
застосування операцій індексації і привласнення. Наприклад, вводячи: »
al(3)=789; ми змінимо третій елемент масиву. Або, після введення: »
al(2)=(al(1)+al(3))/2; другий елемент масиву стане рівним середньому
арифметичному першого і третього елементів. Запис неіснуючого елемента
цілком допустимий – вона означає додавання нового елемента до вже
існуючого масиву: » al(4)=7;
Застосовуючи після виконання цієї операції до масиву а1 функцію
length, знаходимо, що кількість елементів в масиві зросла до чотирьох: »
length(al) ans = 4
Ту ж саму дію – «подовження масиву а1» - можна виконати і за
допомогою операції конкатенації: » al=[al 7];
Можна задати масив, прописуючи всі його елементи по окремості: »
a3(1)=67; a3(2)=7.8; a3(3)=0.017; Проте цей спосіб створення не є
ефективним.
Ще один спосіб створення одновимірного масиву заснований на
застосуванні спеціальної функції, що позначається двокрапкою (операція
формування діапазону числових значень). Через двокрапку слід набрати
перше число діапазону, крок (приріст) і кінцеве число діапазону. Наприклад:
» diap=3.7:0.3:8.974;
Якщо не потрібно виводити на екран весь масив, то в кінці набору
(після кінцевого числа діапазону) слід набрати крапку з комою. Щоб взнати,
скільки елементів в масиві, слід викликати функцію length (ім'я масиву).
Для створення двовимірного масиву (матриці) також можна
використовувати операцію конкатенацію. Елементи масиву набираються
один за іншим згідно їх розташуванню в рядках, як роздільник рядків
використовується крапка з комою.
Введіть з клавіатури: » a=[1 2; 3 4; 5 6],
отримаємо:
»а=
1 2
3 4
5 6
Отриману матрицю а розміром 3x2 (першим указується число рядків,
другим – число стовпців) можна сформувати також вертикальною
конкатенацією вектор-рядків: » a=[[1 2];[3 4];[5 6]]; або горизонтальною
конкатенацією вектор-стовпців:
» a=[[1;3;5],[2;4;6]];
33
Двовимірні масиви можна задати також за допомогою операції
індексації, прописуючи по окремості його елементи. Номер рядка і стовпця,
на перетині яких знаходиться елемент масиву, що задається, указуються
через кому в круглих дужках.
Наприклад: » а(1,1)=1; а(1,2)=2; а(2,1)=3; » а(2,2)=4; а(3,1)=5; а(3,2)=6;
Проте буде набагато ефективно, якщо до початку прописування
елементів масиву, створити масив потрібного розміру функціями ones (m,n)
або zeros(m,n), заповнений одиницями або нулями (m – число рядків, n –
число стовпців). При виклику цих функцій заздалегідь виділяється пам'ять
під заданий розмір масиву, після цього поступове прописування елементів
потрібними значеннями не вимагає перебудови структури пам'яті, відведеної
під масив. Використовування цих функцій можливо і при завданні масивів
інших розмірів.
Якщо після формування масиву Х буде потрібно, не змінюючи
елементів масиву, змінити його розміри, можна скористатися функцією
reshape(Х, М, N), де M і N – нові розміри масиву Х.
Поміняти місцями рядки матриці з її стовпцям можна операцією
транспортування, яка позначається знаком ' (апостроф).
Наприклад:
» A=[1 1 1; 2 2 2; 3 3 3];
» B=A' B =
1 2 3
1 2 3
1 2 3
Обчислення з масивами. В традиційних мовах програмування
обчислення з масивами здійснюються поелементно в тому значенні, що
потрібно запрограмувати кожну окрему операцію над окремим елементом
масиву. В М-мові системи MATLAB допускаються могутні групові операції
над всім масивом відразу. Саме групові операції системи MATLAB
дозволяють надзвичайно компактно задавати вирази, при обчисленні яких
реально виконується гігантський об'єм роботи.
Операції додавання і віднімання матриць (знайомі вам з лінійної
алгебри) позначаються стандартними знаками + і -. Задайте матриці А і В і
виконаєте операцію додавання матриць:
» A=[1 1 1; 2 2 2; 3 3 3]; B=[0 0 0; 7 7 7; 1 2 3];
» A+B
Якщо використовуються операнди різних розмірів, видається
повідомлення про помилку, за винятком випадку, коли один з операндів є
скаляром. При виконанні операції А + скаляр (А – матриця) система
розширить скаляр до масиву розміру А, який і складається далі поелементно
з А.
» A+5
ans = 6 6 6
7 7 7
8 8 8
34
Для поелементного перемножування і поелементного ділення масивів
однакових розмірів, а також поелементного зведення в ступінь масивів,
застосовуються операції, що позначаються комбінаціями двох символів: .* ./
і .^. Використовування комбінацій символів пояснюється тим, що символами
* і / позначені спеціальні операції лінійної алгебри над векторами і
матрицями.
Окрім операції ./, яка називається операцією правого поелементного
ділення є ще операція лівого поелементного ділення .\. Вираз А / В приводить
до матриці з елементами А (k, m) /В (k, m), а вираз А .\ В приводить до
матриці з елементами В(k,m)/А(k,m).
Знак * закріплений за перемножуванням матриць і векторів в значенні
лінійної алгебри. Знак \ закріплений в системі MATLAB за рішенням досить
складної задачі лінійної алгебри - знаходженням коренів системи лінійних
рівнянь. Наприклад, якщо вимагається вирішити систему лінійних рівнянь
АX = b, де А - задана квадратна матриця розміру N x N, b - заданий вектор-
стовпець довжини N, то для знаходження невідомого вектор-стовпця X
достатньо обчислити вираз А \ b.
Типові задачі аналітичної геометрії в просторі, пов'язані із
знаходженням довжин векторів і кутів між ними, з обчисленням скалярного і
векторного добутків, легко розв'язуються різноманітними засобами системи
MATLAB. Наприклад, для знаходження векторного добутку векторів
призначена спеціальна функція cross, наприклад:
» u=[1 2 3]; v=[3 2 1];
» cross(u,v)
» ans =
-4 8 -4
Довжина вектора обчислюється за допомогою скалярного добутку і
функції витягання квадратного кореня, наприклад: » sqrt(sum(u.*u))
Раніше розглянуті для скалярів операції відношення і логічні операції
виконуються у разі масивів поелементно. Обидва операнди повинні бути
однакових розмірів, при цьому операція повертає результат такого ж розміру.
Серед функцій, що генерують матриці із заданими властивостями,
згадаємо тут функцію eye, що проводить одиничні квадратні матриці, а також
широко вживану на практиці функцію rand, що генерує масив з випадковими
елементами, рівномірно розподіленими на інтервалі від 0 до 1. Наприклад,
вираз » F=rand(3) породжує масив випадкових чисел розміром 3х3 з
елементами, рівномірно розподіленими на інтервалі від 0 до 1.
Якщо викликати цю функцію з двома аргументами, наприклад
R=rand(2,3),то вийде матриця R випадкових елементів розміром 2x3. При
виклику функції rand з трьома і більш скалярними аргументами проводяться
багатовимірні масиви випадкових чисел.
Визначник квадратної матриці обчислюється за допомогою функції det.
Серед функцій, що проводять найпростіші обчислення над масивами,
крім розглянутої вище функції sum, згадаємо ще функцію prod, яка у всьому
аналогічна функції sum, тільки обчислює вона не суму елементів, а їх
35
добуток. Функції max і min шукають відповідно максимальний і мінімальний
елементи масивів. Для векторів вони повертають єдине числове значення, а
для матриць вони породжують набір екстремальних елементів, обчислених
для кожного стовпця. Функція sort сортує в зростаючому порядку елементи
одновимірних масивів, а для матриць вона проводить таке сортування для
кожного стовпця окремо.
Нарешті, розглянемо унікальну можливість М-мови системи MATLAB
проводити групові обчислення над масивами, використовуючи звичайні
математичні функції, які в традиційних мовах програмування працюють
тільки з скалярними аргументами. В результаті за допомогою украй
компактних записів, зручних для введення з клавіатури в інтерактивному
режимі роботи з командним вікном системи MATLAB, вдається провести
великий об'єм обчислень. Наприклад, всього два короткі вирази:
» x=0:0.01:pi/2; y=sin(x);
обчислюють значення функції sin відразу в 158 крапках, формуючи два
вектори x і у з 158 елементами кожний.

Завдання до практичної роботи:


Завдання 1. Задати матрицю А за допомогою операції конкатенації.
Завдання 2. Згенеруйте масив В розміром 3х3 з випадковими
елементами, рівномірно розподіленими на інтервалі від 0 до 1.
Завдання 3. Виконайте дії:
• А + 10*B, A*B, BT, поелементно помножити А на В,
• розташувати елементи матриці А за збільшенням (по стовпцях),
• визначити максимальний і мінімальний елементи матриці В,
• обчислити визначника матриці В.
Завдання 4. Задати масив С, використовуючи операцію індексації і
одну з функцій: ones або zeros.
Завдання 5. Вирішити систему лінійних рівнянь алгебри: A*X = В.
Завдання 6. Визначити масив D:
D =| sin(A)+ B3/5| .
Завдання 7. Для двох векторів:
а = {3,2; 2,8; -1,4} b= {0,6; 3,2; -4,8}
визначте: a ⋅ b ; a/b , а також відповідні поелементні операції.
r r rr

Практична робота №5
Написання програм з використанням умовних операторів
Мета: Ознайомлення з умовними операторами системи MATLAB
Теоретичні питання
Управління потоками
MATLAB має вісім видів структур управління потоками:
• оператор if;
• оператор switch;

36
• цикли for;
• цикли while;
• оператор break;
• оператор continue;
• try…catch;
• return.
Усі конструкції програм, засновані на логічних умовах,
використовують команду end для вказівки кінця відповідного блоку.
if. Оператор if обчислює логічний вираз і виконує групу операторів,
якщо вираз істинний. Необов'язкові ключові слова elseif і else служать для
виконання альтернативних груп операторів. Ключове слово end, яке
узгоджується з if, завершує останню групу операторів. Таким чином, всі
групи операторів поміщено між чотирма ключовими словами, без
використання фігурних або звичайних дужок.
if (логічний вираз) logical_expression
оператори
end
Якщо логічний вираз істинний, тобто рівний 1, MATLAB виконує усі
оператори між рядками, що містять команди if і end. Після цього він
продовжує виконувати команди. що знаходяться за рядком з end. Якщо
логічний вираз помилковий, тобто дає логічний 0, MATLAB перескакує через
усі вирази між рядками з if і end, і продовжує свою роботу з рядка, що йде за
командою end.
При використанні з if, команди else і elseif дають наступні додаткові
можливості створення програм:
• команда else не має логічної умови. Оператори, пов'язані з цією
командою виконуються, якщо попередня умова команди if (і, можливо,
elseif) являється хибною.
• команда elseif має логічну умову, яка оцінюється, якщо попередня
умова команди if (і, можливо, elseif) помилкова. Якщо логічна умова
даної команди elseif є істинною, то виконуються відповідні оператори,
що слідують за цією командою. Ви можете мати довільне число команд
elseif в межах одного блоку з if.
Алгоритм MATLAB для створення магічного квадрата порядку n
включає три різні випадки : n непарне, n парне, але не ділиться на 4, і n парне
і ділиться на 4. Нижче наведений приклад відповідного коду.
if rem(n,2)~= 0
M = odd_magic(n)
elseif rem(n,4)~= 0
M = single_even_magic(n)
else
M = double_even_magic(n)
end
В даному прикладі три випадки є тими, що взаємно виключають, але

37
якби це було не так, то виконувалася б перша істинна умова.
Важливо зрозуміти, як оператор відношення і оператор if працюють з
матрицями. Коли ви хочете взнати, чи рівні дві змінні, потрібно
використовувати наступну конструкцію
if А == B, . . .
Це правильний код MATLAB і він здійснює те, що ви чекаєте, якщо А і
В є скалярами. Але коли А і В - матриці, А == В не працює, якщо вони не
рівні. Рівність матриць означає поелементну рівність. Фактично, якщо А і В
мають різні розміри, MATLAB видасть помилку.
Якщо логічна умова, пов'язана з if, призводить до нульового масиву, то
вона оцінюється як помилкова. Наприклад, якщо А є порожнім масивом, то
наступний блок
if A
S1
else
S0
end
виконує оператор S0.
Правильний спосіб визначення рівності між двома змінними - це
використовування функції isequal
if isequal(A,B), . . .
Далі наведений інший приклад, який досліджує це питання. Якщо А і B
являються скалярами, то нижче приведена програма ніколи не приведе до
неочікуваної ситуації. Але для більшості пар матриць, що використовуються,
включаючи наші магічні квадрати з переставленими стовпцями, жодна з умов
А > B, А < B або А ==B не є істиною для всіх елементів і тому виконується
випадок else.
if А > B
' greater '
elseif А < B
' less'
elseif А == B
' equal '
else
error ( ' Непередбачена ситуація ' )
end
Деякі функції можуть бути корисними для матричного порівняння при
використанні оператора if, наприклад
isequal
isempty
all
any
switch і case. Оператор switch виконує групу операторів, базуючись на
значенні змінної або виразу. Ключові слова case і otherwise розділяють ці
групи. Виконується тільки перший відповідний випадок. Необхідно
38
використовувати end для узгодження з switch.
switch вираз % Скаляр або рядок символів
case значення 1
оператори % Виконуються якщо вираз == значення 1
case значення 2
оператори % Виконуються якщо вираз == значення 2
……………………………………………………………………..
otherwise
оператори % Виконуються якщо вираз не відповідає ні
% одному значенню, пов'язаному з командами case
end
Даний блок складається з:
• Слова switch за яким йде вираз, який треба оцінити.
• Будь-якого числа блоків з командами case. Ці блоки складаються із
слова case, за яким в тому ж рядку слідує можливе значення виразу за
словом switch. Наступні рядки містять оператори, які необхідно
виконати при вказаному значенні виразу в першому рядку за словом
switch. Ці рядки можуть бути будь-ким допустимими виразами,
включаючи інші цикли switch. Виконання групи операторів, пов'язаних
з даною командою case припиняється, коли MATLAB зустрічає
наступну команду case або слово otherwise. Відмітимо, що завжди
виконується тільки перший відповідний блок з case.
• Не обов'язкової групи операторів, що починаються словом otherwise;
ця група оброблюється, якщо значення виразу не було перехоплене
яким-небудь попереднім блоком з case. Обробка групи операторів за
словом otherwise припиняється на команді end.
• Завершальної команди end.
Блок з командою switch працює шляхом порівняння вхідного
вираження, який може бути чисельним скаляром або рядком символів, з
кожним значенням ключів case. У разі багатьох виразів виконується який-
небудь (перший) блок, якщо справедлива логічна рівність значення==вираз.
При виразах у вигляді рядка символів, блок виконується, якщо істинний
вираз strcmp(значення, вираз) (команда strcmp здійснює логічне порівняння
рядків символів).
Логіка алгоритму магічних квадратів може бути описана на наступному
прикладі
switch (rem(n,4)==0) + (rem(n,2)==0)
case 0
M = odd_magic(n)
case 1
M = single_even_magic(n)
case 2
M = double_even_magic(n)
otherwise
error( ' Це неможливо ' )
39
end
Зауваження: в Matlab на відміну від С, оператор switch не
«провалюється». Якщо перший випадок являється істиною, то інші випадки
не перевіряються, виконуються. Таким чином немає необхідності
використовувати оператор break.

Практична робота №6
Написання програм з використанням циклічних операторів
Мета: Ознайомлення з циклічними операторами системи MATLAB
Теоретичні питання
Управління потоками
MATLAB має вісім видів структур управління потоками:
• оператор if;
• оператор switch;
• цикли for;
• цикли while;
• оператор break;
• оператор continue;
• try…catch;
• return.
Усі конструкції програм, засновані на логічних умовах,
використовують команду end для вказівки кінця відповідного блоку.
for. Цикл for повторює групу операторів фіксовану, наперед визначену
кількість разів. Ключове слово end обкреслює тіло циклу.
for index = start: increment: end
statements
end
де index - є змінюваним цілочисельним індексом з початковим і
кінцевим значеннями start і end і приростом increment. За умовчанням,
приріст дорівнює 1, але ви можете задати будь-який приріст, включаючи і
негативний. При позитивних індексах, виконання припиняється коли
значення індексу перевищує кінцеве значення end; при негативних приростах
виконання припиняється коли індекс стає менше кінцевого значення.
for n = 3:32
r(n)= rank(magic(n));
end
r
Крапка з комою після виразу в тілі циклу запобігає повторенням
виводу результатів на екран, а r після циклу виводить остаточний результат.
Хорошим стилем є відступи при використанні циклів для кращого
читання, особливо, коли вони вкладені.
for i = 1:m
for j = 1:n

40
H(ij)= 1/(i+j);
end
end
Використання як індексів масивів. Індекси команди for можуть бути
масивом значень. Наприклад, розглянемо масив А розмірністю m х n . Вираз
for i = A
statements
end
прирівнює індекс і вектору A(:, k). При першій ітерації значення k дорівнює
1; при другій ітерації k дорівнює 2, і так до тих пір, поки k не стане рівним n.
Іншими словами, цикл повторюється n разів, де n - число стовпців в A. При
цьому, при кожній ітерації індекс i являється вектором, що містить один із
стовпців матриці A.
while. Цикл while повторює групу операторів певну кількість разів,
поки виконується логічна умова. Ключове слово end обкреслює
використовувані оператори.
while expression
statements
end
Якщо логічний вираз expression має матричний вигляд, то для
продовження виконання циклу усі його елементи мають бути істинними,
тобто дорівнювати логічній одиниці. Щоб привести матричну умову до
скалярної, слід скористатися функціями all і any. Наприклад, наступний цикл
знаходить перше ціле число n, для якого факторіал n! є 100-значным числом
n = 1;
while prod(1: n) < 1e100
n = n + 1;
end
Для виходу з циклу while у будь-який момент треба застосувати в тілі
циклу команду break. При цьому, природно, слід сформувати відповідну
логічну умову виходу з циклу.
Нижче приведена повна програма, що ілюструє роботу операторів
while, if, else і end, яка використовує метод ділення відрізка навпіл для
знаходження нулів полінома.
а = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b (exp)
x = (a+b)/2;
fx = x^3-2*x-5;
if sign(fx)== sign(fa)
а = x; fa = fx;
else
b = x; fb = fx;
end
end
41
x
Результатом буде корінь полінома x3 -2x-5
x=
2.09455148154233
Для оператора while вірні ті ж застереження щодо матричного
порівняння, що і для оператора if, що обговорювалися раніше.
continue. Команда continue передає управління наступній ітерації в
циклах for або while, що призводить до перескакування через оператори, що
залишилися, в тілі циклу. У разі вкладених циклів, команда continue передає
управління до наступної ітерації зовнішніх по відношенню до цього циклу
команд for або while, тобто пропускаються тільки оператори цього
внутрішнього циклу, що залишилися. Для застосування цієї команди треба
сформувати відповідну логічну умову.
break. Оператор break дозволяє достроково виходити з циклів for або
while. У вкладених циклах break здійснює вихід тільки з самого внутрішнього
циклу.
Нижче представлений покращений варіант попереднього прикладу.
Чому використовування оператора break в даному випадку зручне?
а = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if fx ==0
break
elseif sign(fx)== sign(fa)
а = x; fa = fx;
else
b = x; fb = fx;
end
end
x
try…catch. Загальна форма послідовності команд try…catch має вигляд
try
statement
...,
statement
catch
statement
...,
statement
end
У цій послідовності виконуються оператори між командами try і catch
до тих пір, поки не відбувайся яка-небудь помилка обчислень. Тоді
управління передається («перехоплюється») послідовністю операторів між
42
командами catch і end. Для того, щоб розпізнати причину, що привела до
помилки, можна скористатися командою lasterr (остання помилка). Якщо
помилка трапляється між командами catch і end, то MATLAB завершує
обчислення, якщо тільки між попередніми командами catch і end не
встановлена інша послідовність команд try…catch.
return. Команда return припиняє виконання поточної послідовності
команд і повертає управління в викликаючу функцію (тобто "батьківську"
функцію, з якої була викликана поточна функція) або ж повертає управління
до клавіатури. Команда return так-же призводить до закінчення режиму
keyboard (остання команда, коли зустрічається в тілі програми, передає
управління клавіатурі; вона часто використовується при відладці програми).
За звичайних умов роботи викликана функція передає управління у
викликаючу функцію коли перша виконана повністю, тобто до кінця.
Команда return може бути включена в тіло функції, що викликається, для
того, щоб припинити її виконання при виконанні певних умов.
Підфункції. М-функції можуть містити коди більш ніж однієї функції.
Перша функція у файлі є головною функцією (primary function), яка має ім'я
самого М-файлу. Додаткові функції в межах цього файлу є підфункціями
(subfunctions), які «видимі» (тобто можуть бути викликані) тільки для
головної функції або інших підфункцій того ж файлу. Кожна підфункція
починається зі своєї лінії визначення. Усі підфункції слідують безпосередньо
один за одним. Порядок розташування різних підфункцій не має ніякого
значення, при цьому головна функція має бути обов'язково записана першою.
Наприклад
function [avg, med] = newstats(u) % Головна функція
% NEWSTATS Знаходить середнє
% значення і медіану за допомогою
% внутрішніх підфункцій
n = length(u);
avg = mean(u, n);
med = median(u, n);
function a = mean(v, n) % Підфункція
% Знаходить середнє значення
a = sum(v)/n;
function m = median(v, n) % Підфункція
% Знаходить медіану.
w = sort(v);
if rem(n, 2) == 1
m = w((n+1)/2);
else
m = (w(n/2)+w(n/2+1))/2;
end
Підфункції mean і median обчислюють середнє значення і медіану
вхідних даних. Головна функція newstats знаходить довжину вхідного
вектора даних і викликає підфункції, і передає ним дані довжини n. Функції в
43
межах одного і того ж файлу не мають загального доступу до яких-небудь
змінних, якщо тільки ви не оголосите ці змінні глобальними або ж не
передасте їх у вигляді аргументів у відповідні підфункції, як це реалізовано в
наведеному вище прикладі. Крім того, усі засоби допомоги ("help") мають
доступ тільки до головної функції в М-файлі. Коли ви викликаєте яку-небудь
функцію з М-файлу, MATLAB передусім перевіряє, чи не являється ця
функція підфункцією. Потім перевіряється, чи не являється ця функція
приватною функцією (private function), описаною в наступному розділі, і далі
шукаються стандартні М-файли на шляхах доступу MATLAB. Оскільки
підфункції перевіряються першими, ви можете «подавити» виклик будь-
якого існуючого М-файлу шляхом застосування підфункцій з тим же ім'ям,
як, приклад, ми мали в прикладі з функцією mean. В той же час, в межах
одного М-файлу усі підфункції повинні мати різні індивідуальні імена.
Приватні функції. Приватні функції є функціями, які знаходяться в
підкаталозі із спеціальним ім'ям private (приватний). Їх видно, тобто вони
можуть бути викликані, тільки з функцій в межах батьківського каталогу.
Наприклад, допустимо, що каталог newmath знаходиться на шляху доступу
MATLAB-а. Підкаталог в цій директорії newmath, названий private, містить
тільки функції, які можуть бути викликані з каталогу newmath. Оскільки
приватні функції є невидимими поза межами батьківського каталогу, вони
можуть використовувати імена, співпадаючі з іменами функцій в інших
каталогах. Ця властивість буває корисною, якщо ви хочете створити свою
версію якої-небудь конкретної функції, зберігаючи в той же час оригінальну
функцію в іншому каталозі. Оскільки MATLAB шукає серед приватних
функцій перш ніж перейти до пошуку в інших каталогах, він завжди знайде
приватну функцію, наприклад з ім'ям test.m, раніше ніж будь-яку іншу М-
функцію, названу тим же ім'ям test.m, але розташовану в інших каталогах. Ви
можете створювати свої приватні директорії просто шляхом створення
стандартних підкаталогів, названих private. При цьому не слід поміщати
директорії private на ваших шляхах доступу.

Практична робота №7
Тема: Побудова графіків функцій
Мета: Ознайомлення з методикою побудови графіків.

Теоретичні питання
Графічні можливості системи MATLAB є могутніми і різноманітними.
Вивчимо найбільш прості у використовуванні можливості.
Двохвимірна графіка. Сформуйте два вектори х і у: » x=0:0.01:2;
y=sin(x); Викличте функцію:
» plot(x,y
і ви тримаєте на екрані графік функції (рис. 7.1).

44
Рис. 7.1 – Графік функції y=sin(x)

MATLAB показує графічні об'єкти в спеціальних графічних вікнах, що


мають в заголовку слово Figure.
Не прибираючи з екрану дисплея перше графічне вікно, введіть з
клавіатури виразу
» z=cos(x);
» plot(x,z)
і отримаєте новий графік функції в тому ж самому графічному вікні
(при цьому старі осі координат і графік пропадають – цього також можна
добитися командою clf, командою cla видаляють тільки графік з приведенням
осей координат до їх стандартних діапазонів від 0 до 1).
Якщо потрібно другий графік провести «поверх першого графіка», то
перед вторинним викликом графічної функції plot потрібно виконати
команду hold on, яка призначена для утримання поточного графічного вікна:
» x=0:0.01:2; y=sin(x);
» plot(x,y)
» z=cos(x);
» hold on
» plot(x,z)
Практично теж саме вийде (рис. 7.2), якщо набрати:
» x=0:0.01:2; y=sin(x); z=cos(x);
» plot(x,y,x,z)

45
Рис. 7.2 – Графіки функцій y=sin(x), z=cos(x) (в одному графічному
вікні)

Якщо потрібно одночасно візуалізувати декілька графіків так, щоб


вони не заважали один одному, то це можна зробити двома способами.
Першим рішенням є побудова їх в різних графічних вікнах. Для цього перед
вторинним викликом функції plot слід набрати команду figure, яка створює
нове графічне вікно і примушує всі подальші за нею функції побудови
графіків виводити їх туди.
Другим рішенням показу декількох графіків без конфлікту діапазонів
осей координат є використовування функції subplot. Ця функція дозволяє
розбити область виводу графічної інформації на декілька підобластей, в
кожну з яких можна вивести графіки різних функцій.
Наприклад, для раніше виконаних обчислень з функціями sin і cos
побудуйте графіки цих двох функцій в першій підобласті, а графік функції
exp(х) – в другій підобласті одного і того ж графічного вікна (рис. 7.3):
» w=exp(x);
» subplot(1,2,1); plot(x,y,x,z)
» subplot(1,2,2); plot(x,w)

46
Рис. 7.3 – Графіки функцій y=sin(x), z=cos(x) і w=exp(x)

Діапазони змінних на осях координат цих підобластей незалежні один


від одного. Функція subplot приймає три числові аргументи, перший з яких
рівний числу рядів підобластей, другий рівний числу колонок підобластей, а
третій аргумент – номеру підобласті (номер відраховується уздовж рядів з
переходом на новий ряд). Зняти дію функції subplot можна командою: »
subplot(1,1,1).
Якщо для одиночного графіка діапазони зміни змінних уздовж однієї
або обох осей координат дуже великі, то можна скористатися функціями
побудови графіків в логарифмічних масштабах. Для цього призначені
функції semilogx, semilogy і loglog.
Побудувати графік функції в полярних координатах (рис. 7.4) можна за
допомогою графічної функції роlar.
» phi=0:0.01:2*pi; r=sin(3*phi);
» роlar(phi,r)

Рис. 7.4 – Графік функції r=sin(3*phi) в полярних координатах

47
Розглянемо додаткові можливості, пов'язані з управлінням
зовнішнім виглядом графіків – завдання кольору і стилю ліній, а також
розміщення різних написів в межах графічного вікна. Наприклад, команди
» x=0:0.1:3; y=sin(x);
» plot(x,y,'r-',x,y,'ko')
дозволяють додати графіку вигляд червоної суцільної лінії (рис. 7.5), на
якій в дискретних обчислюваних крапках проставляють чорні кола. Тут
функція plot двічі будує графік однієї і тієї ж функції, але в двох різних
стилях. Перший з цих стилів відзначений як 'r-', що означає проведення лінії
червоним кольором (буква r), а штрих означає проведення суцільної лінії.
Другий стиль, помічений як 'ko', означає проведення чорним кольором (буква
к) кіл (буква о) на місці обчислюваних точок.

Рис. 7.5 – Побудова графіка функції y=sin(x) в двох різних стилях

В загальному випадку функція plot (x1, y1, s1, x2, y2, s2) дозволяє
об'єднати в одному графічному вікні декілька графіків функцій y1(x1), y2(x2)
. провівши їх із стилями s1, s2 . і т.д.
Стилі s1, s2 задаються у вигляді набору трьох символьних маркерів,
укладених в одиночні лапки (апострофи). Один з цих маркерів задає тип лінії
(таблиця 7.1). Інший маркер задає колір (таблиця 7.2). Останній маркер задає
тип «крапок», що проставляються (таблиця 7.3). Можна вказувати не всі три
маркери. Тоді використовуються маркери, встановлені за умовчанням.
Порядок в якому вказують маркери, не є істотним, тобто 'r+-' і '-+r' приводить
до однакового результату.
Таблиця 7.1.
Маркери, які задають тип лінії.
Маркер - -- : -.
Тип лінії Неперервна Штрихова Пунктирна Штрихпунктирна

48
Таблиця 7.2.
Маркери, які задають колір лінії
Маркер Колір лінії Маркер Колір лінії
с Голубий g Зелений
m Фіолетовий b Синій
у Жовтий w Білий
r Червоний к Чорний

Таблиця 7.3.
Маркери, які задають тип крапки
Маркер . + * о х
Тип крапки Крапка Плюс Зірочка Кружок Хрестик

Якщо в рядку стилю поставити маркер на тип крапки, але не


проставити маркер на тип лінії, то тоді відображаються тільки обчислювані
крапки, а безперервною лінією вони не з'єднуються.
Тепер перейдемо до оформлення осей координат, до написів на осях.
Система MATLAB встановлює межі на горизонтальній осі рівними тим
значенням, що вказані користувачем для незалежної змінної. Для залежної
змінної по вертикальній осі MATLAB самостійно обчислює діапазон зміни
значень функції. Якщо ми хочемо відмовитися від цієї особливості
масштабування при побудові графіків в системі MATLAB, то ми повинні
явним чином вказати свої межі змінних по осях координат. Це робиться за
допомогою функції ахis( [ xmin, xmax, ymin, ymax ] ).
Для проставляння різних написів на отриманому малюнку
застосовують функції xlabеl, ylabеl, title і text. Функція xlabеl створює підпис
на горизонтальнії осі, функція ylabеl –для вертикальної осі (причому ці
написи орієнтовані уздовж осей координат). Якщо вимагається розмістити
напис в довільному місці малюнка, застосовуємо функцію text. Загальний
заголовок для графіка створюється функцією title. Крім того,
використовуючи команду grid on, можна нанести вимірювальну сітку на всю
область побудови графіка. Наприклад (рис. 7.6):

49
Рис. 7.6 – Графік функції y=sin(x), побудований в двох стилях, з
написами на координатних осях і на малюнку

» x=0:0.1:3; y=sin(x);
» plot(x,y,'r-',x,y,'ko')
» title('Function sin(x) graph');
» xlabel('xcoordinate'); ylabel('sin(x)');
» text(2.1, 0.9, '\leftarrowsin(x)'); grid on
Напис функцією text розміщується починаючи від крапки з
координатами, вказаними першими двома аргументами. За умовчанням
координати задаються в тих же одиницях вимірювання, що і координати,
вказані на горизонтальній і вертикальних осях. Спеціальні управляючі
символи вводяться усередині тексту після символу \ (зворотна коса межа).
Тривимірна графіка. Можливості відображення тривимірних
графічних об'єктів в системі MATLAB досить потужні. Зосередимося на
зображенні просторових ліній і на побудові графіків функцій двох дійсних
змінних, які представляють поверхні в просторі.
Кожна крапка в просторі характеризується трьома координатами. Набір
крапок, що належать деякій лінії в просторі, потрібно задати у вигляді трьох
векторів, перший з яких містить перші координати цих крапок, другий вектор
– другі їх координати, ну а третій вектор - треті координати. Після чого ці
три вектори можна подати на вхід функції plot3, яка і здійснить проектування
відповідної тривимірної лінії на площину і побудує результуюче зображення
(рис. 7.7). Введіть з клавіатури:
» t=0:pi/50:10*pi;
» x=sin(t);
» y=cos(t); plot3(x,y,t); grid on
Переконайтеся, що вийшла гвинтова лінія.

50
Рис. 7.7 – Графік гвинтової лінії, побудований за допомогою функції
plot3

Цю ж функцію plot3 можна застосувати і для зображення поверхонь в


просторі, якщо, звичайно, провести не одну лінію, а багато. Наберіть з
клавіатури:
» u=-2:0.1:2; v=-1:0.1:1; [X,Y]=meshgrid(u,v); z=exp(-X .^2-Y.^2);
plot3(X,Y,z)
Отримаєте тривимірне зображення графіка функції (рис. 7.8).

Рис. 7.8 – Графік поверхні в просторі, побудований за допомогою


функції plot3

Функція plot3 будує графік у вигляді набору ліній в просторі, кожна з


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

51
Завдання до практичної роботи:
Завдання 1. Побудуйте два графіки в рамках одних осей координат:
у = e-2x
z = arctg(x1/2)
x є [0,4 π ].
Зробіть написи на осях, заголовок для графіка, напис пояснення на
малюнку. Задайте самостійно тип ліній і колір.
Завдання 2. Побудувати графіки функцій у(x) і z(x) в різних
підобластях одного графічного вікна. Інтервали зміни для х визначите
самостійно.
Завдання 3. Побудуйте поверхню:
f(x,y)= ln(x2+y2-xy)
Завдання 4. Побудувати гістограму випадкових чисел, розподілених за
нормальним законом. Десять тисяч чисел згенерувати за допомогою функції
randn(m,n).

Практична робота №8
Тема: Рішення алгебраїчних і трансцендентних рівнянь в середовищі
MATLAB
Мета: Вивчення методів рішення рівнянь

Теоретичні питання
Рішення алгебраїчних і трансцендентних рівнянь в середовищі
MATLAB здійснюється за допомогою наступних вбудованих функцій:
solve(), fzero(), roots().
Технологія рішення рівнянь за допомогою функції solve()
Функція solve() представляється в наступному виді:
solve('f(x)', х)
де: 'f(x)' – рівняння, записане в одинарних лапках;
х – шукане невідоме.
Рівняння f(x) = 0 записується в довільній формі. При цьому, якщо знак
рівності відсутній, то програма сприйме рівняння у вигляді f(x) = 0.
Аргумент х при вирішенні рівняння можна опустити.
Розглянемо технологію визначення кореня рівняння за допомогою
функції solve| () на прикладі.
Нехай, необхідно розв’язати рівняння:
sin х + х -1 = 0
Програма рішення рівняння має вигляд:
>> Y = solve('sin(x) + х - 1 = 0)
Після натиснення клавіші <Enter> отримаємо:
Y=
0.510973
Функція solve() у ряді випадків дозволяє визначити всі корені рівняння
f(x) = 0 без вказівки початкових значень х або області допустимих значень,
52
знайти не тільки дійсні, але і комплексні корені рівняння f(x) = 0.
Відмінність функції solve() в тому, що вона дозволяє розв’язувати
рівняння, подані в аналітичній формі.
Тобто,
2х - 3( а – b ) = 0
Рішення матиме вигляд:
>> Y=solve('2^x-3*(a-b) = 0')
Y=
Log((3*a-3*b|)/log|(2))
Функція solve() має наступний недолік. Вона не вимагає інформації про
початкове значення кореня або області допустимих значень. Тому в випадку
трансцендентного рівняння і в ряді інших випадків вона не знаходить всіх
коренів рівняння.
Технологія визначення дійсних коренів рівняння за допомогою
функції fzero()
Функція fzero() має наступні реалізації:
fzero (' f (х) ', х)
fzero (' f (х) ', [xl, х2])
fzero (' f ( х ) ', х, tol, trace)
fzero (' f ( x ) ', [xl, x2], tol)
fzero (' f ( x ) ', [xl, x2], tol, trace)
У виразах функції прийняті наступні позначення:
' f (х) ' – розв’язуване рівняння, узяте в одинарні лапки;
х – початкове наближення (значення) шуканого кореня;
[xl, х2] – область допустимих значень;
tol – задана погрішність обчислення кореня;
trace – значення кореня в кожній ітерації.
Технологія визначення кореня рівняння:
2х - 4x + хsin х = 0,
якщо відомо, що корені знаходяться між х=1 і х=4.
Рішення:
>> Y = fzero('2^x - 4 * х + х * s i n ( x ) ' , 1)
Y=
0.3478
>> Y = fzero('2^x - 4 * х + х * s i n ( x ) ' , 4)
Y=
4.4761
Потрібно визначити дійсний корінь рівняння, використовуючи
функцію
fzero (' f (х) ', [xl, х2])
На рис. 8.1 приведений графік функції

53
Рис. 8.1 – Графік функції ln(4 - 2х) + х2 - 2 = 0

З рис. 8.1 видно, що областями ізоляції коріння можуть бути: [0;-1],


[l;1.5], [l.5;1.95].
Тоді програма визначення кореня і результати рішення задачі матимуть
вигляд:
>> X1 = fzero (' log ( 4 - 2 * х) + х^2 - 2 ', [0,-1]);
>> Х2 = fzero (' log ( 4 - 2 * х) + х^2 - 2 ', [1,1.5]);
>> Х3 = fzero (' log ( 4 - 2 * х) + х^2 - 2 ', [1.5,1.95]);
>> X = [Хl, Х2, Х3]
Після натиснення клавіші <Enter> отримаємо:
Х=
0.594 1.2774 1.9001
Необхідно обчислити корінь рівняння
In (4 - 2х) + х2 - 2 = 0
з області ізоляції [0; -1] з видачею інформації про кожну ітерацію
(число ітерацій не більше 50).
Програма рішення задачі і результат мають вигляд:
>> fzero (' log ( 4 - 2 * х) + х^2 - 2 ', [0,-1],50)
ans =
Funt-count х f ( х)
1 0 -0.613706
2 -1 0.791759
3 -0.436657 -0.225557
4 -0.634142 0.0638411
5 -0.590577 -0.00619106
6 -0.594428 -0.000141692
7 -0.594518 1.45892 e 008
8 -0.594516 -3.13434 e 006
ans =
-0. 5945
Таким чином, функція fzero дозволяє знайти всі корені рівняння f(x) =

54
0. Для цього необхідно знати області допустимих значень.
З врахуванням цих особливостей системи MATLAB комп'ютерна
технологія рішення алгебраїчних і трансцендентних рівнянь полягає у
виконанні процедур, перерахованих нижче:
• визначення області ізоляції кореня графоаналітичним методом;
• визначення дійсного кореня рівняння за допомогою функції fzero(),
при заданих значеннях погрішності tol;
• визначення комплексного кореня рівняння за допомогою функції
solve('f(x)').
Технологія визначення коренів багаточлена за допомогою функції
roots()
Функція roots() має вигляд:
roots(z),
де z – вектор коефіцієнтів багаточлена.
Необхідно визначити корені багаточлена:
у = 2х5 - 3х4 + 5х3 + х2 + 7х + 3.
Рішення має вигляд:
>> Y = roots( [2 -3 5 1 7 3] )
Y=
1.2189 + 1.4110 i
1.2189 - 1.4110 i
-0.2719 + 1.0105 i
-0.2719 - 1.0105 i
-0.3940.
У разі коли в багаточлені відсутній член xk, то приймається ak = 0.
Варіанти алгебраїчних та трансцендентних рівнянь
Таблиця 8.1.
Алгебраїчні рівняння для рішення аналітичними методами
№ №
Рівняння Рівняння
п/п п/п
1 x3-a=0 10 e-2x-2a=0
2 x5+(b-a)x4-abx3+ax2+ax(b-a)- 11
2 sin ax+cos ax=0
a b=0
3 x5+bx4-a4x-a4b=0 12 sin ax+tg ax=0
4 3 2
4 x +2x (1+a)+x (4a-1)-2x(1+a)- 13 -ax ax
e +e =0
4a=0
5 x5-3x4+(a-b3)x3+3(b3-a)x2- 14 -ax ax
3 3 e +e -1=0
ab x+3ab =0
6 x5-ax3+2x2-2a=0 15 e-ax+eax-ln a=0
7 x7+ax5-x2-a=0 16 ae-x+bex=0
8 2x-2(a+b)=0 17 a sin x+b cos x=0
9 ln sin x-2a=0

55
Таблиця 8.2.
Алгебраїчні і трансцендентні рівняння для рішення чисельними методами
№ Рівняння
п/п алгебраїчні трансцендентні
4 3 2
1 x -4x -10x +3x-4=0 2sin ln|x|=0
5 2
2 x -5x +4.5=0 arctg tg x=0
5
3 x -x+0.2=0 4e-1/|x|-2
4 x3-0.2x2+0.5x+1.5=0 sin sin x
10
5 x -1=0 2x-4x=0
6 x8+2x-1.5=0 x!+2x-2=0
4 2
7 x -2x +8x+1=0 ln x+(x+1)3=0
8 x3+4x2-5x-2=0 arctg (x-2)+x=0
8 2
9 6x -2x +3=0 x2+4sin x-2=0
10 3.5x5-2.8x3+7.5x-2.5=0 x-ln (7-4x)
5 4 3 2
11 х +х +х +х +х+1=0 e-2x+3/x-1=0
12 1.5х5+17х-21=0 e-6x+3x2-18=0
13 2x4-3.5x2+3=0 ln (4-2x)+x2-2=0
14 17x9-15x7+13x4+11x3+9x=0 3x-9x+1=0
15 x4+2x3-1=0 2x+ln 2x-5.6=0
16 x10-1=0 x+lg x-0.5=0
7 6 5 4 3 2
17 x +6x +x -4x +x -2x +x-1=0 2x!-e-x+5=0

Практична робота №9
Тема: Рішення систем рівнянь в середовищі MATLAB
Мета: Вивчення методів рішення систем рівнянь

Теоретичні питання
Розглянемо наступні способи рішення систем лінійних алгебраїчних
рівнянь засобами MATLAB:
• спосіб обчислення визначників матриці коефіцієнтів системи
рівнянь;
• матричний спосіб;
• за допомогою функції solve ();
• за допомогою вбудованої функції nnls ().
Рішення системи лінійних рівнянь за допомогою визначників.
Нехай D – головний визначник матриці коефіцієнтів системи рівнянь,
dk – частинний визначник, сформований заміною коефіцієнтів при до k-му
невідомому системи рівнянь на коефіцієнти правих частин рівнянь (вільних
членів). Тоді невідоме хк обчислюється по виразу:
dk
xk = .
D
Необхідно вирішити наступну систему лінійних рівнянь:

56
 2 x1 + x2 − 3x3 = 1

 x1 − x2 + 2 x3 = 18
7 x + 5 x + x = 3
 1 2 3

Методом визначників рішення системи матиме вигляд:


1 1 −3 2 1 −3 2 1 1
18 −1 2 1 18 2 1 −1 18
3 5 1 7 3 1 7 5 3
x1 = , x1 = , x1 = .
D D D
2 1 −3
D = 1 −1 2 .
7 5 1
Тепер представимо визначники у вигляді матриць:
dx1 =[1, 1, -3; 18, -1, 2; 3, 5, 1].
dx2 =[2, 1, -3; 1, 18, 2; 7, 3, 1].
dx3 =[2, 1, 2; 1, -1, 18; 7, 5, 3].
D =[2, 1, -3; 1, -1, 2; 7, 5, 1].
Тоді програма обчислення невідомих матиме вигляд:
>> x1 = det(dx1) / det( D) ;
>> x 2 = det(dx 2) / det( D) ;
>> x3 = det(dx3) / det( D) ;
>> X = [ x1, x 2, x3]
X=
6.7111 -9.0222 1.1333
Недолік методу визначників полягає в тому, що він вимагає утворення
числа матриць на одне більше, ніж число невідомих.
Матричний метод рішення систем лінійних рівнянь.
Нехай А - матриця коефіцієнтів системи рівнянь, В – вектор вільних
членів, X – вектор невідомих. Тоді невідомі визначаються:
X = A−1 * B
X = A\ B
X = inv( A) * B
Для попередньої системи рівнянь:
2 1 −3
A = 1 −1 2 , B = [1, 18, 3], X = [ x1 , x2 , x3 ] .
7 5 1
>> A= [2,1,-3; 1,-1,2; 7,5,1];
>> B=[1;18;3];
>> X = inv( A) * B
ans=
6.7111
-9.0222
1.1333
57
MATLAB дозволяє вирішувати системи лінійних рівнянь в
аналітичному вигляді, коли коефіцієнти рівнянь є символьними змінними.
Для цього необхідно визначити символьні змінні за допомогою вбудованої
функції syms x, де х— перелік символьних змінних, які відділяються
пробілами.
Необхідно розв’язати наступну систему рівнянь:
 ax1 + bx2 = 1

cx1 + dx2 = 3
Рішення:
>> syms a b c d;
>> A= [a,b; 1 c,d];
>> B=[1; 3];
>> X = inv( A) * B
Програма дозволяє вирішувати рівняння у разі, коли коефіцієнти є
числами комплексними.
Рішення систем лінійних рівнянь за допомогою функції solve().
Функція solve () у разі рішення систем рівнянь має вигляд:
solve(' f1 ', ' f 2 ', ..., ' f n ')
solve(' f1 ', ' f 2 ', ..., ' f n ', x1 , x 2 , ..., x n )
де: ' fi' – i-те рівняння системи, і=1,2..., n;
хі — і-тe невідоме і = 1,2 ..., n.
Кожне рівняння системи береться в одинарні лапки і відділяється від
попереднього комою. Перед функцією solve () необхідно за допомогою
функції syms описати символьні змінні.
Рішення системи рівнянь:
 3x + y − z = 3

 −5 x + 3 y + 4 z = 1
 x + y + z = 0.5

Програма рішення системи рівнянь має вигляд:
>> syms x y z;
>> Y=solve( '3* x + y − z = 3' , '− 5* x + 3* y + 4* z = 1' , ' x + y + z = 0.5 ' )
Після натиснення клавіші <Enter> отримаємо відповідь в наступному
вигляді:
x : [ 1×1 sym]
y : [ 1×1 sym]
z : [ 1×1 sym]
Програма задачу вирішила, але не видала значення невідомих х, у, z.
Для їх отримання необхідно скористатися командою Y.k, де k – ім'я
невідомої. В нашому випадку рішення буде мати вигляд:
>> Y.x
ans=
-.10714
>> Y.y

58
ans=
1.96428
>> Y.z
ans=
-1.35714
Можна також використовувати функцію vpa (Y.k, n)
де k – шукане невідоме;
n – число знаків відповіді.
Отримаємо вирішення з числом знаків n=5:
>> vpa(Y.x, 5)
ans=
0.10714
>> vpa(Y.y, 5)
ans=
1.9642
>> vpa(Y.z, 5)
ans=
1.3571
Рішення систем нелінійних рівнянь.
Рішення систем нелінійних рівнянь в MATLAB здійснюється функцією
fsolve (), яка має вигляд:
fsolve ( ' file ' x0)
де file – система рівнянь, збережена в m-файлі.
Нехай необхідно вирішити наступну систему нелінійних рівнянь:
 x1 x2 + x3 = 6.5

 x1 x2 + x3 = 167
4

 x x 6 + x = 1470
 1 2 3

Представимо систему рівнянь у вигляді функції користувача з ім'ям


myfun і збережемо її у файлі myfun.m.
Вміст файлу має вигляд:
Funct F = myfun (x)
F = [x(1)*x(2)+x(3)-6.5; x(1)*x(2)^4+x(3)-167; x(1)*x(2)^6+x(3)-1470)
Програма і результати рішення мають вигляд:
>> x0 = [1;1;1];
>> X = fsolve(ʹmyfunʹ, x0)
X=
2.1512
2.9678
0.1157
MATLAB має велике число функцій вирішення спеціальних рівнянь. У
них реалізовані ітераційні методи рішення рівнянь і метод найменших
квадратів. Деякі з цих функцій дозволяють вирішувати також звичайні
системи лінійних рівнянь.
Такими функціями є: bicq(), cqs(), qmres(), qmr().

59
Функція bicq() має вигляд:
bicq(A, B)
де А – матриця коефіцієнтів системи рівнянь;
B – вектор вільних членів.
Функція обчислює невідомі методом ітерацій.
За початкові наближення за умовчанням приймає нульовий вектор
довжиною n, де n – число невідомих.
Кількість ітерацій визначається або по максимальному їх числу (20 по
замовчанню), або по досягненню відносної похибки (за замовчанням 10-6).
Функція має декілька модифікацій.
• bicq(A, B, tol) — видає рішення з погрішністю tol;
• bicq(A, B, tol, maxit) — видає рішення з погрішністю tol при
заданому числі ітерацій.
Функція cqs().
Функція cqs () представляється в наступному вигляді:
cqs (А, В)
cqs (A, B, tol)
cqs(A, B, tol, maxit)
Цією функцією реалізується так званий квадратичний метод спряжених
аргументів. Ітераційний процес починається з нульової ітерації (нульовий
вектор початкових значень).
Число ітерацій визначається по одній з наступних ознак:
• число ітерацій задається користувачем;
• збіжність ітераційного процесу;
• погрішність результату.
Функції qmres() і qmr() вирішують систему лінійних рівнянь методом
ітерацій, використовуючи відповідно метод мінімізації узагальненої
незв'язності і метод квазімінімізації незв'язності. Вони мають ті ж
модифікації, що і функція bicq(). Технологія рішення рівнянь не відрізняється
від розглянутих вище.

60
Варіанти систем алгебраїчних рівнянь
Таблиця 9.1.
Системи лінійних алгебраїчних рівнянь
№ п/п Рівняння № п/п Рівняння

61
Таблиця 9.2.
Системи нелінійних алгебраїчних рівнянь
№ п/п Рівняння № п/п Рівняння

Практична робота №10


Загальні відомості про програмний комплекс SIMULINK. Побудова
простих моделей
Мета: Ознайомлення з додатком до пакету MATLAB – SIMULINK

Теоретичні питання
Програма SIMULINK є додатком до пакету MATLAB. У певному
значенні SIMULINK можна розглядати як самостійний продукт фірми

62
MathWorks, проте він працює тільки за наявності ядра MATLAB і
використовує багато функцій, що входять в його склад.
Слід зазначити, що пакет MATLAB орієнтований насамперед на
обробку масивів даних (матриць, векторів і т.д.). Це дозволяє істотно
підвищити ефективність процедур, що працюють з вказаними типами даних,
в порівнянні з мовами програмування «загального призначення» (Pascal, С і
т.д.), і істотно відрізняє MATLAB від інших систем, таких, як MAPLE,
MATHCAD, Mathematica. Векторна обробка даних забезпечує високу
швидкість обчислень, в більшості випадків позбавляє користувача від
написання циклів і гарантує необхідну точність.
Додаток SIMULINK є інструментом, за допомогою якого можна
об'єднувати блоки, відповідні окремим елементам динамічної системи в
єдине ціле і вивчати їх поведінку в часі.
Розробка моделей засобами SIMULINK (S-моделі) заснована на
технології drag-and-drop («перетягни і залиш»). Для побудови S-моделі
використовуються модулі (або блоки), що зберігаються в бібліотеці
SIMULINK.
Бібліотека SIMULINK хороша тим, що, з одного боку, забезпечує
користувачеві доступ до всіх основних можливостей пакету MATLAB, а з
іншого – є достатньо самостійною його компонентою, в тому сенсі, що при
роботі з нею не обов'язково мати навики у використанні інших інструментів,
що входять до складу пакету.
Блоки, що включаються в створювану модель, можуть бути зв'язані
один з одним як за інформацією, так і по управлінню. Вид зв'язку залежить
від типу блоку і логіки роботи моделі. Дані, якими обмінюються блоки,
можуть бути скалярними величинами, векторами або матрицями довільної
розмірності.
Будь-яка S-модель може мати ієрархічну структуру, тобто складатися з
моделей нижчого рівня, причому число рівнів ієрархії практично не
обмежене. Разом з іншими параметрами моделювання користувач може
задавати спосіб зміни модельного часу (з постійним або змінним кроком), а
також умови закінчення моделювання.
В ході моделювання є можливість спостерігати за процесами, що
відбуваються в системі. Для цього використовуються спеціальні «оглядові
вікна», що входять до складу бібліотеки SIMULINK. Характеристики, що
цікавлять користувача, можуть бути представлені як в числовій, так і в
графічній формі.
Застосування принципів структурного і модульного програмування
дозволяє представляти різні алгоритми у вигляді набору уніфікованих
програмних модулів, що покращує оглядовість програми, полегшує її
відлагодження і кінець кінцем зменшує загальний об'єм програмного
забезпечення, що підлягає розробці. Окрім цього склад бібліотеки
SIMULINK може бути поповнений користувачем за рахунок розробки
власних блоків.
У подальших практичних роботах будуть розглянуті типові виконувані
63
елементи, приведені структурні схеми поширених систем базисних функцій,
основні блоки, що реалізовують методи апроксимації сигналів і моделювання
динамічних систем.
Слід зазначити, що у складі MATLAB є безліч інших додатків,
заснованих на методах графічного (візуального) програмування, що
допускають спільну роботу із додатком SIMULINK.
Aerospace Blockset – містить спеціальні інструменти для моделювання
авіаційних, космічних, реактивних і турбореактивних систем.
DSP Blockset – призначений для проектування систем і моделювання
завдань цифрової обробки сигналів (DSP). Дані бібліотеки включають такі
ключові операції, як класична, багатоступінчата і адаптивна фільтрація,
перетворення, матричні операції і лінійна алгебра, статистика і спектральний
аналіз.
Nonlinear Control Design Blockset – надає в розпорядження користувача
графічний інтерфейс для налаштування параметрів динамічних об'єктів.
SimPowerSystems – призначений для моделювання електротехнічних і
електроенергетичних пристроїв і систем.
SimMechanics – дозволяє моделювати системи управління за
допомогою ненапрямлених сигнальних графів, об'єднувати їх з фізичними
моделями і моделями з інших бібліотек.
Виконавчі елементи. Пакет SIMULINK запускається з програмного
середовища MatLab. Відповідна піктограма розташована на панелі
інструментів.
Для початку роботи необхідно створити новий файл *.mdl (Simulink
model), у який можна за допомогою миші перетягувати блоки з бібліотеки
SIMULINK. Необхідно відзначити, що набори інструментів в бібліотеці
вибираються користувачем при установці програми.
У головному меню знаходиться вкладка Simulation/Configuration
Parameters, де можна міняти параметри процесу моделювання, такі як час
початку і кінця моделювання, вибір виконавця, крок з яким відбувається
розрахунок і т.д.
Розглянемо блоки SIMULINK, що часто зустрічаються.
Для будь-якого блоку по подвійному клацанню миші відкривається
вікно параметрів Function Block Parameters, де можна міняти установки.
Джерело сигналів (Sources). На рис. 10.1 представлені деякі джерела
сигналів.

Рис. 10.1 – Джерело сигналів

64
Constant – задає постійний по рівню сигнал;
From Workspace – блок зчитування даних з робочої області;
From File – блок зчитування даних з файлу;
Sine Wave – формує синусоїдальний сигнал із заданою частотою,
амплітудою, фазою і зсувом;
Signal Generator – формує один з чотирьох видів періодичних сигналів
(синусоїдальний, прямокутний, пилоподібний, випадковий сигнали);
Ramp – формує лінійний сигнал;
Step – формує ступінчастий сигнал;
Random Number – формує випадковий сигнал з нормальним розподілом
рівня сигналу.
Приймачі сигналів (Sinks). На рис. 10.2 представлені блоки-приймачі
сигналів

Рис. 10.2 – Приймачі сигналів

Цифровий дисплей (Display) – відображає значення сигналу у вигляді


числа;
Віртуальний осцилограф (Scope) – будує графік сигналу від функції
часу;
Віртуальний графічний пристрій (ХУ Graph) – будує графік одного
сигналу залежно від іншого (графік виду Y(X));
Блок «То File» - записує дані, що поступають на його вхід, в файл;
Блок «То Workspace» - записує дані, що поступають на його вхід, в
робочу область MATLAB.
Блоки математичних операцій.

Рис. 10.3 – Блоки математичних операцій

Блок Gain – множить вхідний сигнал на заданий коефіцієнт.


Блок Product – перемножує два (або більше) сигналів.
Блок Sum – підсумовує два (або більше) сигналів.
Блок Math Function – перетворює вхідний сигнал по заданій із списку
функції (наприклад, зведення в квадрат, корінь квадратний, логарифм і так
далі).
Відзначимо ще деякі блоки, що часто зустрічаються (рис. 10.4).
65
Рис. 10.4 – Приклади функцій, що часто зустрічаються

Блок Mux (мультиплексор) – об'єднує сигнали. Піктограма


мультиплексора показана першою зліва на рис. 9.4.
Блок Integrator – інтегрує сигнал.
Блок MATLAB Fcn – формує функцію, задану користувачем на мові
MatLab.
Побудова простих моделей. Розглянемо приклад, на якому покажемо,
як будується модель сигналу виду x(t)= 0,5*sinπt + t2 на інтервалі [0;2], і
відобразимо його на віртуальному осцилографі. На рис. 10.5 приведений
один з варіантів побудови сигналу.

Рис. 10.5 – Модель сигналу x(t)= 0,5*sinπt + t2

Сигнал 0,5*sinπt заданий в параметрах блоку Sine Wave (рис. 10.6).


Для сигналу t2 використовувалися два блоки – блок лінійного сигналу і
блок математичної функції, де була вибрана функція зведення в квадрат.
Результати роботи виведені на екран віртуального осцилографа (рис.
10.7).

66
Рис. 10.6 – Параметри блоку Sine Wave

Інтервал моделювання заданий в межах від 0 до 2 у вікні меню


Simulation/Configuration Parameters.

Рис. 10.7 – Сигнал x(t)= 0,5*sinπt + t2 на екрані віртуального


осцилографа

Нижче приведені структурні схеми віртуальних генераторів систем


базисних функцій, які використовуватимуться надалі для поліноміальної
апроксимації методами найменших квадратів і рівних площ. Для побудови

67
таких структурних схем можуть бути використані різні підходи. На рис. 10.8,
10.9 зображено дві альтернативні схеми віртуальних генераторів системи
степеневих функцій вигляду: sk ( t ) = {t k }k =0 .
4

Перша з них використовує каскадне з'єднання інтеграторів, на вхід


першого з яких подається сигнал константи. Вихідні сигнали інтеграторів
масштабуються за допомогою масштабних ланок і подаються разом з
сигналом константи (1) на входи змішувача (mux) для відображення на екрані
віртуального осцилографа (scope). У другій схемі використовуються система
множників, що послідовно формує сигнали степеневих функцій. На рис.
10.10 показаний вид сформованої системи функцій.

Рис. 10.8 – Перший варіант структурної схеми віртуального генератора


системи степеневих базисних функцій

Рис. 10.9 – Другий варіант структурної схеми віртуального генератора


системи степеневих базисних функцій

68
Рис. 10.10 – Зображення системи степеневих функцій на екрані
віртуального осцилографа

На рис. 10.11 приведена структурна схема віртуального генератора


системи експоненціальних функцій вигляду: sk ( t ) = {ekt }k =0 .
4

У цій схемі використовуються 4 ідентичних послідовно сполучених


блоки джерела лінійного сигналу (Ramp) і блоку математичної функції (Math
Function). За допомогою меню параметрів виконавчих блоків задаються різні
нахили лінійних сигналів (аргументів експоненціальних функцій) і
вибирається тип функції блоків математичної функції (в даному випадку –
ехр). Вихідні сигнали блоків математичної функції через змішувач подаються
на вхід блоку віртуального осцилографа. До одного з входів змішувача
підключений сигнал константи (1), що зображає першу з експоненціальних
функцій (е0). Альтернативний варіант цієї структурної схеми приведений на
рис. 10.12. Тут експоненціальні функції кратного аргументу формуються за
допомогою множників. Параметри виконавчих елементів як і раніше
задаються за допомогою меню параметрів. На рис. 10.13 зображений вид
системи експоненціальних функцій на екрані віртуального осцилографа.

Рис. 10.11 – Структурна схема віртуального генератора системи


експоненціальних функцій (варіант 1)

69
Рис. 10.12 – Структурна схема віртуального генератора системи
експоненціальних функцій (варіант 2)

Рис. 10.13 – Зображення системи експоненціальних функцій на


віртуальному осцилографі

Варіанти завдань
Сформувати і візуалізувати сигнали заданої форми.
y = (1 + 2 sin ( 2t ) )
2
Варіант №1
Вказівка – використати блоки: Constant, Integrator, Gain, Trigonometric
Function, Math Function, Sum, Scope.
Варіант №2 y = 1 + 0.5sin ( 2t )
Вказівка – використати блоки: ті ж, що і в варіанті 1, перебудувавши
блок Math Function.
y = t ⋅ e − t ⋅ cos ( 2π t )
2
Варіант №3
Вказівка – використати блоки: Constant, Integrator, Gain, Trigonometric
Function, Math Function, Product, Scope.
Варіант №4 y = 3.5 + 0.3t − 0.06t 2 − e −2 t + t 2
Вказівка – використати блоки: Constant, Integrator, Gain, Math Function,
Sum, Scope.
Варіант №5 y = min ( 5t ,100 − 2t 2 )
Вказівка – використати блоки: Constant, Integrator, Gain, Math Function,
Sum, MinMax, Scope.
Варіант №6 y = −100 + 20t

70
Вказівка – використати блоки: Constant, Integrator, Gain, Abs, Math
Function, Scope.
y = (1 + 2tg ( t ) )
3
Варіант №7
Вказівка – використати блоки: Constant, Integrator, Gain, Trigonometric
Function, Math Function, Sum, Scope.
Варіант №8 y = 1 + 0.5tg ( 2t )
Вказівка – використати блоки: ті ж, що і в варіанті 7, перебудувавши
блок Math Function.
Варіант №9 y = t −2 e ⋅ sin ( 2π t ) cos ( t )
Вказівка – використати блоки: Constant, Integrator, Gain, Trigonometric
Function, Math Function, Product, Scope.
Варіант №10 y = max ( 2π t , 2t 2 + t 3 − t )
Вказівка – використати блоки: Constant, Integrator, Gain, Math Function,
Sum, MinMax, Scope.
Порядок роботи над завданнями:
• Після завантаження системи MATLAB відкрити додаток Simulink.
• У вікні Simulink Library Browser, що відкрилося, мишею вибрати
File->New->Model, або символ нового файлу, або натиснути клавіші Ctrl+N.
В результаті на екрані з'явиться зображення робочої області, в якій необхідно
конструювати структурну схему моделі вирішуваного завдання. Ця робоча
область може бути збережена як файл з ім'ям, вибираним користувачем.
• Перенести мишею в робочу область необхідні виконавчі елементи,
джерела сигналів і віртуальні вимірювальні прилади з бібліотеки Simulink у
відкритому вікні Simulink Library Browser.
• Скопіювати у необхідній кількості елементи, які зустрічаються
більше одного разу, і розмістити їх в робочій області так, щоб їх було зручно
сполучати один з одним віртуальними провідниками. Оптимальне
розміщення елементів є достатньо непростим завданням і залежить від
досвіду і уміння дослідника.
• У разі потреби можна змінити просторову орієнтацію блоків. Для
цього необхідно розмістити курсор миші над зображенням блоку, виділити
його одноразовим натисненням лівої клавіші миші і вибрати команду Format-
>Rotate Block, або одночасним натисненням клавіш Ctrl+R. Одна команда
повертає блок на 90 градусів.
• З'єднати блоки між собою відповідно до структурної схеми
вирішуваного завдання (сформувати структурну схему моделі) за допомогою
миші.
• Встановити необхідні параметри виконавчих елементів і інших
блоків, що входять в структурну схему моделі за допомогою вікна параметрів
блоку, виклик якого проводиться шляхом двократного натиснення на ліву
кнопку миші, коли курсор знаходиться в межах зображення блоку.
• У вікні Simulation рядка меню робочої області вибрати команду Start.
Запуск процесу моделювання можна також здійснити одночасним
71
натисненням клавіш CTRL+T.
• Слід пам'ятати, що віртуальні виконавчі блоки і елементи системи
Simulink володіють і іншими можливостями, використовувати які можна за
допомогою електронної системи Help або інших навчальних посібників за
системою MATLAB/Simulink.

Практична робота №11


Тема: Моделі алгебраїчних об'єктів. Форматування об’єктів моделей
Мета: Ознайомитись з методами побудови алгебраїчних моделей

Теоретичні питання
У аналоговій обчислювальній техніці існує декілька способів
моделювання об'єктів, описуваних системами алгебраїчних рівнянь. Один з
них, найбільш поширений, зводиться до вирішення системи звичайних
диференціальних рівнянь, стале вирішення якої дає рішення алгебраїчної
задачі.
Нехай безінерційний об'єкт описується системою рівнянь:

Для побудови моделі даного об'єкту застосуємо метод зведення до


еквівалентної системи диференціальних рівнянь.
Введемо наступну систему диференціальних рівнянь:

Як тільки всі похідні  i = 0  , отримуємо сигнал рішення { x1 , x2 ,K , xn } .


dx
 dt 
Для еквівалентності цих двох систем рівнянь повинне забезпечуватися
затухаюче вирішення системи диференціальних рівнянь. Достатньою
умовою, що забезпечує затухаюче рішення, є позитивна визначеність матриці
коефіцієнтів лінійної системи рівнянь. Це можливо також за умови, коли
n
aii ≥ ∑ aij , i ≠ j .
j =1

Приклад 11.1.
Знайти вирішення системи лінійних алгебраїчних рівнянь:

72
Перейдемо до еквівалентної системи диференціальних рівнянь:

Структурна схема моделі даної системи приведена на рис. 11.1. Вона


побудована з використанням класичних методів аналогової обчислювальної
техніки. Перехідний процес встановлення рішення зображений на екрані
віртуального осцилографа (рис. 11.2).

Рис. 11.1 – Структурна схема моделі системи диференціальних рівнянь,


еквівалентній системі лінійних алгебраїчних рівнянь другого порядку

На рис. 11.2 видно, що після t = 2 на виходах віртуальних інтеграторів


встановлюються сигнали, відповідні вирішенню системи лінійних
алгебраїчних рівнянь:

Розширення класу об'єктів алгебри, матриця коефіцієнтів яких має


довільний вигляд, можливо шляхом використання методів квазіаналогового
моделювання.

73
Рис. 11.2 – Перехідний процес встановлення рішення системи лінійних
алгебраїчних рівнянь шляхом зведення до еквівалентної диференціальної
системи рівнянь

Приклад 11.2.
Знайти рішення системи:

Модель системи і результати її роботи представлені на рис. 11.3, 11.4


відповідно.

74
Рис. 11.3 – Модель системи лінійних алгебраїчних рівнянь 3 порядку

Рішення системи рівнянь, відображене на цифрових реєстраторах


(Displayl - Display3) рівне:

75
Рис. 11.4 – Перехідний процес встановлення рішення системи рівнянь

Форматування об’єктів. У меню Format (також як і в контекстному


меню, що викликається натисненням правої клавіші миші на об'єкті)
знаходиться набір команд форматування блоків.
Команди форматування розділяються на декілька груп:
1. Зміна відображення написів:
• Font – Форматування шрифту написів і текстових блоків.
• Text alignment – Вирівнювання тексту в текстових написах.
• Flip name – Переміщення підпису блоку.
• Show/hide name – Відображення або приховування підпису блоку.
2. Зміна квітів відображення блоків:
• Foreground color – Вибір кольору ліній для виділених блоків.
• Background color – Вибір кольору фону виділених блоків.
• Screen color – Вибір кольору фону для всього вікна моделі.
3. Зміна положення блоку і його вигляду:
• Flip block – Дзеркальне відображення щодо вертикальної осі
симетрії.
• Rotate block – Поворот блоку на 900 за годинниковою стрілкою.
• Show drop shadow – Показ тіні від блоку.
• Show port labels – Показ міток портів.
4. Інші установки:
• Library link display – Показ зв'язків з бібліотеками.
• Sample time colors – Вибір кольору блоку індикації часу.
• Wide nonscalar lines – Збільшення/зменшення ширини не
скалярних ліній.
• Signal dimensions – Показ розмірності сигналів.
76
• Port data types – П оказ даних про тип портів.
• Storage class – Клас пам'яті (параметр, що встановлюється при
роботі Real-time Workshop).
• Execution order – Виведення порядкового номера блоку в
послідовності виконання.
Команда Format/Font виводить вікно з установками шрифту для
текстових написів (рис. 11.5).

Рис. 11.5 – Вікно вибору шрифту

На рис. 11.6 наочно показана дія ряду операцій форматування іншого


роду на вигляд простої моделі. Крім того, на цьому малюнку масштаб моделі
збільшений удвічі з допомогою команди View/Zoom In.

Рис. 11.6 – Вид моделі після операцій форматування

Цей малюнок демонструє можливості колірного оформлення блоків


виділення нескалярних ліній з'єднання, виведення даних про тип портів і
введення вказівок на порядок виконання блоків в ході моделювання.

Варіанти завдань.
1. Знайти рішення системи алгебраїчних лінійних рівнянь
засобами Matlab/Simulink.
Завдання обираються з таблиці 9.1 практичної роботи №9.
2. Сформувати структурні схеми:
Варіант 1. Сформувати структурну схему системи, що генерує фігуру
еліпса на екрані віртуального двокоординатного реєстратора XY Graph на
основі параметрично завданих рівнянь еліпса:

77
при наступних значеннях параметрів: А=5, В=2, ω=π/5.
Вказівка. Використовувати блоки: Ramp, Gain, Trigonometric Function,
XY Graph, встановити необхідні масштаби по осях двокоординатного
реєстратора.
Варіант 2. Сформувати структурну схему системи, що генерує фігуру
спіралі на екрані віртуального двокоординатного реєстратора XY Graph на
основі параметрично завданої математичної моделі спіралі:

Вказівка. Використовувати блоки: Сonstant, Integrator, Gain,


Trigonometric Function, Product, Scope, XY Graph, встановити необхідні
масштаби по осях двокоординатного реєстратора.
Варіант 3. Побудувати структурну схему генератора системи базисних
функцій:

Вказівка. Використовувати блоки: Сonstant, Integrator, Gain, Math


Function, Mux, Scope.
Варіант 4. Побудувати структурну схему генератора системи базисних
функцій:

Вказівка. Використовувати блоки: Сonstant, Integrator, Gain,


Trigonometric Function, Mux, Scope.
Варіант 5. Побудувати структурну схему генератора системи базисних
функцій:

Вказівка. Використовувати блоки: Сonstant, Integrator, Gain,


Trigonometric Function, Mux, Scope.
3. Форматувати об’єкти моделей.

Практична робота №12


Тема: Маскування підсистем в Matlab/Simulink
Мета: Ознайомитись з методами маскування підсистем
Теоретичні питання
Механізм маскування підсистем дозволяє оформити підсистему як
повноцінний бібліотечний блок, тобто забезпечити підсистему власним
вікном параметрів, піктограмою, довідковою системою і т.д.
Маскування підсистем дає користувачеві наступні переваги:
• Розширює можливості користувача по управлінню параметрами
моделі.
• Дозволяє створювати зрозуміліший інтерфейс підсистеми.

78
• Підвищує наочність блок-діаграми.
• Розширює можливості побудови складних моделей.
• Підвищує захищеність моделі від несанкціонованої модифікації.
Для виконання маскування наявної підсистеми необхідно заздалегідь
виконати наступні дії:
1. Визначити, які параметри підсистеми повинні задаватися
користувачем в майбутньому вікні параметрів. Задати ці параметри в
підсистемі за допомогою ідентифікаторів (імен).
2. Визначити, яким чином параметр повинен задаватися у вікні діалогу
(за допомогою рядка введення, вибором із списку, що розкривається,
або установкою прапорця).
3. Розробити ескіз піктограми блоку.
4. Створити коментарі (довідку) по використанню підсистеми.
Маскування підсистеми виконується за допомогою Mask Editor
(редактор маски). Для запуску редактора маски необхідно виділити
масковану підсистему і виконати команду Mask Subsystem. з меню Edit.
Можна також скористатися контекстним меню. Після запуску Mask Editor
на екран буде виведено вікно редактора (рис. 12.1), що має три вкладки:
• Icon (Піктограма);
• Initialization (Ініціалізація);
• Documentation (Документація).
Перша з вкладок забезпечує створення піктограми підсистеми, друга –
дає можливість створити вікно діалогу для введення параметрів і третя –
дозволяє ввести опис блоку і створити його довідку.
У верхній частині всіх вкладок є поле Mask Type, за допомогою якого
можна задати ім'я блоку. У нижній частині вікна є п'ять кнопок управління
редактором:
1. OK – Зберегти внесені зміни і закрити вікно.
2. Cancel – Відмінити внесені зміни і закрити вікно.
3. Unmask – Зняти маску з підсистеми. До закриття файлу моделі маску
можна відновити, скориставшись командою Edit Mask. з меню Edit.
4. Help – Відкрити вікно довідки редактора маски.
5. Apply – Зберегти внесені зміни без закриття вікна редактора.
Повторний виклик редактора маски для вже маскованої підсистеми
здійснюється командою Edit Mask… з меню Edit (або аналогічною
командою з контекстного меню).
Після того, як маскування системи буде виконано, подвійне клацання на
її зображенні відкриватиме вікно параметрів підсистеми, а не вікно моделі.
Відкрити саму підсистему (вікно моделі) для редагування або перегляду
можна командою Look under mask з меню Edit або контекстного меню.

79
Рис. 12.1 – Вікно редактора маски Mask Editor

Створення вікна параметрів. Вікно параметрів створюється за


допомогою вкладки Initialization (Ініціалізація) редактора маски. Для
створення поля введення параметра з його описом необхідно виконати
наступні дії:
1. Натиснути кнопку Add (Додати).
2. Ввести опис параметра в поле Prompt (Підказка). Як опис параметра
зазвичай використовується його назва у вигляді тексту, наприклад,
«Gain», «Constant value» і т.п.
3. Вказати ідентифікатор параметра в полі Variable (Змінна). Звичайно
це має бути один з тих ідентифікаторів, який використовувався при
завданні параметрів блоків усередині підсистеми (хоча це не
обов'язково, оскільки параметр може бути використаний і для
модифікації самого вікна діалогу). Всі змінні, ідентифікатори яких
задані на вкладці Initialization, поміщаються в Mask Workspace –
локальну робочу область маски, і є доступними тільки усередині
підсистеми.
4. Вибрати тип елементу інтерфейсу задаючого параметр із списку
Control Type:
• Edit – Редаговане поле введення.
• Checkbox – Прапорець.
• Popup – список, що розкривається. В цьому випадку в графові
Popup Strings (Елементи списку) необхідно ввести елементи
списку, розділені символом вертикальної межі. Наприклад, вираз
alpha|beta|gamma задасть список з трьох елементів: alpha, beta і
gamma.
5. Вибрати формат параметра із списку Assiggment:
• Evaluate – Обчислюваний. Вибирається, якщо параметр повинен
80
мати числове значення. У дане поле можна буде ввести вираз
відповідно до правил мови MATLAB. Формат Evaluate дозволяє
також використовувати числову форму значення змінної в тому
випадку, якщо тип елементу інтерфейсу вибраний у вигляді
прапорця або списку, що розкривається. Так, наприклад, для
списку, що розкривається, alpha|beta|gamma значення пов'язаною
із списком змінної дорівнюватиме одиниці, якщо в списку вибране
alpha, двом – якщо в списку вибране beta, і трьом – якщо в списку
вибране gamma. Для елементу інтерфейсу Checkbox обчислювані
значення дорівнюватимуть 1 (при встановленому прапорці) і 0 (при
знятому прапорці).
• Literal – Текстовий. Вибирається, якщо параметр має бути
рядком символів.
6. Ввести команди ініціалізації в графові Initialization commands.
Командами ініціалізації є звичайні команди на мові
MATLAB і можуть включати оператори і m-функції. Такі команди
задають змінні, які знаходитимуться в робочій області
маскованої підсистеми. Ці змінні доступні усередині підсистеми і
можуть бути використані як параметри блоків, що входять до складу
підсистеми, а також для створення піктограми підсистеми. Команди
ініціалізації виконуються в наступних випадках:
• При відкритті вікна моделі.
• При запуску моделі на виконання.
• При виконанні команди Edit/update diagram.
• При обертанні блоку маскованої підсистеми (в цьому випадку
команди ініціалізації забезпечують перемальовування піктограми).
• При автоматичній зміні піктограми, залежної від параметрів
блоку.
Як приклад маскованої підсистеми розглянемо функціональний
генератор. Схема моделі генератора показана на рис. 12.2.

81
Рис. 12.2 – Функціональний генератор

Модель генератора володіє наступними можливостями:


1. Значення амплітуди і частоти сигналу можуть задаватися або як
параметри генератора в його вікні діалогу, або від зовнішніх джерел
через вхідні порти.
2. Форма вихідного сигналу генератора (трикутник, прямокутник або
синусоїда) задається у вікні діалогу.
Вид вікна діалогу, створеного за допомогою редактора маски
показаний на рис. 12.3.

Рис. 12.3 – Вікно параметрів генератора

Назва параметра, ідентифікатор зв’язаної з ним змінної, тип елементу


інтерфейсу і формат параметра приведені в таблиці 12.1.

82
Таблиця 12.1.
Параметри та їх форма
N Prompt Variable Control Type Assiggment Призначення
Задає тип джерела
Internal source
сигналу завдання на
1 of frequency Internal_freq Checkbox Evaluate
частоту: внутрішній
signal
або зовнішній
Задає величину
Frequency завдання на частоту
2 Freq Edit Evaluate
(Hz) внутрішнього
джерела
Задає форму
вихідного сигналу:
3 Wave form Wave_form Popup Evaluate трикутник,
прямокутник або
синусоїда
Задає тип джерела
Internal source сигналу завдання на
4 of magnitude lnternal_magn Checkbox Evaluate амплітуду:
signal внутрішній або
зовнішній
Задає величину
завдання на
5 Magnitude Magn Edit Evaluate амплітуду
внутрішнього
джерела

Вікно редактора маски з відкритою вкладкою Initialization, в якому


створено вікно параметрів генератора, показано на рис. 12.4.

Рис. 12.4 – Вікно редактора маски на етапі створення вікна параметрів

83
Вибір типу джерел завдання на частоту (внутрішній або зовнішній)
здійснюється за допомогою блоку Selector1 (див. рис. 12.2). Для цього
значення параметра Elements блоку Selector1 задане як [(Internal_freq+1)].
Таким чином, якщо прапорець параметра Internal source of frequency signal
встановлений, то числове значення змінної Internal_freq дорівнює 1 і на
вихід селектора проходить сигнал від внутрішнього джерела, якщо ж
прапорець знятий, то на вихід селектора проходить сигнал від вхідного порту
системи (тобто від зовнішнього по відношенню до генератора джерела).
Аналогічним чином за допомогою змінної Internal_magn виконується вибір
джерела сигналу завдання на амплітуду.
Вибір форми вихідного сигналу виконується також за допомогою
блоку Selector. Трикутний, прямокутний і синусоїдальний сигнали
об'єднуються у вектор за допомогою блоку Mux, а потім залежно від
числового значення змінної Wave_form, блок Selector виконує вибір
потрібного елементу вхідного вектора. Значення параметра Elements блоку
Selector задане як [Wave_form]. Таким чином, якщо, наприклад, параметр
генератора Wave form має значення Sine, то числове значення змінної
Wave_form рівне трьом, і, отже, на вихід селектора проходить третій
елемент вхідного вектора, тобто синусоїдальний сигнал.

Варіанти завдань.
Сформувати і візуалізувати сигнали заданої форми (практична робота
№10).
До отриманої моделі застосувати методи маскування підсистем.
y = (1 + 2 sin ( 2t ) ) y = 1 + 0.5sin ( 2t )
2
В-№1 В-№2
y = t ⋅ e − t ⋅ cos ( 2π t ) В-№4 y = 3.5 + 0.3t − 0.06t 2 − e −2t + t 2
2
В-№3
В-№5 y = min ( 5t ,100 − 2t 2 ) В-№6 y= −100 + 20t
y = (1 + 2tg ( t ) ) y = 1 + 0.5tg ( 2t )
3
В-№7 В-№8
В-№9 y = t −2 e ⋅ sin ( 2π t ) cos ( t ) В-№10 y = max ( 2π t , 2t 2 + t 3 − t )

84
Список літератури

1. Корнеев В. В., Киселев А. В. Современные микропроцессоры. - М.:


НОЛИДЖ, 1998. – 240 с.
2. Левенталь Л. Введение в микропроцессоры. Программное обеспечение,
аппаратные средства, программирование. - М.: Энергоатомиздат, 1983. –
464 с.
3. Лысиков Б. Г. Арифметические и логические основы автоматов: Учеб.
для вузов. - 2-е изд., перераб. и доп. - М.: Высш. шк., 1980. – 336 с.
4. Майоров В. Г., Гаврилов А. И. Практический курс программирования
микропроцессорных систем. - М.: Машиностроение, 1989. – 204 с.
5. Самофалов К. Г., Корнейчук В. И., Тарасенко В. П. Электронные
цифровые вычислительные машины. - К.: Вища шк., 1976. – 480 с.
6. Лебедев О. Н. Микросхемы памяти и их применение. - М.: Радио и связь,
1990. – 234 с.
7. Микро- и мини-ЭВМ / Е. П. Балашов, В. Л. Григорьев, Г. А. Петров и др.:
Учеб. пособие для вузов. - Л.: Энергоатомиздат, 1984. – 376 с.
8. Дьяконов В. Matlab 6: Учебный курс. - СПб.; Питер, 2002. – 592 с.
9. Дьяконов В., Круглов В. Математические пакет расширения Matlab.
Специальный справочник.- СПб.: Питер, 2001. – 480 с.
10. Лавров К.Н., Циплякова Т.П. Финансовая аналитика. Matlab 6 /Под общ.
ред. В.Г. Потёмкина.- М.: 2001. – 368 с.
11. Лазарев Ю.Ф. Matlab 5.х.- К.: Изд. Группа ВHV, 2000. – 384 с.
12. Потемкин В.Г. Введение в Matlab.- М.: Диалог - МИФИ, 2000. – 247 с.
13. Потемкин В.Г., Рудаков П.И. Matlab 5 для студентов.- 2-е изд., испр. и
доп.- М.: Диалог-МИФИ, 1999. – 448 с.
14. Потемкин В.Г. Система инженерных и научных расчетов Matlab 5.х.: В 2-
х т.- М.: Диалог-МИФИ, 1999.
15. Дубровін В.І., Субботін С.О. Методи оптимізації та їх застосування в
задачах навчання нейронних мереж: Навчальний посібник. - Запоріжжя:
ЗНТУ, 2003. – 136 с.
16. Дьяконов В. Matlab. Анализ, идентификация и моделирование систем:
Специальный справочник / В. Дьяконов, В. Круглов.- СПб.: Питер, 2002.
– 444 с.
17. Леоненков А.В. Нечеткое моделирование в среде Matlab и FuzzyTech. -
СПб.: БХВ-Петербург, 2003. – 736 с.
18. Дубровин В.И., Субботин С.А., Богуслаев А.В., Яценко В.К.
Интеллектуальные средства диагностики и прогнозирования надежности
авиадвигателей. - Запорожье: ОАО "Мотор Сич", 2003. – 279 с.
19. Черных И.В. SIMULINK: среда создания инженерных приложений. – М.:
ДИАЛОГ-МИФИ, 2003. – 496 с.
20. Данилов А.И. Компьютерный практикум по курсу «Теория управления».
SIMULINK – моделирование в среде MATLAB. – М.: МГУИЭ, 2002. –
128 с.
21. http://www.matlab.ru
85
22. http://www.exponenta.ru
23. http://www.mathworks.com
24. http://www.csit.narod.ru

86
Для заміток

87
Комп’ютерні технології та програмування [Текст] : Методичні вказівки до
практичних занять для студентів напряму підготовки 6.050202 «Автоматизація
К50
та комп’ютерно-інтегровані технології» всіх форм навчання уклад. О.М.
Решетило. – Луцьк: Луцький НТУ, 2016. – 88 с.

Комп’ютерний набір О.М. Решетило


Редактор О.М. Решетило
(представник РВВ Луцького НТУ, інший фахівець)

Підп. до друку 2016 р.


Формат 60х84/16. Папір офс. Гарнітура Таймс.
Ум. друк. арк. ___. Обл.-вид. арк. 2,5.
Тираж ___ прим. Зам. 1.

Редакційно-видавничий відділ
Луцького національного технічного університету
43018 м. Луцьк, вул. Львівська, 75
Друк – РВВ Луцького НТУ

88

You might also like