Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МВЛР1

.pdf
Скачиваний:
9
Добавлен:
12.02.2016
Размер:
1.65 Mб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІНСТИТУТ КОМП’ЮТЕРНИХ НАУК

ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ Кафедра “Системи автоматизованого проектування”

ОСНОВИ КОМП’ЮТЕРНОГО МОДЕЛЮВАННЯ СИСТЕМ ЗА ДОПОМОГОЮ МОВИ MATLAB

МЕТОДИЧНІ ВКАЗІВКИ

до виконання лабораторної роботи № 1 з дисципліни “Моделювання систем” для студентів спеціальності 7.080402 “Інформаційні технології проектування”

Затверджено на засіданні кафедри систем

автоматизованого проектування Протокол № 5 від 11.11 .2009 р. на засіданні методичної ради ІКНІ

Протокол № 4-09/10 від 30.11.2009 р. ВАК № 2953 від 2.02.2010 р.

Львів-2010

Основи комп’ютерного моделювання систем за допомогою мови Matlab.

Методичні вказівки до виконання лабораторної роботи № 1 з дисципліни “Моделювання систем” для студентів спеціальності 7.080402 “Інформаційні технології проектування” для денної та заочної форм навчання/Укл. П.В.Тимощук. - Львів: Національний університет ”Львівська політехніка”, 2010. – 19 с.

Укладач:

Тимощук П. В., д-р техн. наук, доцент

Відповідальний за випуск: Лобур М. В., д-р техн. наук, професор

Рецензенти:

Блажкевич І. І., канд. техн. наук, доцент

 

Каркульовський В. І., канд. техн. наук, доцент

2

МЕТА РОБОТИ

Вивчити і закріпити знання та основні аспекти роботи, а також отримати практичні навички програмування на мові високого рівня, призначеній для виконання технічних обчислень, 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 – призначений для ідентифікації систем. Дозволяє використовувати параметричні та непарамстричні алгоритми ідентифікації, зокрема, параметричну ідентифікацію, розрахунок і верифікацію моделі, вибір порядку моделі, демонстрацію і перетворення

3

сигналів. Дає змогу за відомими вхідними та вихідними сигналами системи, попередньо задавши порядок моделі, створити її модель у вигляді рівнянь стану.

Control System Toolbox призначений для аналізу, моделювання та синтезу неперервних у часі та дискретних систем. Дозволяє використовувати різні форми опису систем (передавальна функція, система рівнянь змінних стану, розкладання на прості дроби, через нулі та полюси). Виконує перетворення від однієї форми опису системи до іншої, а також від неперервної до дискретної форм та навпаки. Дає змогу досліджувати реакції систем на різні типи вхідних сигналів, а також синтезувати регулятори. Дозволяє аналізувати поведінку системи в частотній області.

Signal Processing Toolbox призначений для обробки та аналізу сигналів у часовій та частотній областях. Дозволяє проектувати аналогові та цифрові фільтри. Можливим є параметричне моделювання.

Fuzzy Logic Toolbox вмикає засоби моделювання в області нечіткої логіки, а також засоби до проектування інтелектуальних систем керування.

Neural Network Toolbox забезпечує побудову та дослідження штучних нейронних мереж. Дає змогу використовувати різні алгоритми їх навчання. Реалізує різні типи нейронів та пейронних мереж. Кожний нейрон описується вектором ваг, зміщенням та активаційною функцією. Зв'язок з тулблксом Simulink дозволяє використовувати навчені штучні нейронні мережі, як окремі блоки, в моделях систем. Набір інструментів Neural Networks містить засоби для проектування, моделювання, навчання та використання відомих штучних нейронних мереж. Засоби можна використовувати для розв’язання різноманітних задач, зокрема таких, як обробка сигналів, розпізнавання зображень, ідентифікація, нелінійне керування, підвищення швидкодії комп’ютерів та ін. До складу тулбоксу входять більше 150 різних функцій, утворюючи своєрідну макромову програмування, яка дозволяє користувачу створювати, навчати та використовувати різні нейронні мережі. Сюди входять активаційні функції,

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

Optimization Toolbox реалізує різні методи оптимізації лінійних і нелінійних систем та розв'язування систем нелінійних рівнянь. Можна знаходити екстремуми довільних функцій як за наявності, так і за відсутності обмежень, а також для випадку багатокритеріальної оптимізації.

Spline Toolbox призначений для розв'язування задач апроксимації та інтерполяції за допомогою сплайнів, з можливістю інтегрування та

4

диференціювання отриманого рівняння.

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. Та-

5

Рис. 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).

6

Рис. 2. Головне меню Matlab 7.0.

