МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
іНСТИТУТ КОМП’ютерних НАУК
та ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Кафедра “Системи автоматизованого проектування”
ОСНОВИ КОМП’ЮТЕРНОГО МОДЕЛЮВАННЯ СИСТЕМ
ЗА ДОПОМОГОЮ МОВИ MATLAB
МЕТОДИЧНІ ВКАЗІВКИ
до виконання лабораторної роботи № 1
з дисципліни “Моделювання систем”
для студентів спеціальності 7.080402
“Інформаційні технології проектування”
Затверджено
на засіданні кафедри систем
автоматизованого проектування
Протокол № від . .2008 р.
на засіданні методичної ради ІКНІ
Протокол № від . .2008 р.
ВАК № від . .2008 р.
Львів-2008
Основи комп’ютерного моделювання систем за допомогою мови Matlab. Методичні вказівки до виконання лабораторної роботи № 1 з дисципліни “Моделювання систем” для студентів спеціальності 7.080402 “Інформаційні технології проектування” для денної та заочної форм навчання/Укл. П.В.Тимощук. - Львів: Національний університет ”Львівська політехніка”, 2008. – 19 с.
Укладач: Тимощук П.В.
Відповідальний за випуск: Лобур М. В., д-р техн. наук, професор
Рецензенти: Мичуда З. Р., д-р техн. наук, професор
Каркульовський В. І., канд. техн. наук, доцент
МЕТА РОБОТИ
Вивчити і закріпити знання та основні аспекти роботи, а також отримати практичні навички програмування на мові високого рівня, призначеній для виконання технічних обчислень, Matlab.
СТИСЛА ХАРАКТЕРИСТИКА МОВИ MATLAB
1. Вступ. Побудова та дослідження моделей систем ефективно здійснюються у середовищах сучасних програм математичного моделювання з використанням бібліотеки математичних програм Netlib. Особливо ефективним є використання мови програмування високого рівня, призначеної для виконання технічних обчислень, Matlab. Отримані при цьому моделі легко інтегруються до бібліотеки Netlib та бібліотеки пакету Matlab. У складі цих бібліотек розроблені моделі можна використовувати та досліджувати при різних формах сигналів як автономно, так і в сукупності з іншими моделями.
Мова Matlab|язик,промова| |за|поєднує обчислення|підрахунок|, візуалізацію і програмування в зручному для користування середовищі, в якому|куди| задачі та їх |розв'язання,вирішення,розв'язування|розв’язки|виказані,висловлені| представляються у вигляді матоматичних|математик| позначень. Назва Matlab походить від скорочень англійських слів Matrix Laboratory і найкраще характеризує його сутність, де матричні операції є основою більшості розрахунків. Перша оригінальна версія Matlab написана мовою Fortran. Матричні операції Matlab грунтуються на алгоритмах, розроблених в процесі написання пакетів Unpack та Еізраск. Останні версії Matlab написані мовою С фірмою MathWorks. Найважливіші особливості Matlab:
можливість вибору та зміни платформи - програми та дані можна переносити на різні типи комп'ютерів з різними операційними системами;
відкрита архітектура з точки зору можливості створення спеціальних підпрограм, спрямованих на розв'язування певного класу задач. Такі підпрограми, які можна написати як за допомогою мови програмування самої Matlab (так звані т-файли), так і мовою програмування С, після компіляції утворюють mex-файли. Тому кожний користувач може зробити свій внесок у розширення можливостей Matlab.
Високу ефективність дослідження моделей у середовищі Matlab дозволяють забезпечувати спеціальні підпрограми або спеціалізовані професійні тулбокси (набори інструментальних засобів), пов'язані з розв'язанням певного класу задач. Зокрема, наприклад, можна виділити такі тулбокси:
System Identification Toolbox – призначений для ідентифікації систем. Дозволяє використовувати параметричні та непарамстричні алгоритми ідентифікації, зокрема, параметричну ідентифікацію, розрахунок і верифікацію моделі, вибір порядку моделі, демонстрацію і перетворення сигналів. Дає змогу за відомими вхідними та вихідними сигналами системи, попередньо задавши порядок моделі, створити її модель у вигляді рівнянь стану.
Control System Toolbox призначений для аналізу, моделювання та синтезу неперервних у часі та дискретних систем. Дозволяє використовувати різні форми опису систем (передавальна функція, система рівнянь змінних стану, розкладання на прості дроби, через нулі та полюси). Виконує перетворення від однієї форми опису системи до іншої, а також від неперервної до дискретної форм та навпаки. Дає змогу досліджуватиреакції систем на різні типи вхідних сигналів, а також синтезувати регулятори. Дозволяє аналізувати поведінку системи в частотній області.
Signal Processing Toolbox призначений для обробки та аналізу сигналів у часовій та частотній областях. Дозволяє проектувати аналогові та цифрові фільтри. Можливим є параметричне моделювання.
Fuzzy Logic Toolbox вмикає засоби моделювання в області нечіткої логіки, а також засоби до проектування інтелектуальних систем керування.
Neural Network Toolbox забезпечує побудову та дослідження штучних нейронних мереж. Дає змогу використовувати різні алгоритми їх навчання. Реалізує різні типи нейронів та пейронних мереж. Кожний нейрон описується вектором ваг, зміщенням та активаційною функцією. Зв'язок з тулблксом Simulink дозволяє використовувати навчені штучні нейронні мережі, як окремі блоки, в моделях систем. Набір інструментів Neural Networks містить засоби для проектування, моделювання, навчання та використання відомих штучних нейронних мереж. Засоби можна використовувати для розв’язання різноманітних задач, зокрема таких, як обробка сигналів, розпізнавання зображень, ідентифікація, нелінійне керування, підвищення швидкодії комп’ютерів та ін. До складу тулбоксу входять більше 150 різних функцій, утворюючи своєрідну макромову програмування, яка дозволяє користувачу створювати, навчати та використовувати різні нейронні мережі. Сюди входять активаційні функції, функції навчання нейронних мереж, налагоджування шарів нейронів, одновимірної оптимізації, ініціалізації шарів та зміщень, створення нейронних мереж, перетворення входів мережі, ваг та відстаней, розміщення нейронів (топологічні функції), використання нейронних мереж, графічні та інші функції.
Optimization Toolbox реалізує різні методи оптимізації лінійних і нелінійних систем та розв'язування систем нелінійних рівнянь. Можна знаходити екстремуми довільних функцій як за наявності, так і за відсутності обмежень, а також для випадку багатокритеріальної оптимізації.
Spline Toolbox призначений для розв'язування задач апроксимації та інтерполяції за допомогою сплайнів, з можливістю інтегрування та диференціювання отриманого рівняння.
Statistics Toolbox реалізує різноманітні статистичні функції, включаючи моделювання випадкових подій та генератори випадкових сигналів.
За допомогою мови програмування Matlab, а також шляхом використання тулбоксу Control System, ефективно розв’язуються системи лінійних, нелінійних рівнянь та здійснюється побудова часових характеристик. Числове інтегрування систем звичайних диференціальних рівнянь в Matlab може здійснюватись з постійним та змінним кроком. Метод можна вибирати з врахуванням типу моделі (неперервної або дискретної). Якщо модель не містить неперервного часу, програма використовує дискретний режим з фіксованим або змінним кроком. Параметри методів, прийняті за замовчуванням, приводять до швидкого отримання точних результатів при розв'язуванні більшості задач аналізу. Змінивши значення параметрів, можна додатково підвищити швидкість розв'язання задачі.
2. Типова сесія на мові Matlab. Matlab запускається шляхом подвійного натискання мишею на піктограмі програми (рис. 1). Після цього завантажується вікно з головним меню Matlab, а також робоче вікно. Головне меню Matlab 7.0 показане на рис. 2. Як можна побачити з рис. 2, головне меню Matlab 7.0 містить повний опис системи. З описом Matlab 7.0 можна також познайомитись шляхом використання систему допомоги програми (Help) або за допомогою пошуку за ключовими словами. Matlab має розбудовану систему допомоги, доступ до якої можна отримати як з командної стрічки: команда » help видає назви всіх доступних файлів допомоги; команда » help ім'я файла надає допомогу у роботі з окремим файлом, так і, використовуючи команди пунктів меню Help. Робоче вікно, в якому можна отримувати довідки, а також набирати програми, показане на рис. 3.
Кожна команда з клавіатури сприймається, інтерпретується, після чого виконується. Результат обчислення виразу є доступним, як значення змінної, якій приписано вираз. Так, команда » змінна = вираз після натискання клавіші "Enter" порахує значення виразу, змінна буде внесена до робочої області, а на екрані з'явиться напис: змінна = значення виразу та символ готовності до продовження роботи "»'.
При використанні формату команди: » вираз після натискання клавіші "Enter" буде пораховано значення виразу, а на екрані з'явиться напис: arts = значення виразу.
У випадку великих програм та під час використання циклічних операторів доцільніше записати необхідну програму у вигляді m-файла, а потім подати його назву в командній стрічці. У випадку необхідності програму з файла можна вивести на екран за допомогою команди type. Та-
Рис. 1. Піктограма Matlab.
кий файл можна створювати за допомогою будь-якого текстового редактора, навіть поза Matlab.
3. Типи та формати даних. Matlab допускає використання як дійсних, так і комплексних чисел, при цьому оголошення типу даних не вимагається. Для запису комплексних чисел використовуються символи і та j. Наприклад, 1.5+2.3*і. У середовищі Matlab також визначена змінна типу string. Така змінна є довільним текстовим фрагментом, записаним в апострофах, причому розрізняють верхні та нижні символи. Текст запам'ятовусться у вигляді вектора, а кожний знак тексту становить окремий елемент такого вектора. Наприклад, запис s='student' є текстовою змінною s=student. Певні математичні функції можуть генерувати значення типу нескінченність, яке в Matlab визначається, як inf або Inf (результат операції - число/0) та невизначеність - пап або Nan (результат операції - 0/0). В середовищі Matlab використовуються значення змінних рі та eps, які визначає точність розрахунку (за замовчуванням eps=2~52).
Рис. 2. Головне меню Matlab 7.0.
Matlab не вимагає оголошення не лише типу даних, але й їх розміру. Ім'я змінної може складатися з довільної комбінації літер і цифр, але не більше 19 знаків, розпочинатися з літери, причому в імені розрізняється велика і мала літери. Тому літери С і с можуть визначати дві різні змінні. Дані можуть бути подані як у скалярній, так і матричній формі.
Для виводу даних у середовищі Matlab доступними є такі формати:
short - дозволяє виводити 5 значущих цифр числа;
long - дозволяє виводити 15 значущих цифр числа;
short e -формат числа з плаваючою комою і 5 значущими цифрами;
long є - формат числа з плаваючою комою і 15 значущими цифрами;
short g - забезпечує вивід 5 значущих цифр як у форматі з фіксованою, так і плаваючою комою;
long g - забезпечує вивід 15 значущих цифр як у форматі з фіксованою, так і плаваючою комою;
hex - шістнадцяткова система числення;
format + - друкування символів +, - або пробілу для додатних, від'ємних елементів та нуля відповідно . Уявна частина числа ігнорується.
Рис. 3. Робоче вікно Matlab.
4. Запис математичних виразів в Matlab. Стандартно прийнято, що всі вирази в Matlab записуються за допомогою малих літер, а звертання до них з використанням великих літер трактується, як помилка. У середовищі Matlab немає ніякої різниці при визначенні змінної скалярного типу або матриці. Одиночна змінна трактується, як матриця розмірністю (1x1). Найпростішим способом вводу матриці в середовище Matlab є набір всіх її елементів з клавіатури. Елементи матриці вводяться рядками, які відділяють один від одного символом ";'' або переходом на новий рядок. Окремі елементи в рядках відділяються прогалинами. Наприклад, вираз А=[1 2 3; 4 5 6] або А=[1 2 З 4 5 6] вводить в робочу область матрицю А= EMBED Equation.3 .
Окремим випадком матриці є вектор (матриця, що складається з одного рядка чи стовпця). Спосіб вводу векторів є ідентичним введенню матриці. Окрім цього, для формування векторів у середовищі Matlab передбачена ще одна можливість - генерування вектора за допомогою команди х=хпоч:крок:хкін, де хпоч - перший елемент вектора; крок - різниця між двома сусідніми елементами вектора; хкін - останній елемент вектора. Значення кроку може бути як додатним так і від'ємним. У випадку, якщо значення кроку дорівнює 1, тоді команда генерування вектора набуває вигляду: х=хпоч:хкін.
Перелік деяких операцій з матрицями з використанням оператора ":" наведено в табл. 1.
Таблиця 1
Спеціальним типом матриці, що може існувати в робочій області, є порожня матриця. Розмірність такої матриці - 0x0, вона визначається так: А= [ ].
Матричні операції в середовищі Matlab реалізовані мовою С з використанням найефективніших числових алгоритмів, вони мають високу швидкодію і одночасно їх можна досить просто використовувати в будь-яких програмах. Перелік базових матричних операцій наведено в таблиці 2.
Таблиця 2
Додавання та віднімання матриць виконуються над матрицями однакового розміру. Визначеною є операція додавання чи віднімання, якщо один з операндів є скаляр. Операція множення матриць визначена у випадку множення матриці на скаляр.
Особливої уваги заслуговують визначені в Matlab операції правого та лівого ділення. Так, запис х=А\В відповідає розв'язку системи алгебричних рівнянь Ах=В, а запис х=А/В - розв'язкові системи алгебричних рівнянь хА=В.
Операція піднесення матриці А до n-го степеня (А^п) виконується перемноженням матриці А n разів.
В Matlab реалізована велика кількість корисних для користувача елементарних матричних функцій та операцій трансформування і декомпозиції матриць.
У середовищі Matlab є декілька функцій, призначених для статистичного аналізу даних. Додаткові можливості для роботи при статистичному опрацюванні даних надає Statistics Toolbox. Деякі функції наведені в табл. 3. Аргументами функції с вектори або стовпці матриць. Якщо аргументом функ-
Таблиця 3
ції є вектор, тоді її результатом буде скаляр. Якщо ж аргументом функції є матриця, тоді результатом буде вектор.
5. Графічне виведення інформації на мові Matlab. Функція plot автоматично відкриває нове вікно виводу графіків, якщо до цього воно ще не було відкрите. Якщо вікно виводу графіків вже було відкрите, тоді функція plot використовує його ж, як задане. Для відкриття нового вікна для виводу необхідно виконати команду figure. Для задання поточного вікна виводу серед відкритих графічних вікон необхідно набрати команду figure(n), де п - номер вікна.
Для виводу нових залежностей у створеному вікні графіка необхідно виконати команду hold on і задати команду виводу нової залежності. При цьому Matlab не знищує вже створений графік, а тільки, якщо це необхідно, змінює параметри осей.
Matlab дозволяє здійснювати поділ вікна виводу графіків на дві або чотири частини. Такий поділ з одночасним вибором активного вікна здійснюється за допомогою команди subplot(vha), в якій v та h приймають значення 1 або 2 і задають поділ екрана по вертикалі та по горизонталі відповідно, а параметр а визначає номер активного вікна. При виборі v = h=2 існує чотири вікна. Наприклад, команда subplot(211), plot(x) виведе графік зміни х у верхній половині екрана.
Якщо аргументом функції plot є комплексна змінна, тоді уявна частина числа ігнорується за винятком випадку, коли plot має один комплексний аргумент. У цьому випадку команда plot (Z), де Z є вектором або матрицею комплексних чисел, еквівалентна команді plot(real(Z), imag(Z)).
Використання при побудові графіка функції axis дає можливість задавати діапазон зміни координат. Структура такої команди має вигляд: axis([xmin xmax ymin ymax]).
Функція axis також дозволяє керувати виводом осей при побудові графіка та їх розбиттям. Так, наприклад, команда axis equal формує однаковий крок розбиття по х- та y-осях, а команда axis off дозволяє не виводити мітки та розбиття координатних осей.
Використання команди grid дозволяє нанести на графік сітку.
6. Моделювання систем на мові Matlab. Файл існуючої програми моделі системи на мові Matlab може бути завантажений шляхом натискання піктограми Open головного меню програми. Для формування нової програми необхідно послідовно натиснути на піктограми File, New та M-File і створити так званий М-файл (рис. 4). М-файлами називаються файли, що містять написані користувачем програми мовою програмування Matlab, які виконують певні операції.
Рис. 4. Створення М-файлу.
На рис. 5 показана програма на мові Matlab, розміщена в M-файлі. Програма може бути записана у вигляді M-файлу з певним іменем з суфіксом “м” (рис. 6). Для створення такого файлу може бути використаний будь-який текстовий редактор, за допомогою якого формується послідовність функцій та команд мови Matlab.
Рис. 5. Програма на мові Matlab в М-файлі.
Програма на мові Matlab запускається шляхом натискання піктограм Debug та Run (Рис. 7). При цьому перед запуском програма повинна бути записана у вигляді M-файлу.
На рис. 8 показано графік, який отримується в результаті виконання програми на мові Matlab.
В результаті виконання програми на мові Matlab отримані результати можуть бути виведені в робочу область (рис. 9) або записані у файл.
Для ілюстрації можливостей Matlab та його окремих тулбоксів призначені численні демонстраційні програми, які у багатьох випадках функціонують у діалоговому режимі і супроводжуються розвинутою системою пояснень дій, які виконує програма. Для доступу до таких програм необхідно в командній стрічці набрати команду » demo. Після виконання цієї команди з'явиться вікно, показане на рис. 10. Відкривши за
допомогою миші необхідний каталог, можна отримати доступ до демонстраційних файлів, запуск яких здійснюється за допомогою піктограми Run.
Рис. 6. Запис програми на мові Matlab у вигляді в М-файлу.
Для завершення моделювання необхідно в командній стрічці задати команду quit або exit. Аналогічну операцію можна виконати, використовуючи команду Exit Matlab меню File. Виконання цих команд призводить до втрати всіх вхідних даних та отриманих результатів, які зберігалися в робочій області. З метою їх збереження для подальшого використання необхідно перед виходом з середовища Matlab їх запам'ятати. Для цього служить команда: » save ім'я файлу, в якому будуть зберігатися дані. Такий файл матиме розширення mat. У разі необхідності збереження значень тільки окремих змінних після імені файла необхідно подати перелік цих змінних. Для завантаження збережених змінних у робочу область необхідно виконати команду » load ім'я файлу, в якому дані було збережено. Для усунення певних змінних чи функцій з робочої області Matlab застосовується команда » clear назва 1, назва 2, ..., де назва 1, назва 2, ... - імена змінних або назви функцій.
Рис. 7. Запуск програми на мові Matlab.
КОНТРОЛЬНІ ЗАПИТАННЯ
1. Які сучасні програми математичного моделювання використовуються для побудови та дослідження моделей систем?
2. Що таке Netlib?
3. Які типи та формати даних підтримуються в Matlab?
4. Як записати математичний вираз на мові Matlab?
5. Яке призначення тулбоксу Neural Networks?
6. Що таке робоче вікно Matlab?
7. Як створити нову програму на мові Matlab?
8. Як вивести графік функції в Matlab?
9. Як здійснюється моделювання системи на мові Matlab?
ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
Ознайомитися з теоретичними відомостями
Увімкнути комп'ютер. Переконатись в наявності встановленої програми Matlab.
Запустити програму Matlab та ознайомитися з її описом.
Рис. 8. Графік, отриманий в результаті виконання програми на мові Matlab.
Написати на мові Matlab та відлагодити програму моделювання прецизійного дискретного помножувача частоти гармонічних сигналів, який описується різницевим рівнянням виду:
EMBED Equation.3 ,
де EMBED Equation.3 - EMBED Equation.3 -те дискретне значення вхідного сигналу, A= EMBED Equation.3 , k=2,3,…,101, n - № прізвища студента у списку групи, EMBED Equation.3 та EMBED Equation.3 - EMBED Equation.3 -ті дискретні значення скінченних різниць першого та другого порядків відповідно, EMBED Equation.3 – EMBED Equation.3 -те дискретне значення вихідного сигналу моделі помножувача частоти.
Вивести на монітор графіки, а в робоче вікно - масиви отриманих значень EMBED Equation.3 , EMBED Equation.3 та EMBED Equation.3 , де EMBED Equation.3 – EMBED Equation.3 -те дискретне значення точного вихідного сигналу помножувача частоти.
Визначити максимальну абсолютну та середньоквадратичну похибки EMBED Equation.3 і EMBED Equation.3 вихідних сигналів моделі помножувача частоти.
Дослідити чутливість моделі помножувача частоти до варіації значень її параметрів. Для цього виконати завдання 6, 7 при максимальній абсолютній похибці виконання операцій перемноження, ділення сигналів та видобування квадратного кореня EMBED Equation.3 .
Порівняти отримані результати з аналогічними результатами, отриманими іншими студентами.
Проінформувати викладача про завершення роботи.
Продемонструвати на комп’ютері та пояснити результати виконання отриманих завдань.
Оформити звіт.
Рис. 9. Дані, виведені в робоче вікно в результаті виконання програми на мові Matlab.
ЗМІСТ ЗВІТУ
1. Титульний аркуш.
2. Зміст.
3. Мета роботи.
Рис. 10. Вікно демонстраційного режиму.
4. Короткі теоретичні відомості.
5. Завдання.
6. Хід роботи.
7. Отримані результати.
8. Висновки.
ВИМОГИ ДО ЗВІТУ
Звіт повинен бути оформлений на стандартних листках формату А4. Звіт може бути надрукований (розмір шрифта – 14, інтервал між рядками – 1.5) або якісно написаний від руки українською мовою. В обох випадках текст розміщується на двох сторонах аркуша. Рекомендується розміщувати до 30 рядків на сторінці.
На аркушах слід залишати поля. Розмір лівого поля – 25 мм, правого – не менше 10 мм, верхнього і нижнього – не менше 20мм. На початку розділів рекомендується збільшувати розмір верхнього поля до 40 мм.
Нумерація сторінок має бути наскрізною, першою сторінкою є титульний лист. На титульному листі номер сторінки не ставиться.
Звіт повинен бути стислим, чітким, лаконічним і містити лише інформацію, що має пряме відношення до предмету дослідження. Обсяг теоретичних відомостей не повинен перевищувати двох сторінок.
РЕКОМЕНДОВАНА ЛІТЕРАТУРА
1. Дьяконов В., Круглов В. Математические пакеты расширения MATLAB. Специальный справочник.-СПб.: Питер, 2001.-480с.
2. Лозинський А., Мороз В., Паранчук Я. Розв’язування задач електромеханіки в середовищах пакетів MathCAD і MATLAB: Навчальний посібник. - Львів: Видавництво Національного університету “Львівська політехніка”, 2000.-166 с.
3. Потемкин В.Г. Система инженерных и научных расчетов МАТЛАБ 5.x:-В 2-х т. Том 1.-М.: ДИАЛОГ-МИФИ, 1999.-366с.
4. Потемкин В.Г. Система инженерных и научных расчетов МАТЛАБ 5.x:-В 2-х т. Том 2.-М.: ДИАЛОГ-МИФИ, 1999.-304с.
5. Сайт HYPERLINK "http://www.mathworks.com" http://www.mathworks.com.
6. Сайт HYPERLINK "http://www.netlib.org" http://www.netlib.org.
7. Довідка (Help) програми Matlab.
НАВЧАЛЬНЕ ВИДАННЯ
ОСНОВИ КОМП’ЮТЕРНОГО МОДЕЛЮВАННЯ СИСТЕМ
ЗА ДОПОМОГОЮ МОВИ MATLAB
МЕТОДИЧНІ ВКАЗІВКИ
до виконання лабораторної роботи № 1
з дисципліни “Моделювання систем”
для студентів спеціальності 7.080402
“Інформаційні технології проектування”
Укладач: Тимощук Павло Володимирович