- •Міністерство освіти і науки України
- •Практична робота №1 Вивчення будови пеом
- •Теоретичні питання
- •Практична робота №2 Вивчення будови процесора і організації пам’яті
- •Теоретичні питання
- •Практична робота №3 Дослідження логічних елементів
- •Теоретичні питання
- •Практична робота №4 Основи роботи з matlab
- •Теоретичні питання
- •Завдання до практичної роботи:
- •Практична робота №5 Написання програм з використанням умовних операторів
- •Теоретичні питання
- •Практична робота №6 Написання програм з використанням циклічних операторів
- •Теоретичні питання
- •Практична робота №7 Побудова графіків функцій
- •Теоретичні питання
- •Завдання до практичної роботи:
- •Практична робота №8 Рішення алгебраїчних і трансцендентних рівнянь в середовищі matlab
- •Теоретичні питання
- •Варіанти алгебраїчних та трансцендентних рівнянь
- •Практична робота №9 Рішення систем рівнянь в середовищі matlab
- •Теоретичні питання
- •Варіанти систем алгебраїчних рівнянь
- •Практична робота №10 Загальні відомості про програмний комплекс simulink. Побудова простих моделей
- •Теоретичні питання
- •Варіанти завдань
- •Порядок роботи над завданнями:
- •Практична робота №11 Моделі алгебраїчних об'єктів. Форматування об’єктів моделей
- •Теоретичні питання
- •Варіанти завдань.
- •Практична робота №12 Маскування підсистем в Matlab/Simulink
- •Теоретичні питання
- •Варіанти завдань.
- •Список літератури
- •Для нотаток навчально-методичне видання
- •Тир.__ прим. Зам.______
- •43018, М. Луцьк, вул. Львівська, 75
Завдання до практичної роботи:
Завдання 1. Задати матрицю А за допомогою операції конкатенації.
Завдання 2. Згенеруйте масив В розміром 3х3 з випадковими елементами, рівномірно розподіленими на інтервалі від 0 до 1.
Завдання 3. Виконайте дії:
А + 10*B, A*B, BT, поелементно помножити А на В,
розташувати елементи матриці А за збільшенням (по стовпцях),
визначити максимальний і мінімальний елементи матриці В,
обчислити визначника матриці В.
Завдання 4. Задати масив С, використовуючи операцію індексації і одну з функцій: ones або zeros.
Завдання 5. Вирішити систему лінійних рівнянь алгебри: A*X = В.
Завдання 6. Визначити масив D:
D =| sin(A)+ B3/5| .
Завдання 7. Для двох векторів:
а = {3,2; 2,8; -1,4} b= {0,6; 3,2; -4,8}
визначте: ;, а також відповідні поелементні операції.
Практична робота №5 Написання програм з використанням умовних операторів
Мета: Ознайомлення з умовними операторами системи MATLAB
Теоретичні питання
Управління потоками
MATLAB має вісім видів структур управління потоками:
оператор if;
оператор switch;
цикли 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
В даному прикладі три випадки є тими, що взаємно виключають, але якби це було не так, то виконувалася б перша істинна умова.
Важливо зрозуміти, як оператор відношення і оператор 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 розділяють ці групи. Виконується тільки перший відповідний випадок. Необхідно використовувати 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( ' Це неможливо ' )
end
Зауваження: в Matlab на відміну від С, оператор switch не «провалюється». Якщо перший випадок являється істиною, то інші випадки не перевіряються, виконуються. Таким чином немає необхідності використовувати оператор break.