Matlab не вимагає оголошення не лише типу даних, але й їх розміру. Ім'я змінної може складатися з довільної комбінації літер і цифр, але не більше 19 знаків, розпочинатися з літери, причому в імені розрізняється велика і мала літери. Тому літери С і с можуть визначати дві різні змінні. Дані можуть бути подані як у скалярній, так і матричній формі.

Для виводу даних у середовищі Matlab доступними є такі формати: short - дозволяє виводити 5 значущих цифр числа;

long - дозволяє виводити 15 значущих цифр числа;

short e -формат числа з плаваючою комою і 5 значущими цифрами; long є - формат числа з плаваючою комою і 15 значущими цифрами; short g - забезпечує вивід 5 значущих цифр як у форматі з фіксованою,

так і плаваючою комою;

long g - забезпечує вивід 15 значущих цифр як у форматі з фіксованою, так і плаваючою комою;

hex - шістнадцяткова система числення;

format + - друкування символів +, - або пробілу для додатних, від'ємних елементів та нуля відповідно . Уявна частина числа ігнорується.

7

Рис. 3. Робоче вікно Matlab.

4. Запис математичних виразів в Matlab. Стандартно прийнято, що всі вирази в Matlab записуються за допомогою малих літер, а звертання до них з використанням великих літер трактується, як помилка. У середовищі Matlab немає ніякої різниці при визначенні змінної скалярного типу або матриці. Одиночна змінна трактується, як матриця розмірністю (1x1). Найпростішим способом вводу матриці в середовище Matlab є набір всіх її елементів з клавіатури. Елементи матриці вводяться рядками, які відділяють один від одного символом ";'' або переходом на новий рядок. Окремі елементи в рядках відділяються прогалинами. Наприклад, вираз А=[1 2 3; 4 5 6] або А=[1 2 З 4 5 6]

вводитьвробочуобластьматрицюА= 1

2

3 .

4

5

6

Окремим випадком матриці є вектор (матриця, що складається з одного рядка чи стовпця). Спосіб вводу векторів є ідентичним введенню матриці. Окрім цього, для формування векторів у середовищі Matlab передбачена ще одна можливість - генерування вектора за допомогою команди х=хпоч:крок:хкін, де хпоч - перший елемент вектора; крок - різниця між двома сусідніми елементами вектора; хкін - останній елемент вектора.

8

Значення кроку може бути як додатним так і від'ємним. У випадку, якщо значення кроку дорівнює 1, тоді команда генерування вектора набуває вигляду: х=хпоч:хкін.

Перелік деяких операцій з матрицями з використанням оператора ":" наведено в табл. 1.

 

Таблиця 1

A<:,j)

виведення j-го стовпчика матриці A

A(:,j:k)

виведення стовпчиків A(j), A(j+1),..., A(k) матриці А

A(i, :)

виведення і-го рядка матриці А

A(i:k,:)

виведення рядків А(і), А(і+1),..., А(k) матриці А

A(:>

виведення всіх елементів матриці в колонку

Спеціальним типом матриці, що може існувати в робочій області, є порожня матриця. Розмірність такої матриці - 0x0, вона визначається так: А= [ ].

Матричні операції в середовищі Matlab реалізовані мовою С з використанням найефективніших числових алгоритмів, вони мають високу швидкодію і одночасно їх можна досить просто використовувати в будьяких програмах. Перелік базових матричних операцій наведено в таблиці 2.

Таблиця 2

А' транспонування матриці

А±В додавання (віднімання) матриць

А*В множення матриць

А/В праве ділення матриць

А\В ліве ділення матриць

А"р піднесення матриці до степеня

а"Р піднесення скаляра до матричного степеня

Додавання та віднімання матриць виконуються над матрицями однакового розміру. Визначеною є операція додавання чи віднімання, якщо один з операндів є скаляр. Операція множення матриць визначена у випадку множення матриці на скаляр.

Особливої уваги заслуговують визначені в Matlab операції правого та лівого ділення. Так, запис х=А\В відповідає розв'язку системи алгебричних рівнянь Ах=В, а запис х=А/В - розв'язкові системи алгебричних рівнянь хА=В.

Операція піднесення матриці А до n-го степеня (А^п) виконується перемноженням матриці А n разів.

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

9

У середовищі Matlab є декілька функцій, призначених для статистичного аналізу даних. Додаткові можливості для роботи при статистичному опрацюванні даних надає Statistics Toolbox. Деякі функції наведені в табл. 3. Аргументами функції с вектори або стовпці матриць. Якщо аргументомфунк-

 

Таблиця 3

Min

найменший елемент

Max

найбільший елемент

Mean

середнє значення

Std

стандартне відхилення

Cov

коварІація

Corrcoef

коефіцієнткореляції

Sum

сумаелементів

Prod

добуток елементів

ції є вектор, тоді її результатом буде скаляр. Якщо ж аргументом функції є матриця, тодірезультатомбуде вектор.

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]).

10