Professional Documents
Culture Documents
Практичні роботи КТтаП
Практичні роботи КТтаП
Луцьк 2016
УДК 629.05
К50
Відповідальний
за випуск: ____________ Л.О. Гуменюк, кандидат технічних наук, доцент Луцького
НТУ
(підпис)
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
тестові прикладні програми, що комп’ютер може зробити без запуску
програм з диска, або носія інформації, як комп’ютер буде реагувати на
специфічні команди або ситуації.
6
тільки над двома операндами одночасно коли один з операндів видаляється з
пам’яті в регістр даних, а другий операнд знаходиться в акумуляторі
процесора.
6. Регістр переносу – це однорозрядний регістр, який виступає в
якості продовження акумулятора і який заповнюється при його переповненні.
Цей регістр використовується також для організації циклічних зсувів.
Структурна схема ЕОМ. ЕОМ призначені для опрацювання
інформації і відображення результатів опрацювання.
Таблиця 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 – Послідовний суматор
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
11
Рис. 1.8 – Дешифратор (діодна матриця)
12
Програмована логічна матриця (ПЛМ).
13
Рис. 1.11 – Накопичувальний суматор
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
14
2. Інтерфейс із процесором - через нього відбувається обмін
інформацією між процесором і каналами вводу - виводу. Головний -
процесор, виконавець - канали. Інтерфейс є швидкодіючим. Обмін
інформацією через нього відбувається словами і напівсловами.
3. Інтерфейс вводу-виводу. Через нього відбувається обмін
інформацією між каналами вводу - виводу й пристроями керування ПК.
Обмін інформацією проводиться байтами. Його швидкодія менше, ніж у
перших двох типів.
4. Інтерфейс периферійних апаратів (ПА). Через нього відбувається
обмін інформацією між пристроями керування ПК і самими ПК. Він не може
бути стандартизований, тому що ПК дуже різноманітні.
По цифровому каналі зв'язку сигнал може передаватися паралельно або
послідовно. Паралельна передача цифрового сигналу потребує окремі лінії
для кожного розряду, але є більш швидкодіючі. При послідовній передачі
цифрові сигнали передаються послідовно по одній лінії зв'язку. По засобам
передачі інформації в часі інтерфейс може бути синхронний і асинхронний.
Синхронний характерний постійної тимчасовою прив’язкою, а асинхронний -
без постійної тимчасової прив'язки. При синхронній передачі даних сигнали,
що синхронізують, МП задають тимчасовий інтервал, в момент якого
зчитується інформація з одного датчика. Тимчасовий інтервал визначається
найбільшим часом затримки в системі передача даних і максимальним часом
перетворення аналогового сигналу в цифровий. Асинхронна передача даних
характеризується наявністю керуючих сигналів: "Готовність до обміну",
вироблюваний датчиком вихідної інформації; "Початок обміну", "Кінець
обміну", "Контроль обміну", вироблювані МП. При такій організації обміну
автоматично встановлюється раціональне співвідношення між швидкістю
передачі даних і розмірами затримки сигналів у каналі зв'язку.
Обмін даними між оперативною пам'яттю і периферійними
пристроями (ПП).
15
керуванні передачею даних процесор "відривається" від виконання основної
програми на весь час операції вводу - виводу, отже знижується
продуктивність ЕОМ. Для вводу блока даних необхідно занадто багато
операцій, таких як перетворення форматів, адресація в пам'яті, визначення
початку і кінця блока даних. В результаті швидкість передачі даних
знижується. Дешифратор визначає номер ПП, із яких буде відбуватися обмін
даними відповідно до програми. Мультиплексор передає дані від одного з
ПП відповідного номера через МП в ОЗП. Після того, як дешифратор
визначив номер ПА і МП надіслав запит про обмін даними, МП чекає сигнал
готовності від ПП. Демультиплексор передає дані з ОЗП на одне з ПП.
16
даними. Блок ПДП посилає ці сигнали, після того, як одержить від МП
сигнал підтвердження. Регістр даних передає дані з ОЗП в ПП і з ПП в ОЗП.
При ПДП процесор звільняється від керування операціями вводу - виводу і
може паралельно виконувати основну програму. ПДП забезпечує більш
висока швидкодія і більш високу продуктивність роботи ЕОМ.
Практична робота №2
Тема: Вивчення будови процесора і організації пам’яті
Мета роботи: Ознайомлення з будовою процесора і організації пам’яті.
Теоретичні питання
Сучасні мікропроцесори (МП)
МП виконує функції процесора ЕОМ, тобто керує процесом виконання
операцій і виконує їх. МП може бути реалізований на одному або декількох
кристалах. Звичайно процесор містить АЛП, який керує пам’яттю. МП
вибирає команду з пам'яті, дешифрує, виконує її, робить арифметичні і
логічні операції, одержує дані з пристроїв вводу і посилає їх на пристрої
виводу. МП разом із пам'яттю і каналами вводу-виводу є ЕОМ.
МП можуть бути однокристальні, багатокристальні і секціоновані.
Однокристальні МП виготовляються на основі МДП-технології, а
секціоновані і багатокристальні - на основі біполярних транзисторів.
МДП-транзистори споживають менше енергії, але мають меншу
швидкодію в порівнянні з біполярними транзисторами. В однокристальному
МП функції керування, операційна частина й пристрій керування реалізовані
на однім кристалі, а в багатокристальному - на різних кристалах. В
секціонованих пристроях керування, які керують пам'яттю і АЛП реалізовані
на однім кристалі, але малої розрядності. Для збільшення розрядності варто
об'єднувати в паралель декілька МП.
МП, як функціональний пристрій ЕОМ характеризується форматом
опрацювання даних і команд, кількістю команд, методом адресації даних,
числом внутрішніх регістрів загального призначення (РЗП), можливостями
організації й адресації стека, параметрами пам'яті, побудовою систем
переривання програми, системами вводу-виводу, системами інтерфейсу.
МП ставиться до числа що програмуються пристроїв ЕОМ. МП, що
виконує послідовність мікрооперацій, має більшу логічну і функціональну
гнучкість, чим жорстко закомутовані процесори ЕОМ. Змінюючи вміст ПЗП і
ПЛМ, можна настроюватися на виконання вимог конкретної задачі. МП -
комплект - це набір ВІС, функціонально що сполучаються і застосовуваних
для побудови мікроЕОМ.
Керуюча пам'ять, що містить мікропрограму з команд, передбачених
для даного МП, реалізована на ПЛМ і знаходиться в однієї ВІС із
центральним процесором і пристроєм керування.
Однокристальні МП застосовуються в найпростіших пристроях
цифрової автоматики й у якості мікроконтролерів.
17
Контролер - пристрій керування вводом-виводом. Багатокристальні
МП і секціоновані призначені для побудови мікроЕОМ і систем
швидкодіючої автоматики.
Застосування МП:
1. Вмонтовані системи контролю і керування. МП вбудовуються в
устаткування, не комплектуються зовнішніми пристроями і містять
спеціальний пульт керування і ПЗП керуючою програмою.
2. Локальні системи накопичення й опрацювання інформації. Локальні
- тобто розташовані на робочому місці системи накопичення й опрацювання
інформації, що здійснюють інформаційне забезпечення спеціалістів і
керівників. Локальні системи, які використані на великих ЕОМ із великим
обсягом пам'яті, що дозволяє створити автоматизовану систему
інформаційного забезпечення.
3. Розподілені системи керування складними об'єктами. У розподілених
системах схеми опрацювання даних і МП розташовуються поблизу джерел
інформації (двигуни і т.д.). Вони пов'язані з центральною системою
опрацювання і накопичення даних.
4. Розподілені системи паралельних обчислень. У тому випадку, якщо
дозволяє алгоритм рішення задачі, декілька процесорів проводять виконання
даної задачі.
МП і мікроЕОМ використовуються в системах керування
радіотехнічним устаткуванням судів. МікроЕОМ вирішує навігаційні задачі,
розпізнає м, вирішує оперативно-технічні задачі, виконує автоматичне
спостереження за ціллю і т.д.
Типова структура частини МП
18
команд номера осередку ОЗП, що містить код команди. Після зчитування
вміст лічильника команд відразу збільшується на 1. Номер осередку ОЗП
передається через регістр адреси пам'яті й адресної шини в дешифратор ОЗП.
Дешифратор ОЗП вибирає осередок ОЗП, що містить код команди. Код
команди зчитується з ОЗП і через шину даних передається в регістр даних
пам'яті. З регістра даних пам'яті код команди передається в регістр команд де
він зберігається до кінця виконання команди і через акумулятор код команди
передається в АЛП. АЛП аналізує код команди і якщо не потрібно
додаткового звертання до пам'яті переходить до виконавчого циклу.
Якщо ж потрібно додаткове звертання до пам'яті, то МП переходить до
другого машинного циклу, що так само починається з циклу вибірки. МП
запитує в ОЗП додаткові дані і виконує команди.
Команди можуть виконуватися за 1,2 або 3 машинних цикли. У
кожному машинному циклі відбувається тільки одне звертання до пам'яті.
Виконання команди відбувається під керуванням сигналів, вироблюваних
пристроєм керування. При виконанні команди АЛП взаємодіє з РОН. РОН
використовуються для короткочасного збереження операндів і результатів.
Тригери стану сигналізують про такі стани МП: обнулення
акумулятора, вміст знакового розряду, переповнювання розрядної сітки,
цифри переносів із 8-го і 4-го розрядів, уміст розряду контролю на парність.
Адресна шина є однонаправленою, а шина даних – двонаправленою. СТЕК -
особливий вид пам'яті, що розширює функціональні можливості МП.
Наприклад при виконанні програми , що перериває , в СТЕК поміщається
номер команди повернення і результат виконання останньої команди перед
переходом до виконання програми , що перериває.
Центральний процесорний елемент.
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 – БМК
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
(ППЗП), що зберігають інформацію при відключенні живлення і
припускають запис інформації. При цьому час запису в багато разів більше
часу зчитування. Зчитування інформації з ОЗП може відбуватися з руйнацією
інформації або без.
При руйнації інформації при зчитуванні необхідно додатковий час на
відновлення інформації. Час зчитування складається з часу пошуку адреси,
часу власного зчитування і часу регенерації (відновлення) ліченої інформації.
ОЗП реалізується на мікросхемах. Елемент пам'яті реалізований на тригерах.
Тригер може бути побудований на біполярних і уніполярних транзисторах.
Практична робота №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 .
27
Рис. 3.6 – Елемент Пірсу
В таблиці істинності (рис. 3.10) на відміну від таблиць для рис. 3.2 є
вісім значень вихідної змінної Y. Ця кількість визначається числом можливих
комбінацій вхідних змінних N, яке, в загальному випадку, рівно: N = 2n, де n –
число вхідних змінних.
Логічні елементи використовуються для побудови інтегральних
28
мікросхем, що виконують різні логічні і арифметичні операції і мають різне
функціональне призначення. Мікросхеми типу К155ЛН1 і К155ЛА3,
наприклад, мають в своєму складі шість інвертувань і чотири елементи
Шеффера відповідно (рис. 3.11), а мікросхема К155ЛР1 містить елементи
різного вигляду (рис. 3.12).
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
Логічні операції над дійсними числами позначаються знаками:
Символьні позначення логічних операцій
& | ~
І АБО НІ
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 елементами кожний.
Практична робота №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)
45
Рис. 7.2 – Графіки функцій y=sin(x), z=cos(x) (в одному графічному
вікні)
46
Рис. 7.3 – Графіки функцій y=sin(x), z=cos(x) і w=exp(x)
47
Розглянемо додаткові можливості, пов'язані з управлінням
зовнішнім виглядом графіків – завдання кольору і стилю ліній, а також
розміщення різних написів в межах графічного вікна. Наприклад, команди
» x=0:0.1:3; y=sin(x);
» plot(x,y,'r-',x,y,'ko')
дозволяють додати графіку вигляд червоної суцільної лінії (рис. 7.5), на
якій в дискретних обчислюваних крапках проставляють чорні кола. Тут
функція plot двічі будує графік однієї і тієї ж функції, але в двох різних
стилях. Перший з цих стилів відзначений як 'r-', що означає проведення лінії
червоним кольором (буква r), а штрих означає проведення суцільної лінії.
Другий стиль, помічений як 'ko', означає проведення чорним кольором (буква
к) кіл (буква о) на місці обчислюваних точок.
В загальному випадку функція 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.
Маркери, які задають тип крапки
Маркер . + * о х
Тип крапки Крапка Плюс Зірочка Кружок Хрестик
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
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
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
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
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.
Системи нелінійних алгебраїчних рівнянь
№ п/п Рівняння № п/п Рівняння
Теоретичні питання
Програма 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 представлені деякі джерела
сигналів.
64
Constant – задає постійний по рівню сигнал;
From Workspace – блок зчитування даних з робочої області;
From File – блок зчитування даних з файлу;
Sine Wave – формує синусоїдальний сигнал із заданою частотою,
амплітудою, фазою і зсувом;
Signal Generator – формує один з чотирьох видів періодичних сигналів
(синусоїдальний, прямокутний, пилоподібний, випадковий сигнали);
Ramp – формує лінійний сигнал;
Step – формує ступінчастий сигнал;
Random Number – формує випадковий сигнал з нормальним розподілом
рівня сигналу.
Приймачі сигналів (Sinks). На рис. 10.2 представлені блоки-приймачі
сигналів
66
Рис. 10.6 – Параметри блоку Sine Wave
67
таких структурних схем можуть бути використані різні підходи. На рис. 10.8,
10.9 зображено дві альтернативні схеми віртуальних генераторів системи
степеневих функцій вигляду: sk ( t ) = {t k }k =0 .
4
68
Рис. 10.10 – Зображення системи степеневих функцій на екрані
віртуального осцилографа
69
Рис. 10.12 – Структурна схема віртуального генератора системи
експоненціальних функцій (варіант 2)
Варіанти завдань
Сформувати і візуалізувати сигнали заданої форми.
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.1.
Знайти вирішення системи лінійних алгебраїчних рівнянь:
72
Перейдемо до еквівалентної системи диференціальних рівнянь:
73
Рис. 11.2 – Перехідний процес встановлення рішення системи лінійних
алгебраїчних рівнянь шляхом зведення до еквівалентної диференціальної
системи рівнянь
Приклад 11.2.
Знайти рішення системи:
74
Рис. 11.3 – Модель системи лінійних алгебраїчних рівнянь 3 порядку
75
Рис. 11.4 – Перехідний процес встановлення рішення системи рівнянь
Варіанти завдань.
1. Знайти рішення системи алгебраїчних лінійних рівнянь
засобами Matlab/Simulink.
Завдання обираються з таблиці 9.1 практичної роботи №9.
2. Сформувати структурні схеми:
Варіант 1. Сформувати структурну схему системи, що генерує фігуру
еліпса на екрані віртуального двокоординатного реєстратора XY Graph на
основі параметрично завданих рівнянь еліпса:
77
при наступних значеннях параметрів: А=5, В=2, ω=π/5.
Вказівка. Використовувати блоки: Ramp, Gain, Trigonometric Function,
XY Graph, встановити необхідні масштаби по осях двокоординатного
реєстратора.
Варіант 2. Сформувати структурну схему системи, що генерує фігуру
спіралі на екрані віртуального двокоординатного реєстратора XY Graph на
основі параметрично завданої математичної моделі спіралі:
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
81
Рис. 12.2 – Функціональний генератор
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 амплітуду
внутрішнього
джерела
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
Список літератури
86
Для заміток
87
Комп’ютерні технології та програмування [Текст] : Методичні вказівки до
практичних занять для студентів напряму підготовки 6.050202 «Автоматизація
К50
та комп’ютерно-інтегровані технології» всіх форм навчання уклад. О.М.
Решетило. – Луцьк: Луцький НТУ, 2016. – 88 с.
Редакційно-видавничий відділ
Луцького національного технічного університету
43018 м. Луцьк, вул. Львівська, 75
Друк – РВВ Луцького НТУ
88