Будь умным!


У вас вопросы?
У нас ответы:) SamZan.ru

Електромеханікаспеціальності Електромеханічні системи автоматизації та електропривод Реком.

Работа добавлена на сайт samzan.ru: 2016-03-13


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

Національний технічний університет України

“Київський політехнічний інститут”

Островерхов М.Я., Бур’ян С.О.

Обчислювальна техніка та програмування-2

Посібник до кредитного модуля
для студентів напряму підготовки 6.050702 «Електромеханіка»
спеціальності
«Електромеханічні системи автоматизації та електропривод»

Рекомендовано Методичною радою НТУУ «КПІ»

Київ

НТУУ «КПІ»

2010

Обчислювальна техніка та програмування-2: Посібник до кредитного модуля для студентів напряму підготовки 6.050702 «Електромеханіка» спеціальності «Електромеханічні системи автоматизації та електропривод» / Уклад.: М.Я. Островерхов, С.О. Бур’ян – К.: НТУУ «КПІ», 2010, –  236 с.

Гриф надано Методичною радою НТУУ «КПІ»

(протокол №    від                р.)

Навчальне видання

Обчислювальна техніка та програмування-2

Посібник до кредитного модуля
для студентів напряму підготовки 6.050702 «Електромеханіка»
спеціальності «Електромеханічні системи автоматизації та електропривод»

Укладачі:    Островерхов Микола Якович, канд. техн. наук, доц.

  Бур’ян Сергій Олександрович, ас.

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

Рецензенти   Кострицький В.В., д-р. техн. наук, професор

   Павлов В.Б., д-р. техн. наук, головн. наук.спів-ник

Вступ

Кредитний модуль «Обчислювальна техніка та програмування-2» призначений для вивчення студентами методів програмування у віртуальній матричній лабораторії MatLab (MATrix LABoratory). Цей математичний комплекс дає змогу максимально спростити розв’язання навчальних та інженерних задач, що постають перед студентами та фахівцями спеціальності «Електромеханічні системи автоматизації та електропривод».

Метою лабораторних робіт є отримання студентом необхідних навиків програмування та моделювання у пакеті MatLab для подальшого застосування при вивченні професійно-орієнтованих дисциплін.

Посібник складається з двох частин. Перша частина призначена для набуття студентами навичок програмування у середовищі MatLab, на основі операцій з масивами, роботи у m-файлах, побудови та оформлення графіків функцій, вирішення диференціальних рівнянь та символьних методів обчислень. Друга частина дозволить студентам вивчити один з найважливіших для спеціальності тулбоксів – систему візуального моделювання Simulink, яка дозволяє у режимі реального часу виконувати дослідження процесів у динамічних системах.

Лабораторні роботи виконуються на сучасних персональних комп’ютерах із застосуванням версії MatLab R2009a (7.8).

У посібнику до кожної лабораторної роботи подано грунтовні, теоретичні відомості, зміст та обсяг яких достатній для підготовки, виконання та захисту виконаної роботи. Крім того, посібник містить методичні вказівки з програмою лабораторної роботи, змістом звіту та контрольними запитаннями. Для поглибленого вивчення матеріалу необхідно звернутися до рекомендованої літератури.

Заключний етап лабораторної роботи – оформлення звіту, який подається на аркушах паперу формату А4 з урахуванням вимог ЄСКД.

Лабораторна робота № 1

основи роботи з функціями, векторами та матрицями

Тривалість лабораторної роботи – 4 год.

Мета роботи – ознайомлення з структурою матричної лабораторії MatLab, вивчення базових операцій, позначень та функцій для арифметичних обчислень, а також, для роботи з векторами та матрицями.

  1.  Основні теоретичні відомості

Запуск та основні елементи робочого вікна MatLab

Для запуску програмного забезпечення MatLab необхідно натиснути кнопку Пуск→Программы→MATLAB→R2009a→MATLAB R2009a або відповідний ярлик на робочому столі чи на панелі швидкого запуску. Після завантаження програми відкриється робоче вікно, яке показано на рис.1.1.

Рис.1.1. Робоче вікно MatLab

Це вікно має наступні основні елементи:

1 – Меню та панель інструментів. Застосовується для створення, зберігання, редагування файлів та інших операцій;

2 – Командне вікно (Command Window). Застосовується для запису команд та виконання обчислень;

3 – Робоча область (Workspace). Усі дані, що з’являються у MatLab автоматично зберігаються у вигляді масиву у робочій області, де записується ім’я (Name) та розмір масиву (Value). Навіть якщо користувач створив число, воно також записується у вигляді масиву розміром 1x1;

4 – Поточний каталог (Current Directory). Відображає шлях для зберігання та відкриття файлів;

5 – Історія команд (Command History). Відображає усі команди, що були введені у командному вікні за деякий час. MatLab автоматично сортує команди за датою їх вводу.

Основні арифметичні операції та принципи їх застосування

Після запуску програми курсор знаходиться у командному вікні. Після символу >> можна вводити різноманітні команди з бази даних MatLab, зокрема:

  1.  «*»(«.*») – множення (поелементне множення). Якщо у командному вікні ввести з клавіатури вираз

>>2*3

та натиснути клавішу Enter, то результат з’явиться у тому ж вікні у вигляді

ans =

  

 6

Число 6 одночасно з’явиться також у робочій області та буде називатися ans. Наступна будь-яка операція замінить масив ans результатом її виконання. Щоб зберігати усі масиви у робочій області, потрібно кожній операції присвоїти ім’я змінної, наприклад

>>g=3*4

Тоді на екрані з’явиться відповідь у наступній формі

g =

   12

а у робочій області з’явиться новий масив g, що має значення 12.

Поелементне множення застосовується для множення векторів та масивів, що буде розглянуто пізніше;

  1.  «/» («./») – ділення (поелементне ділення);
  2.  «+» («») – сума (різниця);
  3.  «^»(«.^») – піднесення до степеня (поелементне піднесення);
  4.  «sqrt» – визначення квадратного кореня. Ця команда аналогічна запису «^(1/2)»;
  5.  «sin», «cos», «tan», «cot» – тригонометричні функції синус, косинус, тангенс та котангенс відповідно;
  6.  «exp» – експоненціальна функція. Запис exp(2) означає ;
  7.  «log» – визначення натурального логарифму.

Необхідно підкреслити, що у випадку коли після будь-якої команди поставить знак крапки з комою «;», то результат виконання цієї команди не відобразиться у командному вікні. Це не означає, що отриманий результат не можна використовувати у наступних розрахунках, бо він автоматично записується у робочу область, наприклад

>> p=9*2-sqrt(56)+exp(2)-(3^2)/45;

Результат не з’явився на екрані, але змінна p зберігається у робочій області. Тепер її можна використовувати у розрахунках, наприклад

>>p*10-7

ans =

 170.0574

MatLab також дозволяє коментувати елементи програм. Для створення коментарю необхідно після закінчення команди написати символ процентів «%» і вставити будь-який текст, наприклад

>> x=15; %Завдання змінної х

>> b=x^2; %Визначення квадрату х

Способи завдання векторів

Як відомо, вектори можуть бути рядками або стовпцями. MatLab дозволяє задати обидва типи векторів. Наприклад потрібно створити вектор . Для цього у командному вікні набирається

>> a=[1 2 3]

та у результаті отримується

a =

     1     2     3

Для створення вектора-стовпця потрібно розділити елементи вектора знаком «;», наприклад

>> b=[1; 2; 3]

У результаті

b =

     1

     2

     3

Основні операції з векторами

Для роботи з векторами застосовуються наступні операції:

  1.  «+» – сума векторів. У результаті отримується новий вектор, кожен елемент якого є сума відповідних елементів векторів, що додаються, наприклад

>> a=[1 2 3];

>> b=[3 4 5];

>> c=a+b

c =

    4     6     8

  1.  «.*» – поелементне множення векторів. У результаті отримується новий вектор, кожен елемент якого є добуток відповідних елементів векторів, що множаться, наприклад

 >> a=[1 2 3];

>> b=[3 4 5];

>> c=a.*b

c =

     3     8    15

  1.  «.^» – піднесення до степеня кожного елемента вектора, наприклад

>> a=[1 2 3];

>> d=a.^2

d =

    1     4     9

  1.  «./» – поелементне ділення векторів. У результаті отримується новий вектор, кожен елемент якого є результат від ділення відповідних елементів векторів, що діляться, наприклад

>>a=[4 6 10];

>> b=[2 3 5];

>> a./b

ans =

     2     2     2

  1.  «.\» – зворотне поелементне ділення векторів. На відміну від звичайного ділення елементи другого вектора діляться на елементи першого

 >> a=[1 2 3];

>> b=[1 4 6];

>> a.\b

ans =

     1     2     2

Слід мати на увазі, що при застосуванні операцій поелементного множення та ділення вектори повинні бути одного типу та одного розміру.

  1.  «prod» – операція перемноження елементів вектора. Створюється число, що дорівнює добутку всіх елементів вектора, наприклад

 >>a=[1 2 3];

>> prod(a)

ans =

     6

  1.  «sum» – операція додавання елементів вектора. Створюється число, що дорівнює сумі всіх елементів вектора, наприклад

>> a=[1 2 10];

>> sum(a)

ans =

    13

  1.  «min» («max») – операція знаходження мінімального (максимального) елемента вектора, наприклад

>> a=[56 2 3 6 23 7 9 100 78];

>> min(a)

ans =

     2

Можна також знаходити не тільки сам елемент, а його порядковий номер. Це робиться наступним чином

>> a=[12 34 6 78 96 3 45 9 87 23];

>> [m,r]=min(a)

m =

    3

r =

    6

Тобто у створеному масиві мінімальний елемент 3, а його порядковий номер 6.

  1.  «sort» – сортування елементів вектора на збільшення, наприклад

 >> a=[56 2 3 6 23 7 9 100 78];

>> b=sort(a)

b =

     2     3     6     7     9    23    56    78   100

Для сортування елементів вектора у зворотному порядку (на зменшення) потрібно записати команду наступним чином

 >> a=[56 2 3 6 23 7 9 100 78];

>> b=-sort(-a)

b =

   100    78    56    23     9     7     6     3     2

  1.  «abs» – визначення модуля елементів вектора. Усі від’ємні елементи стають додатними, наприклад

 >> a=[1 2 -3 4 -7];

>> abs(a)

ans =

     1     2     3     4     7

  1.   «.'» – виконує транспонування вектора, наприклад

 >> a=[1 2 3 5];

>> d=a.'

d =

     1

     2

     3

     5

  1.  «size» – визначає розмір вектора (або матриці), наприклад для вектора  розмір буде 1х5

>> a=[1 2 3 4 7];

>> size (a)

ans =

  1.  5
  2.  «cross» – знаходить векторний добуток двох векторів, наприклад

>> a=[1 2 3];

>> b=[4 5 6];

>> s=cross(a,b)

s =

    -3     6    -3

Для того, щоб визначити скалярний добуток векторів, необхідно застосувати наступні команди

 >> a=[1 2 3];

>> b=[4 5 6];

>> c=sum(a.*b)

c =

    32

Це аналогічно запису .

 Звернення до елементів векторів та операції з ними

Для звернення до будь-якого елемента вектора необхідно у круглих дужках вказати його номер, наприклад для вектора  необхідно значення його четвертого елемента змінити на число 8. Це робиться наступним чином

>> a=[1 2 3 5 7];

>> a(4)=8

a =

    1     2     3     8     7

 З цими елементами можна виконувати будь-які математичні операції і навіть формувати з них нові вектори. Наприклад, заданий вектор . Потрібно додати його перший і другий елементи, перемножити третій і четвертий, відняти від останнього п’ятий та створити новий вектор з трьох непарних елементів. Це робиться наступним чином

>> a=[1 2 3 5 7 9];

>> b=a(1)+a(2);

>> c=a(3)*a(4);

>> d=a(6)-a(5);

>> e=[a(1) a(3) a(5)]

e =

      1     3     7

Способи завдання матриць

Існує три способи завдання матриць у MatLab. Нехай дана матриця

.

Необхідно створити її у робочій області.

1 - й спосіб.

>> A=[3 1 -1; 2 4 3]

A =

    3     1    -1

    2     4     3

2 - й спосіб.

>> A=[3 1 -1

2 4 3]

A =

    3     1    -1

    2     4     3

3 - й спосіб.

 >> A=[[3;2] [1;4] [-1;3]]

A =

      3     1    -1

      2     4     3

 Основні операції з матрицями

 Всі операції з векторами також застосовуються для перетворення матриць. Наприклад, потрібно перемножити дві матриці

 та  

 >> A=[3 1 -1; 2 4 3];

>> B=[2 4; 6 5; -1 2];

>> C=A*B

C =

     13    15

     25    34

Звернення до елементів матриці та операції з ними

Щоб звернутися до будь-якого елемента матриці необхідно у круглих дужках задати спочатку номер рядка і через кому номер стовпця, наприклад

>> A=[3 1 -1; 2 4 3];

>> A(1,3)=5

A =

      3     1     5

      2     4     3

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

 >> A=[3 1 -1; 2 4 3];

>> B=A(1,1)+A(1,2)+A(1,3)

B =

      3

 Вирішення систем лінійних алгебричних рівнянь матричним методом

Як відомо, за допомогою матриць можна вирішувати системи лінійних алгебричних рівнянь. MatLab робить це за допомогою команди «\». Наприклад, задана система рівнянь вигляду

 Створюються необхідні матриці та застосовується команда «\»

>> A=[1.2 0.3 -0.2; 0.5 2.1 1.3; -0.9 0.7 5.6];

>> B=[1.3; 3.9; 5.4];

>> X=A\B

X =

     1.0000

     1.0000

     1.0000

 Матриці «спеціального» вигляду

Існує декілька матриць «спеціального» вигляду для полегшення вводу інформації.

  1.  «zeros» – матриця, заповнена нулями. Можна створювати квадратну матрицю (у цьому випадку у дужках записується лише одне число – розмір квадратної матриці) або матрицю довільного розміру (у дужках вказується кількість рядків і через кому кількість стовпців), наприклад

>> A=zeros(3)

A =

      0     0     0

      0     0     0

      0     0     0

>> B=zeros(2,3)

B =

      0     0     0

      0     0     0

2. «eye» – одинична матриця (квадратна матриця з одиницями по головній діагоналі), наприклад

>> A=eye(4)

A =

      1     0     0     0

      0     1     0     0

      0     0     1     0

       0     0     0     1

3. «ones» – матриця, що складається з усіх одиниць. Створюється так само, як і матриця із нулями, наприклад

>> A=ones(4)

A =

      1     1     1     1

      1     1     1     1

      1     1     1     1

      1     1     1     1

>> B=ones(2,3)

B =

      1     1     1

      1     1     1

4. «rand» – матриця, що заповнюється випадковими десятковими числами, наприклад

>> A=rand(4)

A =

     0.8147    0.6324    0.9575    0.9572

     0.9058    0.0975    0.9649    0.4854

     0.1270    0.2785    0.1576    0.8003

     0.9134    0.5469    0.9706    0.1419

>> B=rand(2,3)

B =

     0.4218    0.7922    0.6557

     0.9157    0.9595    0.0357

 5. «diag» – матриця із заданими елементами по діагоналі та іншими нульовими елементами. Для створення цієї матриці необхідно попередньо задати вектор-діагональ, наприклад

>> d=[1 2 3 4];

>> A=diag(d)

A =

      1     0     0     0

      0     2     0     0

      0     0     3     0

      0     0     0     4

У якості діагоналей також можна використовувати матрицю «ones» та множити її на будь-яке число, наприклад

>> A=5*diag(ones(1,4))

A =

      5     0     0     0

      0     5     0     0

      0     0     5     0

      0     0     0     5

 Також можна рухати діагоналі паралельно головній, заповнюючи її елементами. Для цього у команді «diag» потрібно ставить кому і написати на скільки діагоналей угору або униз буде відбуватися зміщення (для зміщення униз потрібно перед числом ставити мінус). Треба також пам’ятати, що зі зміщенням униз або угору діагоналі змінюють свою розмірність. За допомогою команди «diag» можна також додавати або віднімати діагоналі від існуючих матриць, наприклад

>> A=-2*eye(4)+4*diag(ones(1,3),1)

A =

      -2     4     0     0

      0     -2     4     0

      0      0    -2     4

      0      0     0    -2

Для більш детального приклада, розглядається наступна матриця

.

Спочатку потрібно створити діагональну матрицю, помножену на 2, потім зсунути одну діагональ угору, створену з одиниць і помножену на 3, та дві униз (одну з одиниць, помножену на -1, іншу на 4). Це виконується за допомогою наступної послідовності команд

>>A=2*eye(5)

A =

      2     0     0     0     0

      0     2     0     0     0

      0     0     2     0     0

      0     0     0     2     0

      0     0     0     0     2

>>A=2*eye(5)+3*diag(ones(1,4),1)

A =

      2     3     0     0     0

      0     2     3     0     0

      0     0     2     3     0

      0     0     0     2     3

      0     0     0     0     2

>>A=2*eye(5)+3*diag(ones(1,4),1)-1*diag(ones(1,4),-1)

A =

      2     3     0     0     0

         -1     2     3     0     0

      0    -1     2     3     0

      0     0    -1     2     3

      0     0     0    -1     2

>>A=2*eye(5)+3*diag(ones(1,4),1)-1*diag(ones(1,4),-)+4*diag(ones(1,3),-2)

A =

      2     3     0     0     0

     -1     2     3     0     0

      4    -1     2     3     0

      0     4    -1     2     3

      0     0     4    -1     2

 6. «tril» та «triu» – команди створення трикутників під та над головною діагоналлю відповідно. Синтаксис запису такий як і в команді «diag». Трикутники можна також рухати униз та угору і множити на числа, наприклад

>> A=triu(ones(4,4),1)

A =

      0     1     1     1

      0     0     1     1

      0     0     0     1

      0     0     0     0

>> B=tril(ones(4,4),-1)

B =

      0     0     0     0

      1     0     0     0

      1     1     0     0

      1     1     1     0

 

Особливості створення блочних матриць

Вектори та матриці можна використовувати як компоненти для більш великих матриць. Нехай потрібно заповнити наступну матрицю

,

де ,  ,  .

Створюється матриця, два вектори та число, потім вони групуються в одну матрицю:

>> S=[2 0; 0 3];

>> b=[-9 9];

>> a=[4;5];

>> E=[S a;b 7]

E =

      2     0     4

      0     3     5

         -9     9     7

  1.  Програма роботи

  1.  Ознайомитися з матричною лабораторією MatLab, принципами програмування, операціями з векторами та матрицями.
  2.  Написати програму для визначення об’єму паралелепіпеда, створеного трьома векторами, заданими у таблиці 1.1 відповідно до номеру бригади.

Таблиця 1.1.

№ бр.

Задані вектори

№ бр.

Задані вектори

1

5

2

6

3

7

4

8

  1.  Написати програму для розв’язання системи лінійних алгебричних рівнянь матричним методом. Систему рівнянь взяти з таблиці 1.2 відповідно до номеру бригади.

Таблиця 1.2.

бригади

Вигляд системи рівнянь

бригади

Вигляд системи рівнянь

1

5

2

6

3

7

4

8

  1.  Написати програму для заповнення елементами двох блочних матриць. Вигляд матриць для кожної бригади поданий у таблиці 1.3.

 Таблиця 1.3.

№ бригади

Вигляд матриць

1

      

2

      

3

          

4

       

5

         

6

     

7

        

8

        

  1.  Зміст звіту

Звіт з лабораторної роботи має містити наступні матеріали:

  1.  Титульний аркуш.
    1.  Основні теоретичні відомості, необхідні для виконання лабораторної роботи.
    2.  Умови завдання для варіанту бригади.
    3.  Програми в MatLab за заданими умовами завдання.
    4.  Результати виконання кожної програми.
    5.  Висновки по виконанню лабораторної роботи.

1.4. Контрольні запитання

  1.  Назвіть основні елементи робочого вікна MatLab.
  2.  Що таке робоча область та командне вікно?
  3.  Назвіть основні арифметичні операції в MatLab.
  4.  Які існують способи завдання вектора у MatLab?
  5.  Назвіть основні операції з векторами.
  6.  Як визначити довжину вектора за допомогою функцій MatLab?
  7.  Як знайти змішаний добуток векторів за допомогою функцій MatLab?
  8.  Які існують способи завдання матриць?
  9.  Назвіть основні матриці спеціального вигляду.
  10.  Як виконується звернення до елементів векторів та матриць?
  11.  Опишіть методику вирішення систем алгебричних рівнянь матричним методом.
  12.  Що таке блочні матриці? Як їх задати?


Лабораторна робота № 2

побудова та правила оформлення графіків функцій

Тривалість лабораторної роботи – 2 год.

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

  1.  Основні теоретичні відомості

Правила побудови двовимірних графіків

Для побудови будь-яких графічних функцій використовується команда «plot», в якій у дужках записується спочатку масив аргументу, а потім через кому – масив значень функції. Нехай задана математична функція . Необхідно побудувати її графік при зміні аргументу  від -10 до 10. Для знаходження значень функції необхідно ввести масив значень аргументу . Це робиться наступним чином. Задається початкове значення, потім через двокрапку крок зміни аргументу і знову через двокрапку кінцеве значення, наприклад

>> x=-10:0.01:10;

У робочій області одразу з’явиться масив  розміром 1х2001. Тепер необхідно обрахувати значення функції , для чого у командному вікні записується

>> y=2*x.^2+3;

 Тут використане поелементне піднесення до степеня, тому що  є масивом. У протилежному випадку MatLab видає помилку

>> y=2*x^2+3;

??? Error using ==> mpower

Matrix must be square.

Після правильного обрахування функції у робочій області з’явиться масив  розміром 1х2001. Впевнившись, що масиви однакові, можна застосувати команду «plot»

>> plot(x,y)

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

Рис. 2.1. Вікно з графіком функції

Для збереження цього графіка необхідно натиснути меню File→Save As та вибрати потрібний формат збереження та каталог. Цей графік можна також імпортувати як картинку у Microsoft Word натиснувши меню Edit→Copy Figure, далі відкрити Word та натиснути Правка→Вставить. Інші деталі цього графічного вікна будуть розглянуті пізніше.

Правила побудови тривимірних графіків

Для побудови тривимірних графіків використовується команда «plot3». Вона записується аналогічно «plot», однак містить вже три змінні.

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

>> x=-10:0.01:10;

>> y=cos(x);

>> z=sin(x);

Далі використовується команда «plot3» у якій вказуються усі три змінні. Порядок розташування змінних визначається в залежності від поставленої задачі

>> plot3(x,y,z)

Після обробки команди з’явиться вікно, показане на рис. 2.2.

Рис. 2.2. Приклад тривимірного графіка

Правила побудови двох графіків з різними масштабами

MatLab дозволяє суміщати в одному графічному вікні два графіка з різними масштабами функцій. При чому масштаб першого графіка буде показаний зліва, а іншого – справа. Але треба звернути увагу, що вони повинні мати один і той же масив аргументу.

Нехай для проміжку зміни аргументу  від -5 до 5 необхідно сумістити дві функції  та . Видно, що масштаб другої функції буде набагато більший, ніж першої. Для таких випадків застосовується команда «plotyy», у дужках якої записується спочатку аргумент, потім через кому масив першої функції, потім через кому знову той самий аргумент, і знову через кому масив другої функції

>> x=-5:0.01:5;

>> y1=x.^2-12*x;

>> y2=100*x.^2-2*x-3;

Далі записується команда «plotyy» і з’явиться вікно з графіком, що зображене на рис. 2.3.

>> plotyy(x,y1,x,y2)

Рис. 2.3. Приклад суміщення двох графіків з різними масштабами

 Оформлення підпису графіків та осей

MatLab має наступні спеціальні команди для підпису графіків та осей.

  1.  «xlabel» – команда, що додає підпис осі абсцис. У дужках записується текст, який з’явиться навпроти осі, а також шрифт та розмір цього тексту. Для  визначення типу шрифту використовується підкоманда «FontName», а для визначення розміру шрифта – «FontSize». Правило запису наступне «xlabel('текст','FontName','назва шрифта', 'FontSize', розмір шрифта)», наприклад для графіка на рис. 2.1. потрібно підписати вісь абсцис

>> x=-10:0.01:10;

>> y=2*x.^2+3;

>> plot(x,y)

>> xlabel('агрумент х', 'FontName', 'Arial', 'FontSize', 12)

В результаті отримається графік з підписом, який показано на рис. 2.4.

Рис. 2.4. Приклад оформлення підпису осі

  1.  «ylabel» – додає підпис осі ординат. Алгоритм запису аналогічний попередній команді.
  2.  «zlabel» – додає підпис осі аплікат (тільки для тривимірних графіків).
  3.  «title» – додає назву графіка зверху. Алгоритм запису команди аналогічний двом попереднім.
  4.  «grid» – додає на графік масштабну сітку. Не потребує додаткових записів у дужках. Якщо набрати команду «grid» ще раз, то сітка зникне. Нижче наведемо приклад підпису всіх осей, графіка та додавання стіки.

>> x=-10:0.01:10;

>> y=2*x.^2+3;

>> plot(x,y)

>> xlabel('агрумент х','FontName','Arial','FontSize', 12)

>> ylabel('функція y','FontName','Arial','FontSize', 12)

>>title('графік квадратичної функції','FontName','Times New Roman','FontSize',16)

>> grid

Результат виконання програми показаний на рис. 2.5.

Рис. 2.5. Приклад оформлення підписів графіка

 Властивості лінії графіків

У команді для побудови графіків «plot» можна також задавати колір лінії, її товщину та тип, а також тип маркера, яким буде зображений графік. Алгоритм запису наступний «plot(x,y,'a b c','LineWidth',d)», де x та y –  аргумент та функція відповідно, a – задає колір лінії, b – тип маркера, c – тип лінії, d – розмір лінії (за згодою цей параметр дорівнює 1). Можливі значення a, b, та c представлені у таблиці 2.1.

Таблиця 2.1.

a (колір лінії)

b (тип маркера)

c (тип лінії)

y – жовтий

. – крапка

- – суцільна  

m – рожевий

o – кружок

: – пунктирна

c – блакитний

x – хрестик

-. – штрих-пунктирна

r – червоний

+ – плюс

-- – штрихова

g – зелений

* – зірка

b – синій

s – квадрат

w – білий

d – ромб

k – чорний

v – трикутник вершиною вниз

^ – трикутник вершиною угору

< – трикутник вершиною вліво

> – трикутник вершиною вправо

p – п’ятикутна зірка

h – шестикутна зірка

Приклад оформлення лінії для попереднього графіка

>> x=-10:1:10;

>> y=2*x.^2+3;

>> plot(x,y,'r+-.', 'LineWidth', 2)

>> grid

>> title('графік квадратичної функції','FontName','Times New Roman','FontSize',16)

>> ylabel('функція y','FontName','Arial','FontSize',12)

>> xlabel('агрумент х','FontName','Arial','FontSize',12)

Для прикладу крок зміни аргументу  взятий рівним одиниці, для того, щоб побачити тип маркера графіка. Як видно з програми, графік будується червоним кольором з типом маркера – плюс та типом лінії – штрих-пунктир. Розмір лінії для прикладу взятий 2. Результат виконання програми показаний на рис. 2.6.

Рис. 2.6. Приклад оформлення лінії графіка

 Вивід декількох графіків в одне графічне вікно

MatLab дозволяє виводити необмежену кількість графіків в одне графічне вікно. Для відкриття графічного вікна застосовується команда «figure». Після написання цієї команди використовуються усі розглянуті команди виводу графіків. Потрібно мати на увазі, що наступна команда виводу графіка замінить існуючий графік на новий. Щоб вивести новий графік, залишивши відкритим старий потрібно просто ще раз написати команду «figure» для відкриття нового графічного вікна.

Для виводу в одне графічне вікно декількох графіків використовується команда «hold». Вона затримує поточний графік у графічному вікні. Усі наступні команди виводу графіків будуть поміщати їх у те ж графічне вікно. MatLab автоматично промасштабує вікно відповідно до найбільшого масштабу серед усіх графіків. Якщо написати команду «hold» ще раз, то наступний графік буде виводитися у нове графічне вікно (якщо до нього написана команда «figure») або замінить усі попередні графіки у тому ж вікні (якщо не написана команда «figure»). Приклад виводу декількох графіків в одне вікно на

>> x=-2:0.1:2;   %обчислення аргументу

>> y1=x;    %обчислення першої функції

>> y2=x.^2;   %обчислення другої функції

>> y3=x.^3;   %обчислення третьої функції

>> y=abs(x);   %обчислення четвертої функції

>> figure;   %відкриття графічного вікна

>> plot(x,y1,'yo-','LineWidth', 1); %побудова графіка першої функції

>> hold    %затримка вікна

Current plot held

>> plot(x,y2,'m+-','LineWidth', 1); %побудова інших графіків

>> plot(x,y3,'rs-','LineWidth', 1);

>> plot(x,y,'bh-','LineWidth', 1);

>> grid    %активація сітки

Результат виконання програми показаний на рис.2.7.

Рис. 2.7. Приклад виводу декількох графіків в одне вікно

 Розбиття графічного вікна на підвікна

Кожне графічне вікно може бути розбите на декілька підвікон, у які можна виводити графіки. Для цього використовується команда «subplot», яка створює необхідну кількість графічних підвікон та керує їх послідовністю. Алгоритм запису команди наступний. У дужках записується спочатку кількість вікон по вертикалі, потім через кому кількість вікон по горизонталі і знову через кому номер вікна, у яке буде виводитися наступний графік. Тобто команда

>> subplot(2,3,1)  %відкриття першого підвікна з шести

відкриє вікно з трьома підвікнами по горизонталі і двома по вертикалі (у сумі 6 підвікон). Таким чином вікно перетворюється на «матрицю», де замість елементів будуть розташовані графічні підвікна. Приклад побудови графіків у графічних підвікнах

>> figure;  %відкриття загального графічного вікна

>> subplot(2,3,1);  %відкриття першого підвікна

>> x=-10:0.01:10; %завдання аргументу

>> y=2*x.^2-4*x-3; %обчислення першої функції

>> plot(x,y); %побудова першої функції у першому підвікні

>> grid;   %активація сітки

>> subplot(2,3,2); %відкриття другого підвікна

>> y=-5*x.^2+8*x-3; %обчислення другої функції

>> plot(x,y); %побудова другої функції у другому підвікні

>> grid;   %активація сітки

>> subplot(2,3,3); % відкриття третього підвікна

>> y=x.^2+3*x-1; % обчислення третьої функції

>> plot(x,y); %побудова третьої функції у третьому підвікні

>> grid;   %активація сітки

>> subplot(2,3,4); % відкриття четвертого підвікна

>> y=3*x+10;  % обчислення четвертої функції

>> plot(x,y); %побудова четвертої функції у четвертому підвікні

>> grid;   %активація сітки

>> subplot(2,3,5); % відкриття п’ятого підвікна

>> y=sin(x);  % обчислення п’ятої функції

>> plot(x,y);  %побудова п’ятої функції у п’ятому підвікні

>> grid;   %активація сітки

>> subplot(2,3,6); % відкриття шостого підвікна

>> y=cos(x);  % обчислення шостої функції

>> plot(x,y); %побудова шостої функції у шостому підвікні

>> grid;   %активація сітки

Результат виконання програми показаний на рис. 2.8.

Рис. 2.8. Приклад побудови графіків у графічних підвікнах

У кожному з графічних підвікон можна робити підписи осей, графіків, змінювати типи ліній і т.п. Якщо виникла помилка і необхідно перебудувати який-небудь графік, то потрібно знову звернутися до конкретного підвікна командою «subplot» і далі провести необхідні зміни.

Створення легенди графіків

Легенда графіків – це спеціальне вікно, у якому позначаються усі присутні у графічному вікні графіки, їх колір, тип та назва. Це дуже зручно використовувати, коли графічне вікно насичене різноманітними побудованими функціями.

Для створення легенди використовується команда «legend». Правила запису цієї команди наступне «legend('a','b',…,c)», де a, b, …. – назви графіків (їх кількість залежить від кількості графіків у графічному вікні), c – приймає значення 0, 1, 2, 3 або 4 (1-4 – математичні чверті вікна, в яких потрібно розмістити легенду, 0 – MatLab автоматично визначить менш завантажену графіками чверть і розмістить там легенду).

Приклад створення легенди

>> x=-pi:0.1:pi;  %завдання аргументу

>> y=sin(x);   %обчислення першої функції

>> z=cos(x);   %обчислення другої функції

>> plot(x,y, 'gx-');  %побудова графіка першої функції

>> hold;    %затримка вікна

Current plot held   

>> plot(x,z, 'ro-'); %побудова графіка другої функції

>>legend('sin(x)','cos(x)',2) %активація легенди у другій чверті

>> grid;    %активація сітки

Результат виконання програми показаний на рис. 2.9.

Рис. 2.9. Приклад створення легенди графіків

 Ручне масштабування осей графіків

Іноді Matlab досить невдало автоматично масштабує графіки або треба вивести тільки частину якогось графіка. У цих випадках потрібно робити зміни вручну. Для цього використовується команда «axis». У дужках записується масив мінімальних та максимальних значень по обох осях за наступним алгоритмом , наприклад

>> figure;   %відкриття графічного вікна

>> subplot(2,1,1)  %створення першого підвікна

>> x=0:0.01:15;  %обчислення аргументу

>> y=sin(x)+cos(x);  %обчислення функції

>> plot(x,y)   %побудова графіка функції у першому підвікні

>> title('графік функції y=cos(x)','FontSize',12);      %підпис графіка

>> grid;        %активація сітки

>> subplot(2,1,2)  %створення другого підвікна

>> plot(x,y)         %побудова тієї ж самої функції у другому підвікні

>> grid       %активація сітки

>> title('промасштабований графік функції y=cos(x)', 'FontSize',12);    %підпис графіка

>> axis([1 10 -10 10]) %масштабування у другому підвікні

У результаті виконання програми з’явиться вікно з двома однаковими графіками, як показано на рис. 2.10. Другий графік промасштабований вручну по обом осям.

Рис. 2.10. Приклад масштабування графіків

 Побудова графіків кусково-заданих функцій

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

>> t1=0:0.01:2;  %завдання масивів аргументів

>> t2=2:0.01:4;

>> t3=4:0.01:6;

>> y1=sin(t1);   %розрахунок значень функцій

>> y2=cos(t2);

>> y3=sin(t3);

>> t=[t1 t2 t3];  %створення масиву аргументів

>> y=[y1 y2 y3];  %створення масиву значень функцій

>> plot(t,y,'LineWidth',2); %побудова графіка з товщиною лінії 2

>> grid;    %активація сітки

Результат виконання програми показаний на рис. 2.11.

Рис. 2.11. Приклад створення графіків кусково-заданих функцій

  1.  Програма роботи

  1.  Ознайомитися з функціями для побудови  та оформлення графіків різних типів.
  2.  Для заданих чотирьох математичних функції. Відповідно до варіанту у таблиці 2.2.  написати програми для побудови їх графіків:

а) у чотирьох різних графічних вікнах;

 б) в одному графічному вікні;

 в) в одному графічному вікні, розбитому на 4 підвікна.

У кожному випадку зробити підписи осей, графіків, зробити кожен графік різним кольором, різним типом лінії та з різними маркерами. Проміжок для аргументу і крок підібрати так, щоб можна було б побачити тип маркера. Вивести легенду графіків у зручному місці.

Таблиця 2.2.

№ бригади

Функція 1

Функція 2

Функція 3

Функція 4

1

2

3

4

5

6

7

8

  1.  Написати програму для побудови графіків інтервально-заданих функцій згідно таблиці 2.3. Оформити графіки відповідно таблиці 2.4.

Таблиця 2.3.

№ бригади

функція 1

інтервал 1

функція 2

інтервал 2

функція 3

інтервал 3

1

0…3

3…5

5...10

2

-1...4

4…7

7...11

3

-2...0

0…4

4…8

4

-5...-1

-1…3

3…9

5

0…4

4…8

8...12

6

2…5

5…8

8...10

7

0…2

2…7

7...10

8

-4…4

4…8

8...11

Таблиця 2.4.

№ бригади

Колір лінії

Тип маркера

Тип лінії

Положення легенди (чверті)

Тип шрифту та розмір тексту

1

жовтий

крапка

пунктир

1

Arial, 11

2

голубий

кружок

штрихова

2

Times New Roman, 12

3

рожевий

хрестик

штрих-пунктир

3

Verdana, 13

4

червоний

плюс

пунктир

4

Arial, 12

5

зелений

зірка

штрихова

1

Times New Roman, 11

6

синій

квадрат

штрих-пунктир

2

Verdana, 13

7

жовтий

ромб

пунктир

3

Arial, 12

8

червоний

кружок

штрихова

4

Times New Roman, 11

  1.  Для функцій 1 та 2 з таблиці 2.2 побудувати тривимірний графік. Проміжок аргументу і крок задати самостійно. Оформити підписи осей.

  1.  Зміст звіту

Звіт з лабораторної роботи має містити наступні матеріали:

  1.  Титульний аркуш.
    1.  Основні теоретичні відомості, необхідні для виконання лабораторної роботи.
    2.  Умови завдання для варіанту бригади.
    3.  Програми в MatLab за заданими умовами завдання.
    4.  Результати виконання кожної програми з відповідними графіками.
    5.  Висновки по виконанню лабораторної роботи.

2.4. Контрольні запитання

  1.  Яка команда використовується для побудови двомірного графіка?
  2.  Назвіть команди підпису осей та алгоритм їх написання.
  3.  Як побудувати тривимірний графік?
  4.  Як побудувати графіки інтервально-заданих функцій?
  5.  Як промасштабувати координатні осі? Як нанести легенду?
  6.  Назвіть основні типи маркерів та як вони наносяться?

Лабораторна робота № 3

обробка та редагування графіків за домомогою функцій графічних вікон

Тривалість лабораторної роботи – 2 год.

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

  1.  Основні теоретичні відомості

Структура графічного вікна та його основні параметри

Для редагування графіків, підпису осей, та ін. можна використовувати не тільки команди MatLab, а ще й функції графічного вікна. Типове графічне вікно з побудованим для прикладу графіком зображене на рис. 3.1.

Рис. 3.1. Типове графічне вікно

 

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

  1.  File (Файл) – відкриття, збереження файлів та основні налаштування.
    1.  New – створення нового графічного вікна (Figure), m-файла або нової змінної у робочій області (Variable);
    2.  Open – відкриття збереженого раніше графічного вікна;
    3.  Close –закриття графічного вікна без збереження;
    4.  Save – збереження графічного вікна з розширенням .fig;
    5.  Save As – збереження графічного вікна у існуючому форматі;
    6.  Generate M-file – створення m-файла із графічного вікна;
    7.  Import Data – імпорт додаткових даних у графічне вікно;
    8.  Save Workspace As – збереження вмісту робочої області;
    9.  Preferences – налаштування графічного вікна;
    10.   Export Setup – експортування настроювань одного графічного вікна у інше;
    11.   Print Preview – попередній перегляд графіка перед друком;
    12.   Print – друк вмісту графічного вікна.
  2.  Edit (Редагування) – містить основні команди редагування вікна.
    1.  Undo – відміна попередньої операції;
    2.  Redo – повтор відміненої операції;
    3.  Cut, Copy, Paste – вирізати, скопіювати, вставити;
    4.  Clear Clipboard – очищення буферу обміну;
    5.  Delete – видалення;
    6.  Copy Figure – копіювання вмісту графічного вікна у буфер обміну з подальшою вставкою цього вмісту у інші програми (наприклад у Microsoft Word);
    7.  Copy Options – налаштування копіювання вмісту графічного вікна (доступні також у пункті меню File→ Preferences);
    8.  Figure Properties – відкриває додаткову панель для редагування вмісту графічного вікна (детально цей пункт буде розглянуто пізніше);
    9.  Axis Properties – відкриває іншу закладку редагування вмісту графічного вікна (детально цей пункт буде розглянуто пізніше);
    10.   Current Object Properties – відкриває закладку з редагуванням вибраного об’єкта;
    11.   Colormap – відкриття вікна для редагування карти кольорів;
    12.   Find Files – вікно для пошуку файлів;
    13.   Clear Figure – очищення вмісту графічного вікна;
    14.   Clear Command Window – очищення командної строки;
    15.   Clear Command History – очищення історії команд;
    16.   Clear Workspace – очищення робочої області.
  3.  Viev (Вигляд) – налаштування вигляду вікна.
    1.  Figure Toolbar – активація/дезактивація панелі для редагування графічного вікна;
    2.  Camera Toolbar – активація/дезактивація панелі керування камерою вигляду графічного вікна;
    3.  Plot Edit Toolbar – активація/дезактивація панелі редагування графіків;
    4.  Figure Palette – відкриття закладки для створення графіків вручну;
    5.  Plot Browser – відкриття закладки для перегляду вмісту графічного вікна;
    6.  Property Editor – відкриття закладки для редагування графічного вікна (детально цей пункт буде розглянуто пізніше).
  4.  Insert (Вставка) – вставка додаткових елементів на графік.
    1.  Xlabel, Ylabel, Zlabel – вставка підпису осі абсцис, ординат, аплікат (аналогічно xlabel, ylabel, zlabel з командного вікна);
    2.  Title – вставка підпису графіка (аналогічно title з командного вікна);
    3.  Legend – вставка легенди графіків (аналогічно legend з командного вікна);
    4.  ColorBar – вставка редагованої у п. 2.11 карти кольорів;
    5.  Line – вставка лінії;
    6.  Arrow – вставка стрілки;
    7.  Text Arrow – вставка стрілки з текстом;
    8.  Double Arrow – вставка подвійної стрілки;
    9.  TextBox – вставка тексту;
    10.   Rectangle – вставка прямокутника;
    11.   Ellipse – вставка еліпса;
    12.   Axes – вставка координатної сітки;
    13.   Light – вставка світла.

Перш ніж перейти до наступного пункту доцільно розглянути приклад редагування графіка на рис. 3.1. Потрібно підписати осі, графік, вставити стрілку с текстом «Функція » та легенду. Застосувавши пункти  4.1, 4.2, 4.3 та 4.7 отримується графік, показаний на рис. 3.2.

Рис. 3.2. Приклад підпису осей та графіка

  1.  Tools (Інструменти) – додаткові засоби редагування графіків.
    1.  Edit Plot – режим редагування вмісту графічного вікна (детально цей пункт буде розглянуто пізніше);
    2.  Zoom In, Zoom Out – збільшення та зменшення зони перегляду графіка. Застосовується при необхідності переглянути фрагмент графіка чи роздруку цього фрагмента;
    3.  Pan – захват та рух графіка разом з координатною віссю;
    4.  Rotate 3D – обертання графіка у тривимірній площині за допомогою захвату і руху курсором;
    5.  Data Cursor – режим у якому за допомогою курсору можна відстежувати координати точок графіка;
    6.  Brush – дає можливість виділити фрагменти графіка іншим кольором та іншою товщиною;
    7.  Link – показує зв’язок між існуючими даними;
    8.  Reset View – скидання всіх масштабних змін;
    9.  Options – опції масштабу та захвату;
    10.  Basis Fitting – апроксимація графіків (детально цей пункт буде розглянуто пізніше);
    11.  Data Statistics – деякі статистичні дані по кожному з графіків (мінімум, максимум, середнє значення, інтервал і т.п.).
  2.  Desktop (Робочий стіл) – закріплює графічне вікно у робоче вікно MatLab.
  3.  Window (Вікно) – переключення між різними графічними вікнами, якщо їх більше одного.
  4.  Help (Допомога) – допомога, демоверсії програм по побудові графіків та обновлення для MatLab.

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

Режим редагування вмісту графічного вікна

Для того, щоб перейти у цей режим необхідно зайти у пункти меню 2.8, 2.9, 3.6 або 5.1. Після цього під графіком відкриється вкладка «Property editor», а на координатній сітці, графіку або вікні (в залежності який підпункт активований) з’являються невеликі чорні квадратики.

«Property editor» має три підпункти: Figure (редагування вікна), Axes (редагування осей) та Lineseries (редагування графіків). Щоб активувати один з цих пунктів достатньо натиснути курсором на сірий фон вікна, координатну вісь або на лінію графіка відповідно. Розглядається детально вміст кожного з цих підпунктів:

1. «Property editor – Figure» дозволяє змінити колір фону (Figure Color), змінити мапу кольорів (Colormap) та задати ім’я графічного вікна (Figure name). Для відкриття більш детальних опцій потрібно натиснути кнопку More Properties. Вигляд вкладки показаний на рис. 3.3.

Рис. 3.3. Вкладка «Property editor – Figure»

 2. «Property editor – Axes» дозволяє редагувати координатну сітку, а саме: створити назву графіка (вікно Title), створити сітку по всім осям (Grid) та змінити її колір та колір заливки (Colors). Вкладка також має 4 внутрішні вкладки. Три з них (X Axis, Y axis та Z axis) дозволяють вставити мітки осей (X label, Y label, Z label) змінити межі осей (X limits, Y limits, Z limits) та їх поділки (кнопка Ticks), змінити лінійну шкалу на логарифмічну (Scale) та реверсувати координатну вісь (Reverse). Четверта вкладка Font задає ім’я шрифту підпису осей (Font Name), розмір шрифту (Font Size) та зробити його жирним або курсивом (Weight та Angle). Для більш детальних опцій редагування осей слід натиснути кнопку More Properties. Вигляд вкладки показаний на рис. 3.4.

Рис. 3.4. Вкладка «Property editor – Axes»

 3. «Property editor – Lineseries» дозволяє редагувати сам графік, а саме: вибрати джерело функції та аргументів з робочої області (Data Source), вибрати тип відображуємого графіка (Plot Type), тип лінії, її товщину та колір (Line), тип маркера, його розмір, колір та заливку (Marker). Для відображення більш детальних опцій слід натиснути кнопку More Properties. Вигляд вкладки показаний на рис. 3.5.

Рис. 3.5. Вкладка «Property editor – Lineseries»

 Способи апроксимації графіків

 Експериментально зняті дані іноді не зовсім точно відтворюють справжні форми деяких функцій або залежностей. Це пов’язане з неточністю приладів або запізнілою реакцією людини. У таких випадках для приведення графіка до адекватного вигляду застосовується апроксимація. Розглядаеться приклад побудови графіка за знятими експериментальними даними і апроксимація його за допомогою MatLab.

Нехай були зняті наступні масиви даних, що знаходяться у таблиці 3.1.

Таблиця 3.1.

Масиви даних

Швидкість повітряного потоку, м/с

10

13

15.9

18.5

21.5

24.4

27.1

29.5

31.5

Потужність, Вт

25

62.5

125

175

250

375

500

625

800

Для побудови такої залежності спочатку необхідно створити масиви цих даних у MatLab і за допомогою команди «plot» вивести графік

>> V=[10 13 15.9 18.5 21.5 24.4 27.1 29.5 31.5];

>> P=[25 62.5 125 175 250 375 500 625 800];

>> plot(V,P);

Після виконання програми на екрані з’явиться графік, що зображений на рис. 3.6.

Рис. 3.6. Графік, побудований по експериментальним даним

 

 Далі потрібно зайти у меню Tools→Basic Fitting. Відкриється нове вікно, що зображено на рис. 3.7.

Рис. 3.7. Вікно Basic Fitting

Для початку апроксимації потрібно здійснити вибір даних. У даному випадку тільки один графік, тому у розділі Select Data вибирається Data 1. Далі потрібно вибрати один з наступних методів апроксимації:

  1.  Spline Interpolant – інтерполяція за кривою;
    1.  Shape-Preserving Interpolant – інтерполяція за формою;
    2.  Linear – апроксимація до лінійної залежності;
    3.  Quadratic – апроксимація до квадратичної залежності;
    4.  Cubic – апроксимація до кубічної залежності;
    5.  4th-10th degree polynomial – апроксимація до поліному 4-10-го порядку.

Вибирається відповідно до форми нашого графіка форма Quadratic, і ставиться прапорець Show Equations, який перетворить апроксимовану залежність у рівняння з коефіцієнтами, яке відобразиться у правій частині вікна. Якщо правої частини вікна немає, то потрібно натиснути чорну стрілку знизу вікна. Також можна вибрати кількість цифр у коефіцієнтах (від 2 до 5).

Для порівняння апроксимованої залежності і реального графіка можна вивести їх різницю, поставивши прапорець Plot Residuals, в якому вибрати тип лінії (Bar, Scatter або Line) та спосіб відображення (Subplot – вікно розіб’ється на 2 піввікна або Separate Figure – відкриється друге графічне вікно). Також можна поставити прапорець на Show norm of residuals (показати норму різностей). Кнопка Save To Workspace дозволяє зберегти дані до робочої області. Вікно Basic Fitting з обрахованими коефіцієнтами показане на рис. 3.8.

Рис. 3.8. Вікно Basic Fitting з апроксимованою кривою

 Застосувавши розглянуті у розділі «Редагування графічного вікна» способи оформлення графіків підписуються осі, титул графіків, відображується сітка та ін. В результаті отримаємо графік, показаний на рис. 3.9.

Рис. 3.9. Приклад апроксимації графіка, побудованого за експериментальними даними

 Редагування тексту за допомогою функцій TeX

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

Таблиця 3.2.

Редагування тексту

Значення

Команда

Виділення курсивом

\it текст

Виділення жирним

\bf текст

Жирний курсив

\bf\it текст

Ім’я та розмір шрифту

\fontname {ім’я шрифту}\fontsize {розмір} текст

Верхній індекс

текст^{індекс}

Нижній індекс

текст_{індекс}

Грецькі символи

Значення

Команда

Значення

Команда

Альфа ()

\alpha

Ро ()

\rho

Бета ()

\beta

Сігма ()

\sigma

Гама ()

\gamma

Тау ()

\tau

Дельта ()

\delta

Фи ()

\phi

Епсілон ()

\epsilon

Чи ()

\chi

Ета ()

\eta

Пси ()

\psi

Тета ()

\theta

Омега ()

\omega

Капа ()

\kappa

Велика Гама ()

\Gamma

Лямбда ()

\lambda

Велика Дельта ()

\Delta

Мю ()

\mu

Велика Тета ()

\Theta

Ню ()

\nu

Велика Лямбда ()

\Lambda

Ксі ()

\xi

Велика Фі ()

\Phi

Спеціальні символи

Значення

Команда

Менше-рівно ()

\leq

Більше-рівно ()

\geq

Двостороння стрілка (↔)

\leftrightarrow

Стрілка вліво (←)

\leftarrow

Стрілка вправо (→)

\rightarrow

Плюс-мінус ()

\pm

Нескінченність ()

\propto

Часткова похідна ()

\partial

Стрілка униз (↓)

\downarrow

Стрілка угору (↑)

\uparrow

Розглядається приклад застосування функцій TeX. Нехай є знятий графік перехідного процесу кутової швидкості та моменту двигуна  та , показаний на рис. 3.10. Потрібно підписати осі 14-м шрифтом Times New Roman, а сам графік жирним курсивом та 16-м шрифтом. Літеру  зробити грецькою за допомогою функції TeX. На графік нанести сітку та стрілками показати швидкість і момент (напис зробити 12-м шрифтом). Лінії зробити товщиною 2 і різними кольорами.

Рис. 3.10. Задані графіки перехідних процесів

Відкривається «Property editor – Axes». У пункті «Title» пишеться

«\bf\it\fontname{TimesNewRoman}\fontsize{16}Графік перехідного процесу швидкості та моменту».

Ставиться прапорець «Grid» на осях X та Y. Далі у полі «Xlabel» пишеться

«\fontname{TimesNewRoman}\fontsize{14} Час перехідного процесу t, с».

У полі «Ylabel» пишеться

«\fontname{TimesNewRoman}\fontsize{14}Швидкість \omega, рад/с

Момент М, Н*м».

Далі два рази натискається на графік швидкості і вибирається вкладка «Property editor – Lineseries». Виставляється там товщина лінії – 2. Так само для графіка моменту. Також цей графік робиться іншим кольором, наприклад червоним. За допомогою меню Insert→Text Arrow вставляються стрілки з відповідним текстом для швидкості (\fontsize{12}Швидкість \omega) та моменту (\fontsize{12}Момент М). Закривається вкладка і отримується оформлений графік, показаний на рис. 3.11.

Рис. 3.11. Приклад оформлення графіків

  1.  Програма роботи

  1.  Ознайомитися з правилами оформлення графічного вікна, способами апроксимації та командами функції TeX.
  2.  Для заданої таблиці 3.3 з експериментальними даними, виконати наступні завдання:
  3.  побудувати залежності  та  на одному графіку, на різних та в двох підвікнах одного графічного вікна;
  4.  за допомогою функцій редагування графічного вікна оформити підписи осей, титула, стрілками показати кожен з графіків, зробити графіки різним кольором, показати маркери, вивести легенду;
  5.  підібрати метод та апроксимувати кожен з графіків, отримати рівняння кожної кривої, вивести графіки різниць типу «лінія» в різних підвікнах одного графічного вікна для кожної кривої;
  6.  побудувати графіки за отриманими апроксимованими рівняннями на одному графіку із експериментальними і порівняти результати. Зробити оформлення всіх графіків.

Оформлення графіків проводити відповідно до номеру бригади згідно таблиці 3.4.

Таблиця 3.3.

Масиви даних

4.2

7.7

9.9

11.1

13.2

14.4

16.4

17.8

19.3

21.3

21.9

22.4

22.8

23.1

4.24

3.75

3.43

3.21

2.86

2.66

2.26

1.95

1.55

0.95

0.69

0.44

0.12

0

28.8

47.1

55.8

58.9

65.2

66.9

69.9

69.3

65.9

53.1

45.1

32.7

9.49

0

Таблиця 3.4.

№ бригади

1

2

3

4

5

6

7

8

Завдання

Підпис осі

Times New Roman

14

Arial

12

жирний

Verdana 13

курсив

Times New Roman

12

Verdana 12

жирний курсив

Arial

14

жирний курсив

Times New Roman

13

Verdana 14

жирний

Підпис осі

Verdana 14

жирний

Times New Roman

13

Arial

14

жирний курсив

Verdana 12

жирний курсив

Times New Roman

12

Verdana 13

курсив

Arial

12

жирний

Times New Roman

14

Підпис осі

Times New Roman

12

Arial

14

жирний курсив

Verdana 12

жирний курсив

Times New Roman

13

Verdana 14

жирний

Times New Roman

14

Verdana 13

курсив

Arial

12

жирний

Титули

Times New Roman

16

Arial

16

жирний

Verdana 16

курсив

Times New Roman

16

Verdana 16

жирний курсив

Arial

16

жирний курсив

Times New Roman

16

Verdana 16

жирний

Колір

червоний

синій

зелений

чорний

жовтий

рожевий

голубий

синій

Колір

синій

жовтий

чорний

голубий

рожевий

жовтий

чорний

зелений

Колір

зелений

чорний

голубий

рожевий

зелений

червоний

зелений

чорний

Маркер

ромб

хрестик

точка

п’ятикутна зірка

три-ник

угору

плюс

квадрат

кружок

Маркер

шестик.

зірка

три-ник

вліво

кружок

ромб

хрестик

три-ник

униз

точка

зірка

Маркер

три-ник

угору

кружок

квадрат

три-ник

вліво

шестик.

зірка

точка

три-ник

вправо

ромб

Колір графіка різниць

жовтий

зелений

рожевий

зелений

червоний

чорний

жовтий

жовтий

Маркер графіка різниць

кружок

плюс

шестик.

зірка

точка

ромб

кружок

зірка

точка

Положення легенди

1

2

3

4

1

2

3

4

Тип лінії

пунктир

штрих.

штрих

пункт.

суцільна

суцільна

пунктир

штрих

пункт.

штрих.

Тип лінії

штрих.

штрих

пункт.

суціл.

штрих

пункт.

штрих.

суціл.

штрих.

суціл.

Тип лінії

штрих-пункт.

суціл.

пункт.

штрих.

пункт.

штрих

пункт.

пункт.

пункт.

Тип лінії графіка різниць

суцільна

пункт.

штрих.

пункт.

штрих

пункт.

штрих.

суціл.

штрих

пункт.

  1.  Зміст звіту

Звіт з лабораторної роботи має містити наступні матеріали:

  1.  Титульний аркуш.
    1.  Основні теоретичні відомості, необхідні для виконання лабораторної роботи.
    2.  Умови завдання для варіанту бригади.
    3.  Програми в MatLab за заданими умовами завдання.
    4.  Результати виконання кожної програми з відповідними графіками.
    5.  Висновки по виконанню лабораторної роботи.

3.4. Контрольні запитання

  1.  Назвіть основні параметри та пункти меню графічного вікна.
  2.  Як відкрити режим редагування графічного вікна? З яких вкладок він складається?
  3.  Як змінювати параметри координатної сітки? Які саме параметри можна змінювати?
  4.  Як змінювати параметри ліній графіка? Які саме параметри можна змінювати?
  5.  Як змінювати параметри графічного вікна? Які саме параметри можна змінювати?
  6.  Як додавати на графік стрілки з текстом та інші об’єкти?
  7.  Як будуються графіки за знятими експериментальними даними?
  8.  Як зробити апроксимацію графіка?
  9.  Які типи апроксимації існують?
  10.  Як отримати рівняння апроксимованої кривої?
  11.  Назвіть основні команди функції TeX.


Лабораторна робота № 4

програмування у м-файлах

Тривалість лабораторної роботи – 4 год.

Мета роботи – ознайомитися зі структурою та правилами програмування у М-файлах, навчитися створювати програми на основі операторів for, while, if.

  1.  Основні теоретичні відомості

Структура та правила програмування М-файлів

М-файли (M-file) призначені для написання, відладки та запуску програм, які незручно вводити у робочому вікні MatLab та які потрібно зберігати для подальшого використання. У такому М-файлі використовуються абсолютно всі команди MatLab, причому правила набору команд не змінюється. Для створення М-файлу необхідно у робочому вікні MatLab вибрати меню FileNewBlank M-File. На екрані зявиться вікно, що зображено на рис. 4.1.

Рис. 4.1. Вікно М-файла

 Для вводу команд або тексту необхідно поставити курсор у рядок 1. Після набору необхідної команди натискається клавіша «Enter» і курсор переходить на початок рядка 2. Далі виконується набір команд та функцій аналогічно до командного рядка MatLab. Після завершення набора програми необхідно зберегти файл та запустити його на виконання, натиснувши зелений трикутник у панелі інструментів «Save And Run» або зайти у меню DebugSave File And Run, або просто натиснути F5 на клавіатурі. Якщо у М-файлі будуть помилки, MatLab повідомить про це у командному вікні з посиланням на конкретний рядок М-файла.

 Необхідно також враховувати, що при збереженні М-файла його ім’я не повинно складатися лише з цифр та копіювати стандартну функцію MatLab, наприклад plot.

Усі М-файли мають розширення «.m».

Розглянемо приклад написання простої програми побудови графіка у М-файлі. Лістінг програми у вікні М-файла з коментарями показаний на рис. 4.2.

Рис. 4.2. Лістінг програми побудови графіка у вікні М-файлу

Після запуску М-файлу при відсутності помилок відкриється вікно з побудованим графіком, яке показано на рис. 4.3.

Рис. 4.3. Графік побудованої функції

Оператор циклу for. Правила вводу даних з командного вікна.

Цикл for використовується для виконання заданого числа дій, що повторюються. У загальному випадку цикл має наступну форму запису

for  <умова циклу>

 <команди MatLab>

end

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

 a=[1 2 6 7 9 45 3];

 b=[2 4 5 7 8 12 4];

 for  n=1:length(a)  %початок та умови циклу

 c(n)=a(n)+b(n); %сумування векторів

 end;     %кінець циклу

 c     %вивід результуючого вектора на

%екран

 На екрані з’явиться вектор с

 c =

3 6 11 14 17 57 7

У цьому прикладі використовується команда length(a), що визначає розмір заданого вектора. Це використовується тоді, коли цей розмір невідомий, або задається користувачем. У протилежному випадку можна було б записати for n=1:i, де i – розмір заданого вектора.

 При роботі з векторами та матрицями часто виникає задача вводу елементів з клавіатури. Для цього застосовується команда input('текст'). Наприклад потрібно задати розмір квадратної матриці, ввести її елементи з клавіатури та вивести її на екран. Текст програми буде мати наступний вигляд

A=0;

n=input('Введіть розмір квадратної матриці ');

for   i=1:n

for   j=1:n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i,j) = input(' ');

end;

end;

disp(A)

Для усунення можливості існування матриці А, що була створена раніше і записана у робочу область, цій матриці присвоюється нульове значення на початку програми. Вивід тексту на екран з проханням ввести відповідний елемент матриці реалізується за допомогою команди disp. У випадку виводу однієї змінної на екран вона має форму запису disp(A), у випадку виводу тексту disp('текст'), а у випадку виводу декількох змінних, наприклад елементів векторів, disp(['текст', num2str(n)]), де num2str(n) – функція перетворення номера елемента у текстовий формат для виводу на екран. Для виводу на екран елементів матриць, ця команда приймає більш складний вигляд, як показано у програмі.

Розглянемо приклад. Дано дві квадратні матриці n-го порядку. Ввести з клавіатури порядок матриць, заповнити матриці вручну, знайти суму цих матриць та записати результат у нову матрицю.

Текст М-файлу матиме наступний вигляд

A=0;

B=0;

C=0;  %створення початкових нульових матриць

n=input('Введіть розмір квадратної матриці ');

for i=1:n

for j=1:n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i,j) = input(' ');

end; %цикл вводу першої матриці

end;

disp('A=')

disp(A) %виведення першої матриці на екран

for i=1:n

for j=1:n

disp(['Введіть елемент матриці B(' num2str(i) ', ' num2str(j) ')']);

B(i,j) = input(' ');

end;  %цикл вводу другої матриці

end;

disp('B=')

disp(B)  %виведення другої матриці на екран

for i=1:n

for j=1:n

C(i,j)=A(i,j)+B(i,j);

end;  %цикл сумування матриць

end;

disp('Результат суми відповідних елементів матриць')

disp('C=')

disp(C)  %вивід на екран результату суми

Умовний оператор if (ifelse).

Оператор if (ifelse) використовується для побудови циклів з виконанням чи невиконанням деяких умов. У загальному випадку він має наступну форму запису

if <умова>

<команди MatLab>

else

<команди MatLab>

end

Приклад. Задано два вектори. Написати програму порівняння елементів цих векторів. Якщо елементи однакові, то у результуючий вектор вивести на його місце цей елемент, якщо елементи різні, то вивести на його місце нуль.

Програма у М-файлі матиме наступний вигляд

a=[1 4 5 6 7];

b=[2 3 5 5 7]; %завдання векторів

c=0;

for i=1:5 %цикл перебору елементів векторів

if a(i)==b(i) %умова рівності елементів

c(i)=a(i);

else c(i)=0;  %протилежна умова

end

end

disp('c=')

disp(c)  %вивід на екран результату

На екрані з’явиться наступний результат

c=

0 0 5 0 7

У даному прикладі для реалізації протилежної умови до рівності елементів векторів використовується оператор else.

Розглянемо ще один приклад.

Задана квадратна матриця. Ввести розмір та елементи матриці з клавіатури. Знайти кількість непарних елементів, що розташовані під головною діагоналлю, включаючи останню. Вивести на екран вектор із цих елементів.

Лістінг програми буде мати вигляд

A=0;

C=0;

k=1;

disp('Введіть розмір квадратної матриці А ')

n=input('');

for i=1:n

for j=1:n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i,j) = input(' ');

end;

end;

disp('A=')

disp(A)

for i=1:n

for j=1:n

if i>=j && mod(A(i,j),2)~=0

C(k)=A(i,j);

k=k+1;

end;

end;

end;

disp('C=')

disp(C)

disp('Кількість непарних елементів')

disp(length(C))

На екрані відобразиться наступне

Введіть розмір квадратної матриці А

3

Введіть елемент матриці А(1, 1)

1

Введіть елемент матриці А(1, 2)

2

Введіть елемент матриці А(1, 3)

3

Введіть елемент матриці А(2, 1)

5

Введіть елемент матриці А(2, 2)

6

Введіть елемент матриці А(2, 3)

7

Введіть елемент матриці А(3, 1)

1

Введіть елемент матриці А(3, 2)

5

Введіть елемент матриці А(3, 3)

8

A=

1 2 3

5 6 7

1 5 8

C=

1 5 1 5

Кількість непарних елементів

4

Умова знаходження елементів під головною діагоналлю, включаючи останню i>=j, та умова їх непарності mod(A(i,j),2)~=0 записується у команді if i>=j && mod(A(i,j),2)~=0. У цій програмі також використовується один з логічних операторів «логічне І», яке позначається символом &&. Інші логічні оператори та операції співвідношення наведені у таблиці 4.1.

Таблиця 4.1.

Логічні оператори

&&

логічне І

||

логічне АБО

~

логічне НІ

Операції співвідношення

==

рівність

<

менше

>

більше

>=

більше або рівне

<=

менше або рівне

~=

не рівне

Розглянемо приклад використання логічних операторів та операторів співвідношення. Задано квадратну матрицю n-го порядку. Ввести порядок матриці та її елементи з клавіатури. Знайти кількість парних та додатних елементів матриці, що розташовані у нижньому трикутнику, який утворюється перетином побічної та головної діагоналі, як показано на рис. 4.4, та вивести їх на екран.

Рис. 4.4. Задана область матриці до прикладу

Спочатку потрібно записати умову області, що зображена на рис. 4.4. Припустимо, що матриця має i рядків та j стовпців. Умова знаходження елементів на головній діагоналі буде i=j, а на побічній i+j=n+1. Над головною діагоналлю i<j, під головною діагоналлю i>j, над побічною діагоналлю i+j<n+1, під побічною i+j>n+1. Таким чином, якщо об’єднати умови знаходження елементів під головною та побічною діагоналлю можна отримати умову розташування елементів у заданій області. Ця умова матиме вигляд i>=j && i+j>=n+1. Знак = використовується для того, щоб включити до заданого контуру частини самих діагоналей. Далі до цієї умови необхідно додати умову парності елемента та його додатного значення. Це реалізується за допомогою команд mod та sign. Можливі варіанти застосування цих команд подані у таблиці 4.2.

Таблиця 4.2.

Команда y=mod(x,2)

y=1

якщо x непарне

Y=0

якщо x парне

Команда y=sign(x)

y=1

якщо x>0

Y=0

якщо x=0

y=-1

якщо x<0

У результаті, повною умовою до даного прикладу буде наступний запис i>=j && i+j>=n+1 && mod(A(i,j),2)==0 && sign(A(i,j))==1

Програма у М-файлі буде мати наступний вигляд

A=0;

C=0;

k=1;

n=input('Введіть розмір квадратної матриці ');

for i=1:n

for j=1:n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i,j) = input(' ');

end;

end;

disp('A=')

disp(A)

for i=1:n

for j=1:n

if (i>=j) && (i+j>=n+1) && mod(A(i,j),2)==0) && sign(A(i,j))==1)

C(k)=A(i,j);

k=k+1;

end;

end;

end;

disp('C=')

disp(C)

disp('Кількість парних додатних елементів')

disp(length(C))

Для довільно вибраної матриці 3-го порядку результат буде наступним

Введіть розмір квадратної матриці 3

Введіть елемент матриці А(1, 1)

1

Введіть елемент матриці А(1, 2)

2

Введіть елемент матриці А(1, 3)

3

Введіть елемент матриці А(2, 1)

4

Введіть елемент матриці А(2, 2)

6

Введіть елемент матриці А(2, 3)

8

Введіть елемент матриці А(3, 1)

8

Введіть елемент матриці А(3, 2)

-5

Введіть елемент матриці А(3, 3)

3

A=

1 2 3

4 6 8

8 -5 3

C=

6 8

Кількість парних додатних елементів

2

Умовний оператор while.

Оператор while застосовується так само, як і оператор if. Процедура запису наступна

while <умова>

  <команди MatLab>

end

Розглянемо приклад застосування оператора. Нехай заданий масив з 10-ти елементів. Виводити на екран елементи масиву, доти, доки вони менше заданого числа, що вводиться з клавіатури. Також вивести порядковий номер елемента. Якщо у масиві не присутнє задане число, то вивести на екран відповідне повідомлення.

Текст програми наступний

p=input('Введіть число p=');

c=0;

n=1;

k=1;

d=0;

a=[1 2 5 4 9 1 2 8 5 10];

for n=1:length(a)

if  a(n)==p;  %цикл перевірки наявності

   %числа p

d(k)=a(n); %якщо p існує, воно

  %у відповідний масив, якщо

  %не існує масив буде нульовий

k=k+1;

end

end

n=1;

if  d==0    %перевірка масиву існування p

disp('такого числа немає') %якщо він

%нульовий – виводиться

%відповідне повідомлення

else    %у іншому випадку виконується

   %основна програма

while  a(n)<p

c(n)=a(n);

n=n+1;

end

disp('c=')

disp(c)

disp('порядковий номер числа у масиві')

disp(length(c)+1)

end

Після запуску програми у випадку, якщо число присутнє у масиві результат буде наступним

Введіть число p=9

p =

9

c=

1 2 5 4

порядковий номер числа у масиві

5

Якщо не присутнє

Введіть число p=190

такого числа немає

Розглянемо наступний приклад. Дано дві дійсні квадратні матриці розміром n 7. Отримати нову матрицю того ж розміру шляхом перемноження елементів кожного рядка першої матриці на найбільший елемент відповідного рядка другої матриці.

Текст програми у М-файлі буде мати вигляд

A=0;

B=0;

C=0;

Cmax=0;

n=input('Введіть розмір квадратної матриці ');

for i=1:n

for j=1:n

disp(['Введіть елемент матриці А(' num2str(i) ', ' num2str(j) ')']);

A(i,j) = input(' ');

end;

end;

disp('A=')

disp(A)

for i=1:n

for j=1:n

disp(['Введіть елемент матриці B(' num2str(i) ', ' num2str(j) ')']);

B(i,j) = input(' ');

end;

end;

disp('B=')

disp(B)

for i=1:n

Cmax(i,1)=B(i,1); %присвоєння максимального

%елемента першому елементу у кожному рядку

for j=1:n

if  B(i,j)>Cmax(i,1)

Cmax(i,1)=B(i,j); %цикл пошуку

%максимального елемента у кожному

%рядку

else

continue

end

end

end

disp('Вектор з максимальних елементів кожного рядка ')

disp('Cmax=')

disp(Cmax);

for i=1:n

for j=1:n

C(i,j)=A(i,j)*Cmax(i,1); %цикл перемноження

%кожного елемента першої матриці на

%максимальний елемент відповідного рядка

%другої матриці

end

end

disp('Результуюча матриця')

disp('C=')

disp(C)

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

Введіть розмір квадратної матриці 3

Введіть елемент матриці А(1, 1)

1

Введіть елемент матриці А(1, 2)

4

Введіть елемент матриці А(1, 3)

7

Введіть елемент матриці А(2, 1)

9

Введіть елемент матриці А(2, 2)

3

Введіть елемент матриці А(2, 3)

5

Введіть елемент матриці А(3, 1)

6

Введіть елемент матриці А(3, 2)

2

Введіть елемент матриці А(3, 3)

3

A=

1 4 7

9 3 5

6 2 3

Введіть елемент матриці B(1, 1)

1

Введіть елемент матриці B(1, 2)

6

Введіть елемент матриці B(1, 3)

9

Введіть елемент матриці B(2, 1)

4

Введіть елемент матриці B(2, 2)

5

Введіть елемент матриці B(2, 3)

7

Введіть елемент матриці B(3, 1)

3

Введіть елемент матриці B(3, 2)

2

Введіть елемент матриці B(3, 3)

5

B=

1 6 9

4 5 7

3 2 5

Вектор з максимальних елементів кожного рядка

Cmax=

9

7

5

Результуюча матриця

C=

9 36 63

63 21 35

30 10 15

У даній програмі використаний оператор continue для продовження роботи циклу при невиконанні умови if B(i,j)>Cmax(i,1) так як потрібно перебрати усі елементи масиву. Якщо потрібно зупинити цикл при невиконанні деякої умови, то можна застосувати оператор break.

  1.   Програма роботи

  1.  Ознайомитися з правилами програмування в М-файлах, операторами циклів for, if (ifelse) та while.
  2.  Набрати у М-файлах, запустити та проаналізувати приведені приклади використання операторів циклів.
  3.  Написати М-файл для вирішення завдання відповідно до номеру своєї бригади згідно таблиці 4.3.

Таблиця 4.3.

№ бригади

Умова завдання

1

Задано вектор n-го порядку та число p. Ввести порядок вектора, його елементи та число p з клавіатури. Виводити на екран всі додатні та парні елементи, доки ці елементи більші за задане число. У випадку відсутності у векторі числа p вивести відповідне повідомлення та зупинити програму.

2

Задано вектор n-го порядку та число p. Ввести порядок вектора, його елементи та число p з клавіатури. Виводити на екран всі додатні та непарні елементи, доки ці елементи менші за задане число. У випадку відсутності у векторі числа p вивести відповідне повідомлення та зупинити програму.

3

Задано вектор n-го порядку та число p. Ввести порядок вектора, його елементи та число p з клавіатури. Виводити на екран всі додатні та непарні елементи, доки ці елементи більші за задане число. У випадку відсутності у векторі числа p вивести відповідне повідомлення та зупинити програму.

4

Задано вектор n-го порядку та число p. Ввести порядок вектора, його елементи та число p з клавіатури. Виводити на екран всі додатні та парні елементи, доки ці елементи менші за задане число. У випадку відсутності у векторі числа p вивести відповідне повідомлення та зупинити програму.

5

Задано два вектора n-го порядку. Ввести порядок векторів та їх елементи з клавіатури. Знайти добуток відповідних елементів векторів. Записати результат у масив та вивести його на екран. Знайти кількість парних, додатних елементів у результуючому векторі.

6

Задано два вектора n-го порядку. Ввести порядок векторів та їх елементи з клавіатури. Знайти добуток відповідних елементів векторів. Записати результат у масив та вивести його на екран. Знайти кількість непарних та додатних елементів у результуючому векторі.

7

Задано два вектора n-го порядку. Ввести порядок векторів та їх елементи з клавіатури. Знайти суму відповідних елементів векторів. Записати результат у масив та вивести його на екран. Знайти кількість парних та додатних елементів у результуючому векторі.

8

Задано два вектора n-го порядку. Ввести порядок векторів та їх елементи з клавіатури. Знайти суму відповідних елементів векторів. Записати результат у масив та вивести його на екран. Знайти кількість непарних та додатних елементів у результуючому векторі.

  1.  Задана квадратна матриця n-го порядку. Ввести порядок та елементи матриці з клавіатури та вивести її на екран. Відповідно до номеру своєї бригади виконати завдання згідно таблиці 4.4.

Таблиця 4.4.

№ бригади

Умова завдання

1

Знайти кількість парних та додатних елементів, розташованих під головною діагоналлю, включаючи останню. Вивести результат на екран.

2

Знайти кількість непарних та додатних елементів, розташованих над головною діагоналлю, включаючи останню. Вивести результат на екран.

3

Знайти кількість парних та додатних елементів, розташованих під побічною діагоналлю, включаючи останню. Вивести результат на екран.

4

Знайти кількість непарних та додатних елементів, розташованих над побічною діагоналлю, включаючи останню. Вивести результат на екран.

5

Знайти кількість парних та додатних елементів, розташованих в області згідно рис. 4.5, а. Вивести результат на екран.

6

Знайти кількість непарних та від’ємних елементів, розташованих в області згідно рис. 4.5, б. Вивести результат на екран.

7

Знайти кількість парних та від’ємних елементів, розташованих в області згідно рис. 4.5, в. Вивести результат на екран.

8

Знайти кількість непарних та додатних елементів, розташованих в області згідно рис. 4.5, г. Вивести результат на екран.

Рис. 4.5. Області матриць до завдання 4

  1.  Задано дві квадратні матриці n-го порядку. Ввести порядок та елементи матриць з клавіатури та вивести їх на екран. Відповідно до номеру своєї бригади виконати завдання згідно таблиці 4.5.

Таблиця 4.5.

№ бригади

Умова завдання

1

Отримати нову матрицю того ж розміру шляхом додавання до елементів кожного стовпця першої матриці добутку елементів відповідного рядка другої матриці. Вивести результат на екран.

2

Отримати нову матрицю того ж розміру шляхом додавання до елементів кожного стовпця першої матриці суму елементів відповідного рядка другої матриці. Вивести результат на екран.

3

Отримати нову матрицю того ж розміру шляхом перемноження елементів кожного рядка першої матриці на суму елементів відповідного рядка другої матриці. Вивести результат на екран.

4

Отримати нову матрицю того ж розміру шляхом перемноження елементів кожного рядка першої матриці на добуток елементів відповідного рядка другої матриці. Вивести результат на екран.

5

Отримати нову матрицю того ж розміру шляхом додавання до елементів кожного стовпця першої матриці максимального елемента відповідного рядка другої матриці. Вивести результат на екран.

6

Отримати нову матрицю того ж розміру шляхом перемноження елементів кожного рядка першої матриці на максимальний елемент відповідного рядка другої матриці. Вивести результат на екран.

7

Отримати нову матрицю того ж розміру шляхом додавання до елементів кожного стовпця першої матриці мінімального елемента відповідного рядка другої матриці. Вивести результат на екран.

8

Отримати нову матрицю того ж розміру шляхом перемноження елементів кожного рядка першої матриці на мінімальний елемент відповідного рядка другої матриці. Вивести результат на екран.

  1.  Зміст звіту

Звіт з лабораторної роботи має містити наступні матеріали:

  1.  Титульний аркуш.
    1.  Основні теоретичні відомості, необхідні для виконання лабораторної роботи.
    2.  Умови завдання для варіанту бригади.
    3.  Програми у М-файлах за заданими умовами завдання.
    4.  Результати виконання кожної програми.
    5.  Висновки по виконанню лабораторної роботи.

4.4. Контрольні запитання

  1.  Як створити новий М-файл? Яка його структура?
  2.  Оператор циклу for. Приклади застосування.
  3.  Оператор циклу if. Приклади застосування.
  4.  Оператор циклу (ifelse). Приклади застосування.
  5.  Оператор циклу while. Приклади застосування.
  6.  Оператор продовження циклу continue. Приклади застосування.
  7.  Оператор зупинки циклу break. Приклади застосування.
  8.  Команди виводу тексту на екран. Приклад застосування.
  9.  Команди вводу даних з клавіатури. Приклади застосування.


Лабораторна робота №
5

Чисельне Вирішення диференційних рівнянь у м-файлах

Тривалість лабораторної роботи – 2 год.

Мета роботи – ознайомлення з основними вбудованими функціями (солверами) для вирішення диференційних рівнянь, структурою спеціальних файлів-функцій та правилами візуалізації розв’язків диференційних рівнянь.

Основні теоретичні відомості

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

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

та початковими умовами при

,  

Задача такого плану вирішується у MatLab за допомогою наступної послідовності етапів:

  1.  Зведення диференційного рівняння до системи диференційних рівнянь першого порядку.
  2.  Створення спеціального файла-функції для системи рівнянь.
  3.  Вибір потрібного солвера.
  4.  Створення спеціального файла-розв’язку для візуалізації результатів.

Розглянемо приклад створення файла-функції для диференційного рівняння другого порядку  з заданими початковими умовами , .

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

Далі необхідно створити файл-функцію. Він повинен мати два вхідних аргументи: змінну , за якою буде відбуватися диференціювання, та вектор, розмір якого дорівнює кількості невідомих функцій системи (у даному прикладі дві:  та ). Число та порядок аргументу фіксовані, навіть якщо змінна  явно не входить до системи. Вихідним аргументом файла-функції є вектор правої частини системи.

Таким чином текст файла-функції буде мати наступний вигляд

function F=dif(t,y);  %об’ява функції для

     %розв’язку системи

F=[y(2); -2*y(2)-10*y(1)+sin(t)]; %запис правої

     %частини системи

По завершенню формування файла-функції його треба зберегти під ім’ям, яким названа функція F, тобто «dif.m».

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

Найрозповсюджені солвери та області їх застосування наведені у таблиці 5.1.

Таблиця 5.1.

Назва солвера

Область застосування

ode45

Дуже розповсюджений солвер. Базується на формулах Рунге-Кутта четвертого та п’ятого порядку точності. Часто дає задовільні результати.

ode23

Також базується на формулах Рунге-Кутта, але менш низького порядку точності. Застосовується у нежорстких задачах, коли потрібно отримати розв’язок з невисоким ступенем точності.

ode113

Базується на методі Адамса-Бешфорта-Мілтона та використовується для отримання розв’язку високої точності у нежорстких задачах. Цей солвер особливо ефективний для нежорстких систем диференційних рівнянь, праві частини яких обраховуються за складними формулами.

ode15s

Оснований на методі Гіра, який допускає зміну порядку, та застосовується для вирішення жорстких систем.

ode23s

Базується на однокроковому методі Розенброка другого порядку та застосовується для вирішення жорстких систем з невеликою точністю.

Усі солвери намагаються знайти розв’язок з відносною точністю 10-3. Якщо потрібно збільшити точність обрахування, необхідно застосувати додатковий параметр options, який формується функцією odeset. Наприклад, якщо потрібна точність 10-5, то у файл-розв’язок, що буде розглянутий пізніше, потрібно на початку включити додатковий рядок

options=odeset('RelTol', 1.0e-05)

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

Створення файла-розв’язку для чисельного вирішення диференційних рівнянь.

Розглянемо створення файла-розв’язку для вирішення диференційного рівняння, для якого був створений файл-функція з використанням солвера ode45. Вхідними аргументами солвера будуть: ім’я файла-функції, що записується у апострофах 'dif' або без них, але з символом @ на початку (@dif); вектор з початковим і кінцевим значенням часу диференціювання; вектор початкових умов. Запис у М-файлі буде наступним

[T,Y]=ode45('dif', [Time], [Y0])

де масиви [Time] та [Y0] – масиви часу та початкових умов відповідно. Ці масиви можуть записуватися безпосередньо у солвері, наприклад

[T,Y]=ode45('dif', [1 15], [1 0])

або задаватися раніше. Тоді у солвері використовуються тільки ім’я цих масивів

Time=[0 15];

Y0=[1 0];

[T,Y]=ode45('dif', Time, Y0);

При необхідності зміни точності за допомогою параметра options солвер записується наступним чином

options=odeset('RelTol', 1.0e-05)

Time=[0 15];

Y0=[1 0];

[T,Y]=ode45('dif', Time, Y0, options);

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

Текст програми, що записується у файл-розв’язок має вигляд

options=odeset('RelTol', 1.0e-04);  %точність 0.0001

Time=[0 15];  %масив часу

Y0=[1 0];   %масив початкових умов

[T,Y]=ode45('dif', Time, Y0, options);   %солвер

plot(T,Y(:,1),'r','LineWidth',2);  %вивід на екран

%змінної y1

hold   %затримка графіка

grid   %вивід стіки

plot(T,Y(:,2),'b--','LineWidth',2); %вивід на екран

%змінної y2

xlabel('Час t, с');  %мітки осей та підпис графіка

ylabel('y1, y2');

title('Рішення диференційного рівняня другого порядку');

Після запуску файла-розв’язку відкриється графічне вікно, зображене на рис. 5.1.

Рис. 5.1. Результати розв’язку диференційного рівняння

Треба мати на увазі, що обидва файл-функція і файл-розв’язок повинні знаходитися в одній директорії. Файл-розв’язок не буде працювати без файла-функції. Після створення та збереження файл-функцію не потрібно запускати на виконання на відміну від файла-розв’язку.

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

на проміжку часу [a, 100] для заданих початкових умов , , де =0.001.

Файл-функція для заданої системи рівнянь буде мати вигляд

function F=dif(t,y)  %об’ява функції для

%розв’язку системи

F=[y(2); -1/t^2];  %запис правої

    %частини системи

Файл-розв’язок для різних варіантів точності буде наступним

options=odeset('RelTol', 1.0e-03); %точність 0.001

Time=[0.001 100];    %масив часу

Y0=[log(0.001) 1/0.001];   %масив початкових умов

[T,Y]=ode45('dif', Time, Y0, options); %солвер

plot(T,Y(:,1),'k:','LineWidth',2); %вивід на екран

%змінної y1

hold       %затримка графіка

grid       %вивід стіки

xlabel('Час t, с');   %мітки осей та підпис графіка

ylabel('y1');

title('Рішення диференційного рівняня другого порядку');

options=odeset('RelTol', 1.0e-04); %точність 0.0001

[T,Y]=ode45('dif', Time, Y0, options); %солвер

plot(T,Y(:,1),'r--','LineWidth',2);  %вивід на екран

%змінної y1

options=odeset('RelTol', 1.0e-05); %точність 0.00001

[T,Y]=ode45('dif', Time, Y0, options); %солвер

plot(T,Y(:,1),'g-','LineWidth',2);  %вивід на екран

%змінної y1

options=odeset('RelTol', 1.0e-06); %точність 0.000001

[T,Y]=ode45('dif', Time, Y0, options); %солвер

plot(T,Y(:,1),'c-.','LineWidth',2); %вивід на екран

%змінної y1

options=odeset('RelTol', 1.0e-08); %точність 0.00000001

[T,Y]=ode45('dif', Time, Y0, options); %солвер

plot(T,Y(:,1),'b--','LineWidth',2); %вивід на екран

%змінної y1

legend('10^{-3}','10^{-4}', '10^{-5}', '10^{-6}', '10^{-8}',4)     %вивід легенди

Після запуску файла-функції на екрані з’явиться графічне вікно

Рис. 5.2. Графіки розв’язку системи диференційних рівнянь для різних варіантів точності

Як видно з рисунка, при точності більшої за 10-5 графіки співпадають, а при точності менше 10-5 результати мають дуже велику розбіжність. Таким чином для даної системи диференційних рівнянь достатньою точністю для отримання точного рішення є 10-6.

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

на проміжку [0 10] для початкових умов , , .

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

.

Створюємо файл функцію для отриманої системи з ім’ям «dif2.m»

function F=dif2(t,y);  %об’ява функції для

%розв’язку системи

F=[y(2); y(3); -5*y(3)+2*y(2)+y(1)-14+cos(2*t-5)];        %запис правої частини системи

Після цього зберігається файл-функція та створюється наступний файл-розв’язок

options=odeset('RelTol', 1.0e-03); %точність 0.001

Time=[0 10];     %масив часу

Y0=[1 2 0];     %масив початкових умов

[T,Y]=ode45('dif2', Time, Y0, options); %солвер

plot(T,Y(:,1),'k:','LineWidth',2); %вивід на екран

%змінної y1

Hold       %затримка графіка

Grid       %вивід стіки

xlabel('Час t, с');   %мітки осей та підпис графіка

ylabel('y1');

title('Рішення диференційного рівняння третього порядку');

options=odeset('RelTol', 1.0e-04);  %точність 0.0001

[T,Y]=ode45('dif2', Time, Y0, options); %солвер

plot(T,Y(:,1),'r--','LineWidth',2); %вивід на екран

%змінної y1

options=odeset('RelTol', 1.0e-05);  %точність 0.00001

[T,Y]=ode45('dif2', Time, Y0, options); %солвер

plot(T,Y(:,1),'b-','LineWidth',2);  %вивід на екран

%змінної y1

legend('10^{-3}','10^{-4}', '10^{-5}',3) %вивід легенди

Результат розв’язків диференційного рівняння для різних значень точності показаний на рис. 5.3. Як видно з рисунка, для заданого диференційного рівняння третього порядку достатньою точністю є 10-3. При збільшенні точності графіки співпадають.

Якщо потрібно вивести інші змінні диференційного рівняння, наприклад  та , то файл-розв’язок для одного варіанту точності, що дорівнює 10-3 буде мати наступний вигляд

options=odeset('RelTol', 1.0e-03); %точність 0.001

Time=[0 10];     %масив часу

Y0=[1 2 0];   %масив початкових умов

[T,Y]=ode45('dif2', Time, Y0, options); %солвер

plot(T,Y(:,1),'k:','LineWidth',2); %вивід на екран y1

hold       %затримка графіка

grid       %вивід стіки

xlabel('Час t, с');   %мітки осей та підпис графіка

ylabel('y1');

title('Рішення диференційного рівняння третього порядку');

plot(T,Y(:,2),'b--','LineWidth',2); %вивід на екран y2

plot(T,Y(:,3),'k-.','LineWidth',2); %вивід на екран y3

legend('y(1)','y(2)', 'y(3)',3)   %вивід легенди

Рис. 5.3. Графіки розв’язків диференційного рівняння третього порядку для різних значень точності

Рис. 5.4. Графіки усіх змінних розв’язку диференційного рівняння третього порядку

  1.   Програма роботи

  1.  Ознайомитися з основними солверами та правилами створення файлів-функцій та файлів-розв’язків для вирішення диференційних рівнянь.
  2.  Набрати у М-файлах, запустити та проаналізувати приведені приклади вирішення диференційних рівнянь.
  3.  Задане диференційне рівняння 4-го порядку. Відповідно до номера своєї бригади розкласти рівняння з таблиці 5.2 у систему з чотирьох рівнянь, зробити відповідні заміни та скласти файли-функції та файли-розв’язки для його вирішення. Вивести графіки розв’язків рівняння в одне графічне вікно. Графіки оформити його згідно таблиці 5.3. Часовий проміжок та початкові умови задані у таблиці 5.2.

Таблиця 5.2.

№ бригади

Вигляд диференційного рівняння

Початкові умови

Часовий проміжок

1

[1 2 0 1]

[1 10]

2

[0 1 1 0]

[1 15]

3

[2 1 0 1]

[1 20]

4

[1 0 0 1]

[1 11]

5

[0 1 1 0]

[1 12]

6

[3 2 1 5]

[1 16]

7

[2 2 2 0]

[1 22]

8

[1 2 0 0]

[1 14]

Таблиця 5.3.

№ бригади

Колір лінії

Тип маркера

Тип лінії

Положення легенди (чверті)

Тип та розмір тексту

1

жовтий

крапка

пунктир

1

жирний курсив, 14

2

голубий

кружок

штрихова

2

жирний курсив, 12

3

рожевий

хрестик

штрих-пунктир

3

курсив, 15

4

червоний

плюс

пунктир

4

жирний, 16

5

зелений

зірка

штрихова

1

жирний курсив, 11

6

синій

квадрат

штрих-пунктир

2

курсив, 15

7

жовтий

ромб

пунктир

3

жирний, 14

8

червоний

кружок

штрихова

4

жирний курсив, 16

  1.  Для заданого у таблиці 5.2. диференційного рівняння четвертого порядку змінити порядок точності відповідно таблиці 5.4. Вивести графіки кожного розв’язку з різними ступенями точності у своє графічне вікно. Оформити графіки згідно таблиці 5.3.

 Таблиця 5.4.

№ бригади

Порядки точності

1

10-3, 10-4, 10-5, 10-6, 10-7

2

10-2, 10-3, 10-5, 10-6, 10-8

3

10-1, 10-3, 10-5, 10-7, 10-9

4

10-2, 10-4, 10-6, 10-8, 10-10

5

10-1, 10-2, 10-3, 10-4, 10-5

6

10-1, 10-2, 10-3, 10-7, 10-9

7

10-2, 10-5, 10-6, 10-7, 10-10

8

10-2, 10-4, 10-5, 10-6, 10-7

5.3. Зміст звіту

Звіт з лабораторної роботи має містити наступні матеріали:

  1.  Титульний аркуш.
  2.  Основні теоретичні відомості, необхідні для виконання лабораторної роботи.
  3.  Умови завдання для варіанту бригади.
  4.  Файли-функції та файли-розв’язки відповідно до завдання.
  5.  Результати виконання кожної програми з відповідними графіками.
  6.  Висновки по виконанню лабораторної роботи.

5.4. Контрольні запитання

  1.  Які існують основні солвери та коли воно застосовуються?
  2.  Як створити файл-функцію? Послідовність запису файлу.
  3.  Як створити файл-розв’язок? Послідовність запису файлу.
  4.  Що таке точність обчислення? Як її змінити?
  5.  Вивід на екран графічного розв’язку різних змінних рівняння.


Лабораторна робота №
6

Символічні методи обчислення

Тривалість лабораторної роботи – 4 год.

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

  1.  Основні теоретичні відомості

Символічний тулбокс (Symbolic Toolbox).

Символічний тулбокс використовується для роботи з символічними математичними виразами. Він вміщує близько декількох сотень символічних функцій, що діляться на кілька видів:

- спрощення та перетворення математичних виразів;

- диференціювання, інтегрування та знаходження границь функцій;

- операції з векторами та матрицями;

- вирішення алгебричних та диференційних рівнянь та систем рівнянь.

Символічний тулбокс також вміщує інтерфейс MuPAD, що оптимізований для зручного вирішення та перетворення символьних математичних виразів.

Символічні обєкти – це спеціальний тип даних, який дозволяє виконувати математичні операції у MATLAB аналітично, без чисельних обчислень. Символічні об'єкти діляться на символічні змінні, символічні вирази, символічні масиви та символічні числа.

Розглянемо кожен з видів символьних об’єктів.

Символічні змінні

Символічні змінні являються об’єктами класу sym object. Для оголошення символьних змінних використовується команди syms, наприклад

syms x y

створить дві символічні змінні x та y.

Тепер можна виконувати математичні дії з цими змінними, наприклад

syms x y

x+x+y

На екрані з’явиться наступний результат

ans =

2*x + y

Використовуючи вже оголошені символічні змінні можна створювати символічні масиви та математичні вирази.

Символічні числа

Тулбокс також дозволяє перетворювати числа у символічні обєкти. Щоб створити символічне число використовується команда sym, наприклад

a=sym('2');

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

a=sym(0.75);

На екрані відобразиться створене число у формати звичайного дробу

a =

3/4

Також можна виконувати будь-які дії з символічними числами, наприклад

sym(2/5)+sym(1/3)

дає у результаті

ans =

 

11/15

Символічні вирази

Нехай потрібно задати змінну, яка є математичним виразом і не потребує спрощення, наприклад

.

Для цього достатньо застосувати команду sym

rho=sym('(1+sqrt(5))/2')

У результаті на екрані з’явиться

rho =

(1+sqrt(5))/2

Тепер створену змінну можна використовувати для створення більших математичних виразів, наприклад запис

f= rho^2-rho-1

дає у результаті на екрані

f =

(5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2

Символічні масиви

Для створення будь – якого символічного масиву потрібно спочатку створити задати його елементи, як символічні змінні

syms a b c

Далі створюється матриця з існуючих символічних змінних так само, як матриця з звичайних чисел

A=[a b c;c a b;b c a];

На екрані з’явиться

A =

[ a, b, c]

[ c, a, b]

[ b, c, a]

Для створення масиву з символічних чисел дуже зручно застосовувати команду sym.

Наприклад, матриця створена з десяткових чисел

A=[1 0.5 0.4; 0.5 0.4 0.25; 0.4 0.25 0.2]

A =

1.0000 0.5000 0.4000

0.5000 0.4000 0.2500

0.4000 0.2500 0.2000

перетвориться за допомогою команди sym(A) у матрицю вигляду

ans =

[   1, 1/2, 2/5]

[ 1/2, 2/5, 1/4]

[ 2/5, 1/4, 1/5]

Спрощення та перетворення алгебричних виразів

Нехай задані три різні символічні вирази

syms x f g h

f=x^3-6*x^2+11*x-6;

g=(x-1)*(x-2)*(x-3);

h=-6+(11+(-6+x)*x)*x;

Для покращення візуального сприйняття цих виразів існує команда pretty. У результаті запису

pretty(f); pretty(g); pretty(h)

на екрані відобразяться ці ж функції, але «покращеного» вигляду

  3      2

 x  - 6 x  + 11 x - 6

 (x - 1) (x - 2) (x - 3)

 x (x (x - 6) + 11) - 6

Існує також ряд команд для перетворення та спрощення виразів.

Команда collect знаходить та сумує всі коефіцієнти при однакових степенях змінної, наприклад

syms x f

f =(x - 1)*(x - 2)*(x - 3);

collect(f)

У результаті на екрані з’явиться

ans =

x^3 - 6*x^2 + 11*x – 6

Якщо записати більш громіздкий вираз

syms x a

f=(x+a)^4+(x-1)^3-(x-a)^2-a*x*x-3

d=collect(f)

Результат буде наступний

f =

(x - 1)^3 - a*x^2 + (a + x)^4 - (a - x)^2 - 3

d =

x*(4*a^3 + 2*a + 3) - x^2*(a - 6*a^2 + 4) + x^3*(4*a + 1) –

a^2 + a^4 + x^4 - 4

Команда expand розкладає вираз на суму добутків, наприклад

syms a x y f

f =a*(x + y);

expand(f)

 Після виконання команди результат буде наступним

ans =

a*x + a*y

Команда factor використовується для поліномів із раціональними коефіцієнтами і виражає функцію у вигляді добутку поліномів. Якщо ж функція не розкладається на добуток, то команда видає цю ж саму функцію. Ця команда є зворотною до команди collect. Наприклад

syms x f

f =x^3 - 6*x^2 + 11*x – 6;

factor(f)

Результат буде наступним

ans =

(x - 3)*(x - 1)*(x - 2)

Також команда factor може представляти символьне число у вигляді добутку простих чисел, наприклад

syms a

a=sym('230010')

s=factor(a)

На екрані з’явиться наступне

s =

2*3*5*11*17*41

Команда simplify дозволяє спрощувати вирази, застосовуючи всі відомі математичні залежності, наприклад

syms x f

f =x*(x*(x - 6) + 11) - 6;

simplify(f)

На екрані з’явиться наступний результат

ans =

(x - 1)*(x - 2)*(x - 3)

Спростимо ще одну функцію

syms x f

f=(1-x^2)/(1-x);

simplify(f)

Спрощений вираз буде мати вигляд

ans =

x + 1

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

syms x f

f=x^2-2*x-3;

simple(f)

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

simplify:

x^2 - 2*x - 3

radsimp:

x^2 - 2*x - 3

simplify(100):

(x + 1)*(x - 3)

combine(sincos):

x^2 - 2*x - 3

combine(sinhcosh):

x^2 - 2*x - 3

combine(ln):

x^2 - 2*x - 3

factor:

(x + 1)*(x - 3)

expand:

x^2 - 2*x - 3

combine:

x^2 - 2*x - 3

rewrite(exp):

x^2 - 2*x - 3

rewrite(sincos):

x^2 - 2*x - 3

rewrite(sinhcosh):

x^2 - 2*x - 3

rewrite(tan):

x^2 - 2*x - 3

collect(x):

x^2 - 2*x - 3

mwcos2sin:

x^2 - 2*x - 3

ans =

x^2 - 2*x – 3

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

f=sym('(a^2+b^2)/(a^2-b^2)+a^4/b^4');

f=subs(f,'a','(exp(x)+exp(-x))');

f=subs(f,'b','(sin(x)+cos(x))');

pretty(f)

На екрані з’явиться наступний вираз

                   4                    2                     2

 (exp(-x) + exp(x))    (cos(x) + sin(x))  + (exp(-x) + exp(x))

 ------------------- - ----------------------------------------

                   4                    2                     2

  (cos(x) + sin(x))    (cos(x) + sin(x))  - (exp(-x) + exp(x))

Вирішення алгебричних рівнянь символічній формі

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

syms a x

s=solve(x^3+a*x+1)

На екрані зявиться розв’язок рівняння цього у символьному вигляді

s =

                                                           ((a^3/27 + 1/4)^(1/2) - 1/2)^(1/3) - a/(3*((a^3/27 + 1/4)^(1/2) - 1/2)^(1/3))

a/(6*((a^3/27 + 1/4)^(1/2) - 1/2)^(1/3)) - ((a^3/27 +

1/4)^(1/2) - 1/2)^(1/3)/2 - (3^(1/2)*i*(a/(3*((a^3/27 +

1/4)^(1/2) - 1/2)^(1/3)) + ((a^3/27 + 1/4)^(1/2) –

1/2)^(1/3)))/2

a/(6*((a^3/27 + 1/4)^(1/2) - 1/2)^(1/3)) - ((a^3/27 +

1/4)^(1/2) - 1/2)^(1/3)/2 + (3^(1/2)*i*(a/(3*((a^3/27 +

1/4)^(1/2) - 1/2)^(1/3)) + ((a^3/27 + 1/4)^(1/2) –

1/2)^(1/3)))/2

Якщо ж у рівняннях є декілька однакових виразів, то зручно застосовувати команду subexpr, яка замінить ці вирази новою змінною, наприклад для розв’язку попереднього рівняння

r=subexpr(s)

sigma =

(a^3/27 + 1/4)^(1/2) - 1/2

r =

                                                    sigma^(1/3) - a/(3*sigma^(1/3))

a/(6*sigma^(1/3)) - sigma^(1/3)/2-

(3^(1/2)*i*(a/(3*sigma^(1/3)) + sigma^(1/3)))/2

a/(6*sigma^(1/3)) - sigma^(1/3)/2+

(3^(1/2)*i*(a/(3*sigma^(1/3)) + sigma^(1/3)))/2

Як видно з прикладу, вираз (a^3/27 + 1/4)^(1/2) - 1/2 був замінений на sigma та підставлений у розв’язок системи.

Вирішення систем алгебричних рівнянь символічній формі

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

.

Щоб вирішити рівняння для x та y відносно  спочатку створюються символічні змінні

syms x y alpha

Далі використовується команда для вирішення рівнянь solve, але у іншому форматі

[x,y]=solve(x^2*y^2, x-y/2-alpha)

Треба звернути увагу, що в дужках записуються ліві частини рівнянь, прирівняні до нуля, а масив розв’язків повинен містити стільки елементів, скільки змінних знаходиться у рівнянні, у даному випадку масив[x,y]містить два елемента x та y.

У результаті виконаня команди solve на екрані з’явиться наступне

x =

alpha

    0

y =

         0

(-2)*alpha

Вирішення диференційних рівнянь символічній формі

Для символічного вирішення диференційних рівнянь застосовується команда dsolve. При записі диференційних рівнянь у команді dsolve перша похідна позначається літерою D, друга D2, третя D3, і т.д. Запис D2y відповідає .

Початкові умови записують за допомогою окремих рівнянь. Якщо початкові умови не задані, в розв’язок будуть входити постійні інтегрування.

Розглянемо приклад. Нехай задане диференційне рівняння першого порядку

Команда dsolve буде мати наступний вигляд

syms t y

s=dsolve('Dy=2*y+t')

 У результаті на екрані з’явиться наступне

s =

(C3*exp(2*t))/4 - t/2 - 1/4

Якщо відомі початкові умови, наприклад , то запис команди dsolve зміниться

syms t y

s=dsolve('Dy=2*y+t', 'y(0)=2')

Тоді у розв’язку вже не буде постійних інтегрування

s =

(9*exp(2*t))/4 - t/2 - 1/4

Якщо задане нелінійне диференційне рівняння, наприклад

із заданими початковими умовами , воно вирішується символічно наступним чином

syms x

s=dsolve('(Dx+x)^2=1', 'x(0)=0')

У результаті розв’язок буде наступним

s =

1/exp(t) - 1

1 - 1/exp(t)

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

із заданими початковими умовами ,  вирішується наступним чином

syms x y

s=dsolve('D2y=cos(2*x)-y', 'y(0)=1', 'Dy(0)=0', 'x')

Запис 'x' означає, що відбувається диференціювання по змінній x, а не по t.

У результаті виконання команди на екрані з’явиться наступне

s =

(4*cos(x))/3 + cos(x)*(cos(3*x)/6 - cos(x)/2) +

sin(x)*(sin(3*x)/6 + sin(x)/2)

Розглянемо диференційне рівняння третього порядку

,

з початковими умовами , , .

Для вирішення цього рівняння потрібно записати наступне

syms x u

s=dsolve('D3u=u', 'u(0)=1', 'Du(0)=-1', 'D2u(0)=pi','x');

d=subexpr(s)

Результат буде наступним

sigma =

(3^(1/2)*x)/2

d =

(pi*exp(x))/3 - (cos(sigma)*(pi/3 - 1))/exp(x/2) –

(3^(1/2)*sin(sigma)*(pi + 1))/(3*exp(x/2))

Запис 'D3u' означає третю похідну , а 'D2u(0)=pi' початкову умову .

Вирішення систем диференційних рівнянь у символічній формі

Нехай задана система диференційних рівнянь

.

Ця система також може бути розв’язана у символічній формі за допомогою команди dsolve

syms f g

[s,p]=dsolve('Df=3*f+4*g', 'Dg=-4*f+3*g')

r=subexpr(s)

t=subexpr(p)

pretty(r)

pretty(t)

У результаті на екрані з’явиться наступні розв’язки

s =

(C59*i)/exp(t*(4*i - 3)) - C58*i*exp(t*(4*i + 3))

p =

C58*exp(t*(4*i + 3)) + C59/exp(t*(4*i - 3))

r =

(C59*i)/exp(t*(4*i - 3)) - C58*i*exp(t*(4*i + 3))

t =

C58*exp(t*(4*i + 3)) + C59/exp(t*(4*i - 3))

- C58 exp(t (3 + 4 I)) I + C59 exp(t (3 - 4 I)) I

 C58 exp(t (3 + 4 I)) + C59 exp(t (3 - 4 I))

Розглянемо систему третього порядку

.

Записується команда dsolve

syms x1 x2 x3

[x y z]=dsolve('Dx1=2*x1-3*x2+3*x3-2*Dx2+Dx3', 'Dx2=3*x1+2*x2-x3+2*Dx1-5*Dx3', 'Dx3=x1-x2+x3+Dx1-Dx2');

pretty(x)

pretty(y)

pretty(z)

На екрані з’являться наступні розв’язки

      /   1/2          \          /            1/2   \

      | 91    t   10 t |          |   10 t   91    t |

C63 exp| ------- - ---- |   C64 exp| - ---- - ------- |

      \    9        9  /          \     9       9    /

------------------------- + --------------------------- + C62 exp(t) -

           10                           10

                 /   1/2          \                  /            1/2   \

      1/2        | 91    t   10 t |       1/2        |   10 t   91    t |

  3 91    C63 exp| ------- - ---- |   3 91    C64 exp| - ---- - ------- |

                 \    9        9  /                  \     9       9    /

  --------------------------------- + -----------------------------------

                  70                                   70

                     /            1/2   \            /   1/2          \

                     |   10 t   91    t |            | 91    t   10 t |

            7 C64 exp| - ---- - ------- |   7 C63 exp| ------- - ---- |

                     \     9       9    /            \    9        9  /

C62 exp(t) - ----------------------------- - --------------------------- +

                          10                             10

                  /   1/2          \                   /            1/2   \

       1/2        | 91    t   10 t |        1/2        |   10 t   91    t |

  11 91    C63 exp| ------- - ---- |   11 91    C64 exp| - ---- - ------- |

                  \    9        9  /                   \     9       9    /

  ---------------------------------- - ------------------------------------

                  70                                    70

        /   1/2          \          /            1/2   \

        | 91    t   10 t |          |   10 t   91    t |

 C63 exp| ------- - ---- | + C64 exp| - ---- - ------- | + C62 exp(t)

        \    9        9  /          \     9       9    /

Диференціювання символічних виразів

Щоб проілюструвати, як відбувається диференціювання у символічному тулбоксі, спочатку створимо символьний вираз:

syms x

f=sin(5*x);

Для диференціювання цього символьного виразу відносно x використовується команда diff

a=diff(f)

 У результаті на екрані з’явиться

a =

5*cos(5*x)

Розглянемо ще один приклад

syms x

g=exp(x)*cos(x)

c=diff(g)

Результат буде наступним

 c =

exp(x)*cos(x) - exp(x)*sin(x)

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

syms x

g=exp(x)*cos(x);

c=diff(diff(g))

або записати наступним чином

c=diff(g,2)

де 2 – порядок похідної.

У результаті написання будь-якої з вище описаних команд на екрані з’явиться

c =

(-2)*exp(x)*sin(x)

Для того, щоб взяти похідну від константи, її спочатку треба задати, як символьну змінну. У протилежному випадку відповіддю на диференціювання константи буде порожня множина, наприклад:

c=sym('5')

a=diff(c)

 Результат буде наступним

a =

0

Якщо просто набрати diff(5), то у результаті буде

ans=[ ]

Часткові похідні від символічних виразів

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

syms s t

f=sin(s*t);

c=diff(f,t)

У результаті на екрані буде наступне

c =

s*cos(s*t)

Щоб продиференціювати той самий вираз за іншою змінною, наприклад s, потрібно написати

syms s t

f=sin(s*t);

c=diff(f,s)

Результатом буде

c =

t*cos(s*t)

Щоб обчислити другу похідну від цього ж виразу за змінною t, потрібно написати наступне

syms s t

f=sin(s*t);

c=diff(f,t,2)

У результаті виконання команд на екрані з’явиться наступний розв’язок

c =

-s^2*sin(s*t)

Команда diff також може використовуватись для поелементного диференціювання масивів, наприклад

syms a x

A=[cos(a*x) sin(a*x); -sin(a*x) cos(a*x)];

C=diff(A)

Результат буде наступним

C =

[ -a*sin(a*x),  a*cos(a*x)]

[ -a*cos(a*x), -a*sin(a*x)]

Обчислення границь символічних виразів

Нехай задана границя

.

Для обчислення границі від символічного виразу спочатку потрібно задати символічні змінні та використати до виразу команду limit. Першим вхідним аргументом цієї команди являється символічний вираз, другим – змінна, а третім – точка, в якій шукається границя. Тоді задана границя буде обчислюватися наступним чином

syms h x

s=limit((cos(h+x)-cos(x))/h,h,0)

Результатом виконання команди буде

s =

-sin(x)

Розглянемо ще одну границю

Вирішується ця границя за допомогою наступної послідовності команд

syms n x

s=limit ((1+x/n)^n,n,inf)

і дає у результаті

s =

exp(x)

Функція limit також дозволяє знаходити односторонні границі. Для знаходження границі справа потрібно вказати четвертий додатковий аргумент 'right', а зліва 'left'. Розглянемо дял прикладу дві границі

та .

Команди для вирішення цих границі наступні

syms x

s1=limit ((10+x)^(1/x),x,0, 'left')

s2= limit ((10+x)^(1/x),x,0, 'right')

У результаті на екрані відобразиться наступне

s1 =

0

s2 =

Inf

Інтегрування символічних виразів

Якщо f – це символьний вираз, то команда int намагається знайти інший символьний вираз F, так, що diff(F)=f.

Наприклад, потрібно обрахувати невизначений інтеграл  . Застосуємо команду int

syms x n

 f=x^n;

int(f)

 На екрані з’являться наступні розв’язки

ans =

piecewise([n = -1, log(x)], [n <> -1, x^(n + 1)/(n + 1)])

 Також у команді int можна задавати змінну, за якою буде проходити інтегрування, наприклад для визначення інтеграла

syms x n

f=(x^3)*exp(x);

I=int(f,x);

pretty(I)

У результаті на екрані з’явиться наступний розв’язок

          3      2

exp(x) (x  - 3 x  + 6 x - 6)

Для обрахування визначених інтегралів необхідно задати межі інтегрування. Наприклад для інтеграла  команда int виглядає наступним чином

syms x

f= sin(2*x);

I=int(f,x,0,pi/2)

Результат буде наступним

I =

1

  1.   Програма роботи

  1.  Ознайомитися з Symbolic Toolbox, символічними числами, змінними, виразами та масивами. Розглянути існуючі функції перетворення та спрощення виразів, інтегрування, диференціювання, тощо, а також, запропоновані приклади до них.
  2.  Відповідно до номеру своєї бригади виконати спрощення функцій за допомогою існуючих команд заданих у таблиці 6.1. Привести результати та задані функції до покращеного вигляду.

Таблиця 6.1.

№ бригади

Функція 1

Функція 2

Функція 3

1

2

3

4

5

6

7

8

  1.  Відповідно до номеру своєї бригади розв’язати у символічному вигляді рівняння задані у таблиці 6.2.

Таблиця 6.2.

№ бригади

Рівняння 1

Рівняння 2

Рівняння 3

1

2

3

4

5

6

7

8

  1.  Відповідно до номеру своєї бригади обчислити у символічному вигляді інтеграли задані у таблиці 6.3. Привести результати до покращеного вигляду.

Таблиця 6.3.

№ бригади

Інтеграл 1

Інтеграл 2

Інтеграл 3

Інтеграл 3

1

2

3

4

5

6

7

8

  1.  Відповідно до номеру своєї бригади для виразів заданих у таблиці 6.4 виконати наступні завдання:
    1.   спростити вирази за допомогою існуючих функцій;
    2.   продиференціювати спрощені вирази;
    3.   заповнити матрицю А[3х3] у наступному форматі:

  1.  замінити змінні на символічні числа згідно таблиці 6.5 та привести матрицю до символічного вигляду.

Таблиця 6.4.

№ бри-

гади.

Вираз 1

Вираз 2

Вираз 3

Вираз 4

1

2

3

4

5

6

7

8

Таблиця 6.5.

№ бригади

Символічне число x

1

1/2

2

1/3

3

1/4

4

2/5

5

3/5

6

1/5

7

7/8

8

4/5

  1.   Задана система символічних рівнянь. Отримати розвязок цієї системи у символічному вигляді. Коефіцієнти , ,  взяти з таблиці 6.6. Використати команди для заміни виразів змінними, якщо такі будуть.

Таблиця 6.6.

№ бригади

Коефіцієнти

1

1/2

1/3

1/4

2

1/3

2/5

4/5

3

1/4

3/5

1/2

4

2/5

1/4

1/3

5

3/5

7/8

4/5

6

1/5

2/5

1/3

7

7/8

1/4

1/2

8

4/5

1/2

1/3

  1.  Задане диференційне рівняння у символічній формі. Відповідно до варіанту своєї бригади, заданого у таблиці 6.7 отримати його розвязок спочатку не враховуючи початкові умови, потім врахувати їх. Використати команди для заміни виразів змінними, якщо такі будуть.

Таблиця 6.7.

№ бригади

Вигляд диференційного рівняння

Початкові умови

1

[1 2 0]

2

[0 0 0]

3

[2 2 2]

4

[0 1 5]

5

[10 0 2]

6

[0 0 0]

7

[2 3 4]

8

[10 0 1]

6.3. Зміст звіту

Звіт з лабораторної роботи має містити наступні матеріали:

  1.  Титульний аркуш.
  2.  Основні теоретичні відомості, необхідні для виконання лабораторної роботи.
  3.  Умови завдання для варіанту бригади.
  4.  Програми та результати їх виконання відповідно до завдання.
  5.  Висновки по виконанню лабораторної роботи.

6.4. Контрольні запитання

  1.  Що таке Symbolic Toolbox? Які його основні функції?
  2.  Наведіть процедуру створення символічних змінних, чисел, виразів та масивів.
  3.  Основні команди для спрощення та перетворення виразів.
  4.  Як вирішуються алгебричні рівняння та системи рівнянь символічними методами?
  5.  Символьне інтегрування та вирішення границь.
  6.   Способи вирішення диференційних рівнянь та систем диференційних рівнянь символічними методами.

Лабораторна робота № 7

Основні бібліотеки блоків тулбоксу simulink та їх застосування

Тривалість лабораторної роботи – 4 год.

Мета роботи – ознайомлення з тулобоксом візуального моделювання Simulink та з його основними бібліотеками блоків, вивчення правил їх з’єднання, правил створення структурних схем та прикладів їх застосування.

  1.  Основні теоретичні відомості

Запуск Simulink та послідовність створення нової моделі.

Для запуску тулбоксу Simulink необхідно попередньо запустити пакет MatLab, основне вікно якого представлено на рис. 7.1. У вікні показана підказка, що з’являється при наведенні курсору миші на ярлик Simulink у панелі інструментів.

Рис. 7.1. Основне вікно пакету MatLab з ярликом Simulink

Після натиснення на кнопку відкривається вікно, що зображено на рис. 7.2.

Рис. 7.2. Бібліотеки блоків Simulink

На рис. 7.2 у лівій частині вікна розкритий наступний список бібліотек блоків Simulink:

  1.  Commonly Used Blocks – блоки, що часто використовуються;
  2.  Continuous – аналогові блоки;
  3.  Discontinuities – нелінійні блоки;
  4.  Discrete – дискретні блоки;
  5.  Logic and Bit Operations – логічні операції та операції з бітами;
  6.  Lookup Tables – блоки таблиць;
  7.  Math Operations – блоки математичних операцій;
  8.  Model Verification – блоки перевірки моделей;
  9.  Model-Wide Utilities – блоки розширення моделей;
  10.  Ports & Subsystems – порти та підсистеми;
  11.  Signal Attributesблоки властивостей сигналів;
  12.  Signal Routing – блоки маршрутизації (перетворення) сигналів;
  13.  Sinks – блоки приймачів сигналів;
  14.  Sources – блоки джерел сигналів
  15.  Used-Defined Functions – функції, що задаються користувачем;
  16.  Additional Math & Discrete – додаткові математичні та дискретні блоки.

Список розділів бібліотеки Simulink представлено у вигляді дерева і правила роботи з ним є загальними для списків такого виду: піктограма згорнутого вузла дерева містить символ "+", а піктограма розгорнутого містить символ "-"; для розгортання або згортання вузла дерева достатньо натиснути на його піктограмі лівою клавішею мишки.

При виборі відповідного розділу бібліотеки в правій частині вікна відображається його вміст (рис. 7.3).

Рис. 7.3. Бібліотека Continuous з її набором блоків

Для роботи з представленим вікном використовуються команди меню:

  1.  File (Файл) – робота з файлами бібліотек;
  2.  Edit (Редагування) – додавання блоків і їхній пошук (за назвою);
  3.  View (Вид) – керування показом елементів інтерфейсу;
  4.  Help (Довідка) – вивід вікна довідки по оглядачу бібліотек;

Повний список команд меню бібліотек наведений у додатковій літературі [2].

Для створення моделі в середовищі Simulink необхідно послідовно виконати наступні дії:

  1.  Створити нове вікно моделі за допомогою команди File→New→Model або кнопки  на панелі інструментів. Вигляд нового вікна моделі показано на рис. 7.4.

Рис. 7.4. Вікно нової Simulink-моделі

  1.  Розташувати у створеному вікні необхідні бібліотечні блоки, що реалізують задану модель структурної схеми. Для цього необхідно відкрити відповідний розділ бібліотеки, наприклад, Sources – блоки джерел сигналів. Далі, виділити вказівником миші необхідний блок бібліотеки, натиснути на ліву клавішу миші, перетягнути блок у створене вікно моделі та відпустити клавішу. На рис. 7.5 показано вікно моделі з чотирма перетягнутими бібліотечними блоками. При необхідності блок з вікна моделі можна вилучити. Для цього блок спочатку виділяється натисканням лівої клавіші мишки при знаходження курсору на його зображенні, а потім натискається клавіша Delete на клавіатурі. Для зміни розмірів блоку потрібно вибрати блок, установити курсор в один з його кутів, натиснувши ліву клавішу мишки змінити розмір блоку (курсор при цьому перетворюється у двосторонню стрілку).

Рис. 7.5. Вікно Simulink-моделі з бібліотечними блоками

  1.  Змінити параметри кожного блоку, установлені програмою автоматично, тобто “за згодою”. Для цього необхідно вибрати вказівником миші блок та двічі натиснути її лівою клавішею, після чого відкривається вікно редагування параметрів даного блоку. При завданні числових значень параметрів варто мати на увазі, що десятковим роздільником повинна використовуватися крапка, а не кома. Після внесення змін нові параметри активуються кнопкою Apply чи кнопкою OK (в останньому випадку вікно закривається). На рис. 7.6, як приклад, показано блок, що моделює похідну від функції, та вікно редагування параметрів даного блоку.

Рис. 7.6. Блок, що моделює похідну від функції, та вікно редагування параметрів блоку

  1.  Виконати з’єднання елементів схеми. Для з’єднання блоків необхідно вказати курсором на вихід необхідного блоку, а потім при натиснутій лівій клавіші миші, провести лінію до входу іншого блоку. Після чого відпустити клавішу. У випадку правильного зєднання зображення стрілки на вході блоку змінює колір. Для створення точки розгалуження на лінії сполучення потрібно підвести курсор до передбачуваного вузла й, нажавши праву клавішу мишки, провести лінію. Для видалення лінії потрібно її вибрати лінію (так само, як це виконується для блоку), а потім нажати клавішу Delete на клавіатурі. Схема моделі, у якій виконані зєднання між блоками, показана на рис. 7.7.

Рис. 7.7. Simulink-модель структурної схеми

  1.  Зберегти модель у файл на диску, вибравши пункт меню FileSave As у вікні схеми й указавши папку й ім’я файлу. Варто мати на увазі, що імя файлу повинне починатися з букви, не повинне перевищувати 32 символів й не може містити символів кирилиці і спецсимволів. Ця ж вимога ставиться й до шляху файлу (до тих папок, у яких зберігається файл). При наступному редагуванні схеми можна користуватися пунктом меню FileSave. При повторних запусках програми Simulink завантаження схеми здійснюється за допомогою меню FileOpen у вікні оглядача бібліотеки або з основного вікна MatLab.

Вікно моделі містить наступні елементи (7):

  1.  Заголовок з назвою вікна. Новому вікну привласнюється ім'я Untitled з відповідним номером;
    1.  Меню з командами File, Edit, View і т.д.;
    2.  Панель інструментів;
    3.  Вікно для створення схеми моделі;
    4.  Рядок стану, що містить інформацію про поточний стан моделі.

Меню вікна містить команди для редагування моделі, її настроювання й керування процесом розрахунку, роботи з файлами тощо:

  1.  File (Файл) – робота з файлами моделей;
  2.  Edit (Редагування) – зміна моделі й пошук блоків;
  3.  View (Вид) – керування показом елементів інтерфейсу;
  4.  Simulation (Моделювання) – завдання настроювань для моделювання й керування процесом розрахунку;
  5.  Format (Форматування) – зміна зовнішнього вигляду блоків і моделі в цілому;
  6.  Tools (Інструментальні засоби) – застосування спеціальних засобів для роботи з моделлю;
  7.  Help (Довідка) – вивід вікон довідкової системи.

Повний список команд меню вікна моделі наведений у додатковій літературі [2].

Для роботи з моделлю можна також використовувати кнопки на панелі інструментів (рис. 7.8).

Рис. 7.8. Панель інструментів вікна моделі

Кнопки панелі інструментів мають наступне призначення:

  1.  New Model – відкрити нове (порожнє) вікно моделі;
  2.  Open Model – відкрити існуючий mdl-файл;
  3.  Save – зберегти mdl-файл на диску;
  4.  Print – вивід на друк блок-діаграми моделі;
  5.  Cut – вирізати виділену частину моделі в буфер проміжного зберігання;
  6.  Copy – скопіювати виділену частину моделі в буфер проміжного зберігання;
  7.  Paste – вставити у вікно моделі вміст буфера проміжного зберігання;
  8.  Navigate Back – навігація масштабів (якщо використовувалися команди VievZoom In або VievZoom Out);
  9.  Navigate Forward – навігація масштабів (якщо використовувалися команди VievZoom In або VievZoom Out);
  10.  Go To Parent System – перейти до батьківської системи (у разі якщо користувач знаходиться у підсистемі);
  11.  Undo – скасувати попередню операцію редагування;
  12.  Redo – відновити результат скасованої операції редагування;
  13.  Start/Pause/Continue Simulation – запуск моделі на виконання (команда Start). Після запуску моделі на зображенні кнопки виводиться символ , і їй відповідає вже команда Pause (призупинити моделювання). Для поновлення моделювання варто натиснути по тій же кнопці, оскільки в режимі паузи їй відповідає команда Continue (продовжити);
  14.  Stop – закінчити моделювання. Кнопка стає доступної після початку моделювання, а також після виконання команди Pause;
  15.  Simulation Stop Time – час закінчення моделювання;
  16.  Simulation Mode – вибір режиму моделювання;
  17.  Show Port Values When Hovering – показувати значення портів;
  18.  Incremental Build – режим інкрементації (тільки для систем з фіксованим кроком);
  19.  Refresh Model Blocks – відновити блоки моделі;
  20.  Update Diagram – відновити діаграму;
  21.  Build Systemпобудувати систему (тільки якщо створена підсистема);
  22.  Library Browser – відкрити вікно оглядача бібліотек;
  23.  Launch Model Explorer – запустити провідник моделі;
  24.  Toggle Model Browser – відкрити вікно оглядача моделі;
  25.  Debug – запуск відладчика моделі.

У нижній частині вікна моделі є рядок стану, у якому відображаються короткі коментарі до кнопок панелі інструментів, а також до пунктів меню, коли вказівник мишки перебуває над відповідним елементом інтерфейсу. Це ж текстове поле використовується й для індикації стану Simulink: Ready (Готово) або Running (Виконання). У рядку стану відображаються також:

  •  масштаб відображення блок-діаграми (у відсотках, вихідне значення дорівнює 100%);
  •  індикатор ступеня виконання сеансу моделювання (з'являється після запуску моделі);
  •  поточного значення модельного часу (виводиться також тільки після запуску моделі);
  •  використовуваний алгоритм розрахунку моделі (метод вирішення).

Додавання текстових написів до моделі.

Для підвищення наочності моделі зручно використовувати текстові написи. Для створення напису потрібно вказати мишею місце напису й двічі натиснути лівою клавішею миші. Після цього зявиться прямокутна рамка з курсором для введення тексту. Аналогічним чином можна змінити й підпис до блоку. На рис. 1.9 показано текстовий напис і зміна напису в блоці передатної функції. (Варто мати на увазі, що деякі версії Simulink не адаптовані до використання кириличних шрифтів. В цьому випадку застосування написів кирилицею не бажано).

Pис. 7.9. Приклад додавання напису та зміна підпису блоків

Виділення, копіювання, переміщення, вставка, видалення об’єктів та робота з буфером обміну Windows.

Для виконання якої-небудь дії з елементом моделі (блоком, сполучною лінією, написом) цей елемент необхідно спочатку виділити. Виділення об'єктів простіше всього здійснюється мишею. Для цього необхідно встановити курсор миші на потрібному об’єкті й натиснути лівою клавішею. Відбудеться виділення обєкта. Про це будуть свідчити маркери по кутах об’єкта (див. рис. 7.9). Можна також виділити кілька об’єктів. Для цього треба встановити курсор миші поблизу групи об’єктів, нажати ліву клавішу й, не відпускаючи її, почати переміщувати мишу. Зявиться пунктирна рамка, розміри якої будуть змінюватися при переміщенні мишки. Всі охоплені рамкою об’єкти стають виділеними. Виділити всі об'єкти також можна, використовуючи команду Edit→Select All.

Після виділення об’єкта його можна копіювати або переміщати в буфер проміжного зберігання, витягати з буфера, а також видаляти, використовуючи стандартні прийоми роботи в Windows.

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

Для вирізання обєкта в буфер його необхідно попередньо виділити, а потім виконати команду Edit→Cut або скористатися кнопкою  на панелі інструментів.

При виконанні даних операцій варто мати на увазі, що обєкти знаходяться у власному буфері MatLab і недоступні з інших додатків. Використання команди Edit→Copy Model To Clipboard дозволяє помістити графічне зображення моделі в буфер Windows і робить його доступним для інших програм.

Для вставки обєкта з буфера необхідно попередньо вказати місце вставки, натиснувши лівою клавішею мишки в передбачуваному місці вставки, а потім виконати команду Edit→Paste або скористатися кнопкою  на панелі інструментів.

Для видалення обєкта його необхідно попередньо виділити, а потім виконати команду Edit→Delete або скористатися клавішею Delete на клавіатурі. Варто врахувати, що команда Delete видаляє блок без переміщення його в буфер обміну. Однак цю операцію можна скасувати командою меню Edit→Undo. Для видалення всіх об’єктів можна використати команду EditDelete All, або виділити усі об’єкти та натиснути клавішу Delete на клавіатурі.

З’єднання, зміна розмірів та переміщення блоків.

Для зєднання блоків необхідно спочатку встановити курсор миші на вихідний порт одного із блоків. Курсор при цьому перетвориться у великий хрест із тонких ліній (рис. 7.10).

Рис. 7.10. Початок створення зєднання

Тримаючи натиснутою ліву кнопку миші, потрібно перемістити курсор до вхідного порту потрібного блоку. Курсор миші прийме вид хреста з тонких здвоєних ліній (рис. 7.11).

Рис. 7.11. Завершення створення з'єднання

Після створення лінії необхідно відпустити ліву клавішу миші. Свідченням того, що зєднання створене, буде жирна стрілка у вхідного порту блоку. Виділення лінії виробляється точно також як і виділення блоку – одинарним натисканням лівої клавіші миші. Чорні маркери, розташовані у вузлах сполучної лінії будуть говорити про те, що лінія виділена.

Створення петлі лінії зєднання виконується також як переміщення блоку. Лінія з’єднання виділяється, і потім потрібна частина лінії переміщується (рис. 7.12). Видалення з’єднань виконується як і будь-яких інших обєктів.

Рис. 7.12. Створення петлі в сполучній лінії

Для зміни розміру блоку він виділяється, після чого курсор миші встановлюється на один з маркерів по кутах блоку. Після перетворення курсору у двосторонню стрілку, необхідно нажати ліву клавішу миші й розтягти (або стиснути) зображення блоку. На рис. 7.13 показаний цей процес. Розміри написів блоку при цьому не змінюються.

Рис. 7.13. Зміна розміру блоку

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

У процесі освоєння програми користувач може робити дії, які на перший погляд є незворотними, (наприклад, випадкове видалення частини моделі, копіювання тощо). У цьому випадку варто скористатися командою Undo скасування останньої операції. Команду можна викликати також за допомогою кнопки  в панелі інструментів вікна моделі або з меню Edit. Для відновлення скасованої операції служить команда Redo (інструмент ).

Форматування об’єктів.

У меню Format (також як і в контекстному меню, що викликається натисканням правої клавіші миші на об’єкті) присутній набір команд форматування блоків. Команди форматування розділяються на кілька груп:

1) Зміна відображення написів:

  •  Font форматування шрифту написів і текстових блоків.
  •  Text alignment вирівнювання тексту в текстових написах.
  •  Flip name – переміщення підпису блоку.
  •  Show/Hide name відображення або приховання підпису блоку.

2) Зміна кольорів відображення блоків:

  •  Foreground color – вибір кольору ліній для виділених блоків.
  •  Background color – вибір кольору фону виділених блоків.
  •  Screen color – вибір кольору фону для всього вікна моделі.

3) Зміна положення блоку і його виду:

  •  Flip block – дзеркальне відображення щодо вертикальної осі симетрії.
  •  Rotate block – поворот блоку на 90о за годинниковою стрілкою.
  •  Show drop shadow – показ тіні від блоку.
  •  Show port labels – показ міток портів.

Установка параметрів моделювання.

Перед виконанням розрахунків (перед початком моделювання) необхідно попередньо задати параметри моделювання. Завдання параметрів розрахунку виконується в панелі керування меню Simulation→Configuration Parameters. Вид панелі керування наведений на рис. 7.14.

Рис. 7.14. Вікно з налаштуваннями параметрів моделювання

Це вікно має декілька вкладок зліва. Зупинимось на вкладці Solver, що задає налаштування параметрів розрахунку моделі. Вона містить наступні 4 групи:

  1.  Simulation time – час розрахунку;
    1.  Solver options – параметри розрахунку;
    2.  Tasking and sample time options – параметри періоду квантування моделі;
    3.  Zero-crossing options – параметри режиму пересікання нуля.

Для звичайних налаштувань потрібні тільки перші дві групи. Розглянемо детальніше кожну з них.

Час розрахунку (Simulation time) задається початковим (Start time) і кінцевим (Stop time) значенням часу розрахунку. Початковий час, як правило, задається рівним нулю. Величина кінцевого часу задається користувачем, виходячи з умов розвязання завдання.

При виборі параметрів розрахунку необхідно вказати спосіб моделювання (Type) і метод розрахунку нового стану системи (Solver). Для параметра Type доступні два варіанти – c фіксованим (Fixed-step) або зі змінним (Variable-step) кроком. Список методів розрахунку нового стану системи містить кілька варіантів. Перший варіант (discrete) використовується для розрахунку дискретних систем. Інші методи використовуються для розрахунку безперервних систем. Ці методи різні для змінного (Variable-step) і для фіксованого (Fixed-step) кроку часу та являють собою процедури числового вирішення систем диференціальних рівнянь, що описують модель. Докладний опис кожного з методів розрахунку системи наведено в довідковій системі MatLab, а також стислий опис їх наведений у теоретичних відомостях до лабораторної роботи №5.

Нижче двох списків Type перебуває область, вміст якої змінюється в залежності від обраного способу зміни модельного часу. При виборі Fixed-step у даній області з’являється текстове поле Fixed-step size (величина фіксованого кроку), що дозволяє задавати величину кроку моделювання (рис. 7.15). Величина кроку моделювання за згодою установлюється системою автоматично (auto). Необхідна величина кроку може бути введена замість значення auto або у формі числа, або у вигляді виразу (це відноситься й до всіх параметрів, що встановлюються системою автоматично).

При виборі Fixed-step необхідно також задати режим розрахунку (Tasking mode for periodic sample times), для якого доступні три варіанти:

  •  MultiTasking (багатозадачний) – використовується, якщо в моделі присутні паралельно працюючі підсистеми, і результат роботи моделі залежить від часових параметрів цих підсистем. Режим дозволяє виявити

Рис. 7.15. Вікно з налаштуваннями параметрів моделювання при виборі фіксованого кроку розрахунку

невідповідність швидкості й дискретності сигналів, що пересилаються блоками один одному.

  •  SingleTasking (однозадачний) – використовується для тих моделей, у яких недостатня синхронізація роботи окремих складових не впливає на кінцевий результат моделювання.
  •  Auto (автоматичний вибір режиму) – дозволяє Simulink автоматично встановлювати режим MultiTasking для тих моделей, у яких використовуються блоки з різними швидкостями передачі сигналів, і режим SingleTasking для моделей, у яких є блоки, що оперують однаковими швидкостями.

При виборі Variable-step в області з'являються поля для установки трьох параметрів:

  •  Мах step size – максимальний крок розрахунку. За згодою крок встановлюється автоматично (auto) і його значення в цьому випадку визначається виразом (SfopTime мінус StartTime)/50. Досить часто це значення виявляється занадто великим, що може призвести до нестійкості процесу моделювання та до графіків змінних у вигляді ламаних ліній. У цьому випадку величину максимального кроку розрахунку необхідно задавати явно.
  •  Мin step size – мінімальний крок розрахунку.
  •  Initial step size – початкове значення кроку моделювання.

При моделюванні безперервних систем з використанням змінного кроку необхідно вказати точність обчислень: відносну (Relative tolerance) і абсолютну (Absolute tolerance). За згодою вони рівні і дорівнюють 10-3 чи auto.

Виконання розрахунку та завершення роботи.

Запуск розрахунку виконується за допомогою вибору пункту меню Simulation→Start або інструмента  на панелі інструментів. Процес розрахунку можна завершити достроково, вибравши пункт меню Simulation→Stop або інструмент . Розрахунок також можна призупинити (Simulation→Pause) і потім продовжити (Simulation→Continue).

Для завершення роботи необхідно зберегти модель у файлі, закрити вікно моделі, вікно оглядача бібліотек, а також основне вікно пакета MatLab.

Основні бібліотекі блоків Simulink.

1.Sources – джерела сигналів.

1.1. Джерело постійного сигналу Constant

Constant задає постійний за рівнем сигнал.

Основні параметри:

1) Constant value – постійна величина.

2) Interpret vector parameters as 1-D – інтерпретувати вектор параметрів як одномірний (при встановленому прапорці). Даний параметр зустрічається в більшості блоків бібліотеки Simulink. Надалі він розглядатися не буде.

3) Sample time – крок квантування (дискретизації). Даний параметр зустрічається в більшості блоків бібліотеки Simulink. Надалі він розглядатися не буде.

Значення константи може бути дійсним або комплексним числом, що обчислюється виразом, вектором або матрицею. Рис. 7.16 ілюструє застосування цього джерела й вимір його вихідного сигналу за допомогою цифрового індикатора Display.

Рис. 7.16. Приклад використання джерела постійного сигналу Constant та його параметри

1.2. Генератор стрибкового сигналу Step.

Step Формує стрибковий сигнал.

Основні параметри:

1) Step time – час настання перепаду сигналу (с).

2) Initial value – початкове значення сигналу.

3) Final value – кінцеве значення сигналу.

4) Sample time– крок квантування (дискретизації).

Перепад може бути як у більшу сторону (кінцеве значення більше, чим початкове), так і в меншу (кінцеве значення менше, ніж початкове). Значення початкового й кінцевого рівнів можуть бути не тільки додатними, але й від’ємними (наприклад, зміна сигналу з рівня -5 до рівня -3). На рис. 7.17 показано використання генератора стрибкового сигналу.

Рис. 7.17. Приклад використання генератора стрибкового сигналу Step та його параметри

1.3. Джерело лінійнонаростаючого сигналу Ramp

Формує лінійний сигнал виду y= Slope* time + Initial value

Основні параметри:

1) Slope – швидкість зміни вихідного сигналу.

2) Start time – час початку формування сигналу.

3) Initial output – початковий рівень сигналу на виході блоку.

На рис. 7.18. показано приклад використання даного блоку.

Рис. 7.18. Приклад використання джерела лінійнонаростаючого сигналу Ramp та його параметри

Параметр Slope розраховується для конкретної задачі, як тангенс кута нахилу сигналу. Нехай потрібно задати сигнал, що за 10 секунд наростає до величини 50, як показано на рис. 7.19. У цьому випадку величина Slope розраховується як .

Вигляд отриманого сигналу показаний на рис.7.19.

Рис. 7.19. Приклад створення заданого лінійнонаростаючого сигналу

1.4. Джерело сигналу часу Clock

Формує сигнал, величина якого на кожному кроці розрахунку дорівнює поточному часу моделювання.

Основні параметри:

1) Decimation – крок, з яким обновляються показання часу на зображенні джерела, якщо встановлено прапорець параметра Display time. Параметр задається як кількість кроків розрахунку. Наприклад, якщо крок розрахунку моделі у вікні діалогу Simulation parameters установлений рівним 0.01 с, а параметр Decimation блоку Clock заданий рівним 1000, то відновлення показань часу буде вироблятися кожні 10 с модельного часу.

2) Display time – відображення значення часу в блоці джерела.

На рис. 7.20 показаний приклад роботи даного джерела.

Рис. 7.20. Приклад використання джерела сигналу часу Clock та його параметри

1.5. Джерело синусоїдального сигналу Sine Wave

Формує синусоїдальний сигнал із заданою частотою, амплітудою, фазою й зсувом.

Для формування вихідного сигналу блоком можуть використовуватися два алгоритми. Вид алгоритму визначається параметром Sine Type (спосіб формування сигналу):

  •  Time-based – за поточним часом.
  •  Sample-based – по величині кроку модельного часу.

При формуванні вихідного сигналу за поточним часом Time-based сигнал джерела для безперервних систем формується за виразом

y = Amplitude* sin(Frequency*(Sample time) + Phase) + Bias

де Amplitude – амплітуда.

Bias – постійна складова сигналу.

Frequency (rads/sec) – частота (рад/с).

Phase (rads) – початкова фаза (рад).

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

При формуванні вихідного сигналу за поточним часом Time-based сигнал джерела для дискретних систем формується за таким виразом (у матричній формі)

де  ∆t – постійна величина, рівна значенню Sample time.

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

Формування вихідного сигналу по величині модельного часу Sample-based й кількості розрахункових кроків на один період формується за виразом

y= Amplitude* sin[(k + Number of offset samples)/Samples per period] + Bias

де  k – номер поточного кроку розрахунку.

Amplitude – амплітуда.

Bias – постійна складова сигналу.

Samples per period – кількість розрахункових кроків на один період синусоїдального сигналу:

Samples per period = 2π / (Frequency* Sample time).

Number of offset samples – початкова фаза сигналу, яка задається кількістю кроків модельного часу:

Number of offset samples = Phase* Samples per period/ (2π).

Sample time – крок модельного часу.

У даному режимі помилка округлення не накопичується, оскільки Simulink починає відлік номера поточного кроку з нуля для кожного періоду. На рис. 7.21 показане застосування блоку. Для відображення графіків вихідних сигналів у моделі використаний віртуальний осцилограф Scope.

Рис. 7.21. Приклад використання джерела синусоїдально сигналу Sine Wave та його параметри

1.6. Блок вхідного порту In

Створює вхідний порт для підсистеми або моделі верхнього рівня ієрархії.

Основні параметри:

1) Port number – номер порту.

2) Port dimensions – розмірність вхідного сигналу. Якщо цей параметр дорівнює -1, то розмірність вхідного сигналу буде визначатися автоматично.

3) Sample time – крок модельного часу.

4) Data type – тип даних вхідного сигналу: auto, double, single, int8, uint8, int16, uint16, int32, uint32 або boolean.

5) Signal type – тип вхідного сигналу:

  •  auto – автоматичне визначення типу.
  •  real – дійсний сигнал.
  •  complex – комплексний сигнал.

При використанні блоків In в підсистемі вони є її входами, тобто сигнали через них передається усередину підсистеми. Назва вхідного порту буде показано на зображенні підсистеми як мітка порту. При створенні підсистем і додаванні блоку In у підсистему Simulink використовує наступні правила:

  •  При створенні підсистеми за допомогою команди Edit→Create subsystem вхідні порти створюються й нумеруються автоматично починаючи з 1.
  •  Якщо в підсистему додається новий блок In, то йому присвоюється наступний номер.
  •  Якщо блок In вилучається, то інші порти перейменовуються таким чином, щоб послідовність номерів портів була безперервною.
  •  Якщо в послідовності номерів портів є розрив, то при виконанні моделювання Simulink видасть повідомлення про помилку й зупинить розрахунок. У цьому випадку необхідно вручну перейменувати порти таким чином, щоб послідовність номерів портів не порушувалася.

На рис. 7.22 показана модель, що використовує підсистему та вхідні порти.

 

Рис. 7.22. Приклад використання блоку вхідного сигналу In та його параметри

1.7. Джерело імпульсного сигналу Pulse Generator

Блок формує прямокутні імпульси.

Параметри:

1) Pulse Type – спосіб формування сигналу, що може приймати два значення:

  •  Time-based – за поточним часом.
  •  Sample-based – по величині модельного часу й кількості розрахункових кроків.

2) Amplitude – амплітуда.

3) Period – період, що задається в секундах для Time-based Pulse Type

або в кроках модельного часу для Sample-based Pulse Type.

4) Pulse width – ширина імпульсів, що задається в % до періоду для Time-based Pulse Type або в кроках модельного часу для Sample-based Pulse Type.

5) Phase delay – фазова затримка, що задається в секундах для Time-based Pulse Type або в кроках модельного часу для Sample-based Pulse Type.

6) Sаmple time – крок модельного часу, що задається для Sample-based Pulse Type.

Приклад використання Pulse Generator показаний на рис. 7.23.

Рис. 7.23. Джерело прямокутних імпульсів Pulse Generator та його параметри

Більш детально з іншими блоками бібліотеки Sources та їх параметрами можна ознайомитися з додаткової літератури [2].

2. Sinks – приймачі сигналів

2.1. Осцилограф Scope

Scope будує графіки досліджуваних сигналів у функції часу. Дозволяє спостерігати за змінами сигналів у процесі моделювання.

 Зображення блоку й вікно для перегляду графіків показані на рис. 7.24.

Рис. 7.24. Осцилограф Scope

Для того, щоб відкрити вікно перегляду сигналів необхідно виконати подвійне натискання лівою клавішею миші на зображенні блоку. Це можна зробити на будь-якому етапі розрахунку (як до початку розрахунку, так і після нього, а також під час розрахунку). У тому випадку, якщо на вхід блоку надходить векторний сигнал, то крива для кожного елемента вектора будується окремим кольором. Настроювання вікна осцилографа виконується за допомогою панелей інструментів (рис. 7.25.

Рис. 7.25. Панель інструментів блоку Scope

Панель інструментів містить 11 кнопок:

  1.  Print – друк вмісту вікна осцилографа.
  2.  Parameters – доступ до вікна настроювання параметрів.
  3.  Zoom – збільшення масштабу по обох осях.
  4.  Zoom X-axis – збільшення масштабу по горизонтальній осі.
  5.  Zoom Y-axis – збільшення масштабу по вертикальній осі.
  6.  Autoscale – автоматична установка масштабів по обох осях.
  7.  Save current axes settings – збереження поточних настроювань вікна.
  8.  Restore saved axes settings – установка раніше збережених настроювань вікна.
  9.  Floating scope – переключення осцилографа в “вільний” режим.
  10.  Lock/Unlock axes selection – закріпити/розірвати зв'язок між поточною координатною системою вікна й відображуваним сигналом. Інструмент доступний, якщо включено режим Floating scope.
  11.  Signal selection – вибір сигналів для відображення. Інструмент доступний, якщо включено режим Floating scope.

Зміна масштабів відображуваних графіків можна виконувати декількома способами:

1) Нажати відповідну кнопку ( ,  або ) і натиснути один раз лівою клавішею мишки у потрібнім місці графіка. Відбудеться 2,5 кратне збільшення масштабу.

2) Нажати відповідну кнопку ( ,  або ) і, натиснувши ліву клавішу мишки, за допомогою динамічної рамки або відрізка вказати область графіка для збільшеного зображення.

3) Натиснути правою клавішею миші у вікні графіків і, вибрати команду Axes properties… у контекстному меню. Відкриється вікно властивостей графіка, у якому за допомогою параметрів Y-min та Y-max можна вказати граничні значення вертикальної осі. У цьому ж вікні можна вказати заголовок графіка (Title), замінивши вираження %<SignalLabel> у рядку уведення. Вікно властивостей показане на рис. 7.26.

Рис. 7.65. Вікно властивостей графіка

Основні параметри: Параметри блоку Scope встановлюються у вікні ‘Scope’ parameters, що відкривається за допомогою інструмента  (Parameters) панелі інструментів. Вікно параметрів має дві вкладки:

1) General – загальні параметри.

2) Data history – параметри збереження сигналів у робочій області MATLAB.

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

На вкладці General задаються наступні параметри:

1) Number of axes – число входів (систем координат) осцилографа. При зміні цього параметра на зображенні блоку з'являються додаткові вхідні порти.

Рис. 7.27. Вкладка загальних параметрів General

2) Time range – величина інтервалу часу, для якого відображаються графіки. Якщо час розрахунку моделі перевищує задане параметром Time range, то вивід графіка здійснюється порціями. При цьому інтервал відображення кожної порції графіка дорівнює заданому значенню Time range.

3) Tick labels – вивід/приховання осей і міток осей. Може приймати три значення (вибираються зі списку):

  •  all – підпису для всіх осей,
  •  none – відсутність всіх осей і підписів до них,
  •  bottom axis only – підпису горизонтальної осі тільки для нижнього графіка.

4) Sampling – установка параметрів виводу графіків у вікно. Задає режим виводу розрахункових точок на екран. При виборі Decimation кратність виводу встановлюється числом, що задає крок виведених розрахункових точок. На рис. 7.28 показано графіки синусоїдальних сигналів розрахованих з фіксованим кроком 0,1 с. На рис. 7.28, а у вікні блоку Scope виводиться кожна розрахункова точка (параметр Decimation дорівнює 1). На рис. 7.28, б показаний вивід кожного другого значення (параметр Decimation дорівнює 2).

Рис. 7.28. Відображеня синусоїдального сигналу: а – параметр Decimation=1; б – параметр Decimation=2

У тому випадку, якщо режим виводу розрахункових точок задається як Sample time, те його числове значення визначає інтервал квантування при відображенні сигналу. На рис. 7.29 показаний графік синусоїдального сигналу, для випадку, коли значення параметра Sample time дорівнює 0.1.

Рис. 7.29. Відображення синусоїдального сигналу (Sample time = 0.1)

5). Floating scope – переключення осцилографа в “вільний” режим (при встановленому прапорці).

На вкладці Data history (рис. 7.30) задаються наступні параметри:

1) Limit data points to last – максимальна кількість відображуваних розрахункових точок графіка. При перевищенні цього числа початкова частина графіка обрізується. У тому випадку, якщо прапорець параметра Limit data points to last не встановлений, то Simulink автоматично збільшить значення цього параметра для відображення всіх розрахункових точок.

2) Save data to workspace – збереження значень сигналів у робочій області MatLab.

3) Variable name – ім'я змінної для збереження сигналів у робочій області MatLab.

4) Format – формат даних при збереженні в робочій області MatLab. Може приймати значення:

  •  Array – масив,
  •  Structure – структура,
  •  Structure with time – структура з додатковим полем “час”.

Рис. 7.30. Вкладка Data history

2.2. Графобудівник ХУ Graph

XY Graph Будує графік одного сигналу у функції іншого (графік виду Y(X)).

Основні параметри:

1) x-min – мінімальне значення сигналу по осі X.

2) x-max – максимальне значення сигналу по осі X.

3) y-min – мінімальне значення сигналу по осі Y.

4) y-max – максимальне значення сигналу по осі Y.

5) Sample time – крок модельного часу.

Блок має два входи. Верхній вхід призначений для подачі сигналу, що є аргументом (X), нижній – для подачі значень функції (Y). На рис. 7.31, як приклад використання графобудівника, показана побудова квадратичної функції та вікно параметрів блоку.

Рис. 7.31. Приклад використання графобудівника ХУ Graph

2.3. Цифровий дисплей Display

Display відображає значення сигналу у вигляді числа.

Основні параметри:

1) Format – формат відображення даних, що може приймати наступні значення:

  •  short – 5 значущих десяткових цифр.
  •  long – 15 значущих десяткових цифр.
  •  short_e – 5 значущих десяткових цифр і 3 символи ступеня десяти.
  •  long_e – 15 значущих десяткових цифр і 3 символи ступеня десяти.
  •  bank – "грошовий" формат з фіксованою крапкою й двома десятковими цифрами в дробовій частині числа.

2) Decimation – кратність відображення вхідного сигналу. При Decimation = 1 відображається кожне значення вхідного сигналу, при Decimation = 2 відображається кожне друге значення, при Decimation = 3 – кожне третє значення й т.д.

3) Sample time – крок модельного часу, що визначає дискретність відображення даних.

4) Floating display (прапорець) – переключення блоку в “вільний” режим. У даному режимі вхідний порт блоку відсутній, а вибір сигналу для відображення виконується натисканням лівої клавіші мишки на відповідній линії зв'язку. У цьому режимі для параметра розрахунку Signal storage reuse повинне бути встановлене значення off (вкладка Advanced у вікні діалогу Simulation parameters…).

На рис. 7.32 показане застосування блоку Display з використанням різних варіантів параметра Format.

Рис. 7.32. Застосування блоку Display з використанням різних

варіантів параметра Format

Блок Display може використовуватися для відображення не тільки скалярних сигналів, але також векторних, матричних і комплексних. Рис. 7.33 ілюструє це. Якщо всі відображувані значення не можуть поміститися у вікні блоку, у правому нижньому куті блоку з'являється символ , що вказує на необхідність збільшити розміри блоку (див. блок Display3 на рис. 7.33).

Рис. 7.33. Застосування блоку Display для відображення векторних, матричних і комплексних сигналів

2.4. Блок зупинки моделювання Stop Simulation

Stop Simulation забезпечує завершення розрахунку, якщо вхідний сигнал блоку стає не рівним нулю.

Параметри: Немає.

При подачі на вхід блоку ненульового сигналу Simulink виконує поточний крок розрахунку, а потім зупиняє моделювання. Якщо на вхід блоку поданий векторний сигнал, то для зупинки розрахунку досить, щоб один елемент вектора став ненульовим. На рис. 7.34 показаний приклад використання даного блоку. У прикладі зупинка розрахунку відбувається, якщо вихідний сигнал блоку Ramp стає більшим або рівним 50.

Рис. 7.34. Застосування блоку Stop Simulation

2.5. Блок збереження даних у робочій області То Workspace

Блок записує у робочу область MatLab дані, що надходять на його вхід.

Основні параметри:

1) Variable name – ім'я змінної, в якій зберігаються записувані дані.

2) Limit data points to last – максимальна кількість розрахункових точок за часом, що зберігаються (відлік ведеться від моменту завершення моделювання). У тому випадку, якщо значення параметра Limit data points to last задано як inf, то в робочій області будуть збережені всі дані.

3) Decimation – кратність запису даних у робочу область.

4) Sample time – крок модельного часу, що визначає дискретність запису даних.

5) Save format – формат збереження даних, який може приймати значення:

  •  Matrix – матриця. Дані зберігаються як масив, у якому число рядків визначається числом розрахункових точок за часом, а число стовпців – розмірністю вектора подаваного на вхід блоку. Якщо на вхід подається скалярний сигнал, то матриця буде містити лише один стовпець.
  •  Structure – структура. Дані зберігаються у вигляді структури, що має три поля: time – час, signals – збережені значення сигналів, blockName – ім'я моделі й блоку To Workspace. Поле time для даного формату залишається не заповненим.
  •  Structure with Time – структура з додатковим полем „час”. Для даного формату, на відміну від попереднього, поле time заповнюється значеннями часу.

На рис. 7.35 показаний приклад використання даного блоку та його параметри. Результати розрахунку зберігаються в змінній simout. Для зчитування даних збережених у робочій області MatLab можна використовувати блок From Workspace бібліотеки Sources.

Рис. 7.35. Застосування блоку To Workspace

2.6. Кінцевий приймач Terminator

Блок використовується для подачі сигналу з невикористовуваного виходу іншого блоку.

Параметри: Немає.

У тому випадку, якщо вихід якого-небудь блоку виявляється не підключеним до входу іншого блоку, Simulink видає попереджуюче повідомлення в командному вікні MatLab. Для виключення цього необхідно використовувати блок Terminator. На рис. 7.36 показаний приклад використання кінцевого приймача. У блоці Demux другий елемент не використовується, тому він подається на вхід блоку Terminator.

Рис. 7.36. Застосування блоку Terminator

2.7. Блок вихідного порту Out

Out cтворює вихідний порт для підсистеми або для моделі верхнього рівня ієрархії.

Параметри:

1) Port number – номер порту.

2) Output when disabled – вид сигналу на виході підсистеми, у випадку якщо підсистема виключена. Використовується для керованих підсистем. Може приймати наступні значення (вибираються зі списку):

  •  held – вихідний сигнал підсистеми дорівнює останньому розрахованому значенню.
  •  reset – вихідний сигнал підсистеми дорівнює значенню заданому параметром Initial output.
  1.  Initial output – значення сигналу на виході підсистеми до початку її роботи й у випадку, якщо підсистема виключена. Використовується для керованих підсистем.

При використанні блоків Out у підсистемі вони є її виходами, тобто сигнали із підсистеми передаються в модель (або підсистему) верхнього рівня. Назва вихідного порту буде показано на зображенні підсистеми як мітка порту.

При створенні підсистем і додаванні блоку Out у підсистему Simulink використовує наступні правила:

1) При створенні підсистеми за допомогою команди Edit→Create subsystem вихідні порти створюються й нумеруються автоматично починаючи з 1.

2) Якщо в підсистему додається новий блок Out, то йому присвоюється наступний номер.

3) Якщо блок Out вилучається, то інші порти перейменовуються таким чином, щоб послідовність номерів портів була безперервною.

4) Якщо в послідовності номерів портів є розрив, то при виконанні моделювання Simulink видасть повідомлення про помилку й зупинить розрахунок. У цьому випадку необхідно вручну перейменувати порти таким чином, щоб послідовність номерів портів не порушувалася.

На рис. 7.37 показана модель, що використовує підсистему, схема цієї підсистеми та параметри блоку.

Рис. 7.37. Використання блоку Outport у підсистемі

3. Continuous – аналогові блоки

3.1.  Блок обчислення похідної Derivative

Derivative виконує числове диференціювання вхідного сигналу.

Параметри: Немає.

Для обчислення похідної використовується наближена формула Ейлера

де  ∆u – величина зміни вхідного сигналу за час ∆t.

 ∆t – поточне значення кроку модельного часу.

Значення вхідного сигналу блоку до початку розрахунку вважається рівним нулю. Початкове значення вихідного сигналу також покладається рівним нулю. Точність обчислення похідної істотно залежить від величини встановленого кроку розрахунку. Вибір меншого кроку розрахунку поліпшує точність обчислення.

На рис. 7.38 показаний приклад використання блоку, для обчислення похідної прямокутного сигналу. У розглянутому прикладі, для підвищення наочності, крок розрахунку обраний досить великим.

Рис. 7.38. Використання блоку Derivative для диференціювання сигналу

Даний блок використовується для диференціювання аналогових сигналів. При диференціюванні дискретного сигналу за допомогою блоку Derivative його вихідний сигнал буде являти собою послідовність імпульсів відповідним моментам часу стрибкоподібної зміни дискретного сигналу.

3.2. Інтегруючий блок lntegrator

Блок виконує інтегрування вхідного сигналу.

Основні параметри:

1) External reset – зовнішнє скидання. Тип зовнішнього керуючого сигналу, що забезпечує скидання інтегратора до початкового стану. Вибирається зі списку:

  •  none – немає (скидання не виконується).
  •  rising – наростаючий сигнал (передній фронт сигналу).
  •  falling – спадаючий сигнал (задній фронт сигналу).
  •  either – наростаючий або спадаючий сигнал.
  •  level – не нульовий сигнал (скидання виконується, якщо сигнал на керуючому вході стає не рівним нулю).

У тому випадку, якщо обрано який-небудь (але не none), тип керуючого сигналу, то на зображенні блоку з'являється додатковий керуючий вхід. Поруч із додатковим входом буде показана умовна позначка керуючого сигналу.

2) Initial condition source – джерело початкового значення вихідного сигналу. Вибирається зі списку:

  •  internal – внутрішній.
  •  external – зовнішній. У цьому випадку на зображенні блоку з'являється додатковий вхід, позначений x0, на який необхідно подати сигнал, що задає початкове значення вихідного сигналу інтегратора.

3) Initial condition – початкова умова. Установка початкового значення вихідного сигналу інтегратора. Параметр доступний, якщо обрано внутрішнє джерело початкового значення вихідного сигналу.

4) Limit output (прапорець) – використання обмеження вихідного сигналу.

5) Upper saturation limit – верхній рівень обмеження вихідного сигналу. Може бути заданий як числом, так і символьною послідовністю inf, тобто +∞.

6) Lower saturation limit – нижній рівень обмеження вихідного сигналу. Може бути заданий як числом, так і символьною послідовністю inf, тобто - ∞.

7) Show saturation port – керує відображенням вихідного порту при виході інтегратора на обмеження. Вихідний сигнал даного порту може приймати наступні значення:

  •  Нуль, якщо інтегратор не перебуває на обмеженні.
  •  +1, якщо вихідний сигнал інтегратора досяг верхнього обмежуючої межі.
  •  -1, якщо вихідний сигнал інтегратора досяг нижнього обмежуючої межі.

8) Show state port (прапорець) – відобразити/сховати порт стану блоку. Даний порт використовується в тому випадку, якщо вихідний сигнал інтегратора потрібно подати як сигнал зворотного зв'язка цього ж інтегратора. На приклад, при установці початкових умов через зовнішній порт або при скиданні інтегратора через порт скидання. Вихідний сигнал із цього порту може використовуватися також для організації взаємодії з керованою підсистемою.

9) Absolute tolerance – абсолютна погрішність.

На рис. 7.39 показаний приклад роботи інтегратора при подачі на його вхід стрибкового сигналу. Початкова умова прийнята рівна нулю.

Приклад на рис. 7.40 відрізняється від попереднього подачею початкового значення через зовнішній порт. Початкове значення вихідного сигналу в даному прикладі задано рівним -10.


Рис. 7.39. Приклад застосування блоку Integrator та вікно його параметрів

Рис. 7.40. Інтегрування стрибкового сигналу з установкою початкового значення вихідного сигналу

4. Discontiniuties – нелінійні блоки

4.1. Блок обмеження Saturation

Блок виконує обмеження величини сигналу.

Параметри:

1) Upper limit – верхній поріг обмеження.

2) Lower limit – нижній поріг обмеження.

3) Treat as gain when linearizing (прапорець) – трактувати як підсилювач із коефіцієнтом передачі рівним 1 при лінеаризації.

Вихідний сигнал блоку дорівнює вхідному, якщо його величина не виходить за поріг обмеження. По досягненні вхідним сигналом рівня обмеження вихідний сигнал блоку перестає змінюватися й залишається рівним порогу. На рис. 7.41 показаний приклад використання блоку для обмеження синусоїдального сигналу. На малюнку приводяться часові діаграми сигналів і залежність вихідного сигналу блоку від вхідного.

Рис. 7.41. Приклад використання блоку Saturation та його параметри

4.2. Релейний блок Relay

Блок реалізує релейну нелінійність.

Основні параметри:

  1.  Switch on point – поріг включення. Значення, при якому відбувається включення реле.
  2.  Switch off point – поріг вимикання. Значення, при якому відбувається вимикання реле.
  3.  Output when on – величина вихідного сигналу у включеному стані.
  4.  Output when off – величина вихідного сигналу у виключеному стані.

Вихідний сигнал блоку може приймати два значення. Одне з них відповідає включеному стану реле, друге – виключеному. Перехід одного стану в інше відбувається стрибком при досягненні вхідним сигналом порога включення або вимикання реле. У тому випадку, якщо пороги включення й вимикання реле мають різні значення, то блок реалізує релейну характеристику з гістерезисом. При цьому значення порога включення повинне бути більше, ніж значення порога вимикання.

На рис. 7.42 показаний приклад використання блоку Relay. На часових діаграмах видно, що включення реле відбувається при досягненні вхідним сигналом величини 0,5, а вимикання при -0,5.

Рис. 7.42. Приклад використання блоку Relay та його параметри

5. Signal Routing – маршрутизатори сигналів

5.1. Мультиплексор (змішувач) Mux

Блок поєднує вхідні сигнали у вектор.

Параметри:

  1.  Number of Inputs – кількість входів.
  2.  Display option – спосіб відображення. Вибирається зі списку:
  •  bar – вертикальний вузький прямокутник чорного кольору.
  •  signals – прямокутник з білим фоном і відображенням міток вхідних сигналів.
  •  none – прямокутник з білим фоном без відображення міток вхідних сигналів.

Вхідні сигнали блоку можуть бути скалярними й (або) векторними. Якщо серед вхідних сигналів є вектори, то кількість входів можна задавати як вектор із вказівкою числа елементів кожного вектора. Наприклад, вираз [2 3 1] визначає три вхідних сигнали, перший сигнал – вектор із двох елементів, другий сигнал – вектор із трьох елементів, і останній сигнал – скаляр. У тому випадку, якщо розмірність вхідного вектора не збігається із зазначеної в параметрі Number of Inputs, то після початку розрахунку Simulink видасть повідомлення про помилку. Розмірність вхідного вектора можна задавати як -1 (мінус один). У цьому випадку розмірність вхідного вектора може бути будь-якою. Параметр Number of Inputs можна задавати також у вигляді списку міток сигналів, наприклад: Vector1, Vector2, Scalar. У цьому випадку мітки сигналів будуть відображатися поруч із відповідними сполучними лініями. Сигнали, що подаються на входи блоку повинні бути одного типу (дійсного або комплексного).

Приклади використання блоку Mux показані на рис. 7.43.

Рис. 7.43. Приклади використання блоку Mux та його параметри

5.2. Демультиплексор (роздільник) Demux

Demux розділяє вхідний векторний сигнал на окремі складові.

Параметри:

  1.  Number of Outputs – кількість виходів.
  2.  Bus Selection Mode (прапорець) – режим поділу векторних сигналів.

Вхідним сигналами у звичайному режимі є вектор, сформований будь-яким способом. Вихідними сигналами є скаляри або вектори, кількість яких і розмірність визначається параметром Number of Outputs і розмірністю вхідного вектора. Якщо кількість виходів P (значення параметра Number of Outputs) дорівнює розмірності вхідного сигналу N, то блок виконує поділ вхідного вектора на окремі елементи. Якщо кількість виходів P менше, ніж розмірність вхідного сигналу N, то розмірність перших P-1 вихідних сигналів дорівнює відношенню N/P, округленому до найближчого більшого числа, а розмірність останнього вихідного сигналу дорівнює різниці між розмірністю вхідного сигналу й сумою розмірностей перших P-1 виходів. Наприклад, якщо розмірність вхідного сигналу дорівнює 8, а кількість виходів дорівнює 3, то перші два вихідних вектори будуть мати розмірність ceil(8/3)=3, а останній вихідний вектор буде мати розмірність 8-(3+3)=2. Параметр Number of Outputs може бути заданий також за допомогою вектора, що визначає розмірність кожного вихідного сигналу. Наприклад, вираз [2 3 1] визначає три вихідних сигнали, перший сигнал – вектор із двох елементів, другий сигнал –вектор із трьох елементів, і останній сигнал – скаляр. Розмірність можна також задавати як -1 (мінус один). У цьому випадку розмірність відповідного вихідного сигналу визначається як різниця між розмірністю вхідного вектора й сумою розмірностей заданих вихідних сигналів. Наприклад, якщо розмірність вхідного вектора дорівнює 6, а параметр Number of Outputs заданий вираженням [1 -1 3], то другий вихідний сигнал буде мати розмірність 6-(3+1)=2.

Приклади використання блоку Demux показані на рис. 7.44.

Рис. 7.44. Приклади використання блоку Demux та його параметри

5.3. Блок перемикача Switch

Switch виконує перемикання вхідних сигналів по сигналу керування.

Параметри: Threshold – поріг керуючого сигналу.

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

На рис. 7.45 показаний приклад роботи блоку Switch, коли сигнал на керуючому вході ключа дорівнює 1, то на вихід блоку проходить гармонійний сигнал. Якщо ж керуючий сигнал дорівнює нулю, то на вихід проходить нульовий сигнал від блоку Constant. Граничне значення керуючого сигналу задано рівним 0,5.

Рис. 7.45. Застосування перемикача Switch та його параметри

5.4. Блок ручного перемикача Manual Switch

Блок виконує перемикання вхідних сигналів по команді користувача.

Параметри: Немає.

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

На рис. 7.46 показаний приклад використання блоку Manual Switch.

Рис. 7.46. Приклад використання блоку Manual Switch

6. Math Operations – блоки математичних операцій

6.1. Abs – блок обчислення модуля

Блок виконує обчислення абсолютного значення величини сигналу.

Параметри: Saturate on integer overflow (прапорець) – подавляти переповнення цілого. При встановленому прапорці обмеження сигналів цілого типу виконується коректно.

Приклад використання блоку Abs, що обчислює модуль поточного значення синусоїдального сигналу, показаний на рис. 7.47.

Рис. 7.47. Приклад використання блоку Abs

6.2. Блок обчислення суми Sum

Блок виконує обчислення суми поточних значень сигналів.

Параметри:

  1.  Icon shape – форма блоку, що вибирається зі списку:
  •  round – окружність.
  •  rectangular – прямокутник.
  1.  List of sign – список знаків. У списку можна використовувати наступні знаки: + (плюс), - (мінус) та | (роздільник знаків).
  2.  Saturate on integer overflow (прапорець) – подавляти переповнення цілого. При встановленому прапорці обмеження сигналів цілого типу виконується коректно.

Кількість входів і операція (додавання або віднімання) визначається списком знаків параметра List of sign. При цьому мітки входів позначаються відповідними знаками. У параметрі List of sign можна також указати число входів блоку. У цьому випадку всі входи будуть підсумовуючими. Якщо кількість входів блоку перевищує 3, то зручніше використовувати блок Sum прямокутної форми. Блок може використовуватися для підсумовування скалярних, векторних або матричних сигналів. Типи сигналів суми повинні збігатися. Не можна, наприклад, подати на той самий підсумовуючий блок сигнали цілого й дійсного типів. Якщо кількість входів блоку більше, ніж один, то блок виконує поелементні операції над векторними й матричними сигналами. При цьому кількість елементів у матриці або векторі повинне бути однаковим. Якщо в якості списку знаків указати цифру 1 (один вхід), то блок можна використовувати для визначення суми елементів вектора.

Приклади використання блоку Sum показані на 7.48.

Рис. 7.48. Приклади використання блоку Sum та його параметри

6.3. Блок множення Product

Блок виконує обчислення добутку поточних значень сигналів.

Параметри:

  1.  Number of inputs – кількість входів, що може задаватися як число або як список знаків. У списку знаків можна використовувати знаки * (помножити) та  / (розділити).
  2.  Multiplication – спосіб виконання операції, що може приймати значення (зі списку):
  •  Element-wise – поелементний.
  •  Matrix – матричний.
  1.  Saturate on integer overflow (прапорець) – подавляти переповнення цілого. При встановленому прапорці обмеження сигналів цілого типу виконується коректно.

Якщо параметр Number of inputs заданий списком, що включає крім знаків множення також знаки ділення, то мітки входів будуть позначені символами відповідних операцій. Блок може використовуватися для операцій множення або розподілу скалярних векторних або матричних сигналів. Типи вхідних сигналів блоку повинні збігатися. Якщо як кількість входів указати цифру 1 (один вхід), то блок можна використовувати для визначення добутку елементів вектора.

Приклади використання блоку Product при виконанні скалярних і поелементних операцій показані на 7.49.

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

Рис. 7.49. Приклади використання блоку Product та його параметри

6.4. Підсилювач Gain

Блок виконуює множення вхідного сигналу на постійний коефіцієнт.

Параметри:

  1.  Gain – коефіцієнт підсилення.
  2.  Multiplication – спосіб виконання операції, що може приймати значення (зі списку):
  3.  Element-wise K* u – поелементний.
  4.  Matrix K*u – матричний. Коефіцієнт підсилення є лівостороннім операндом.
  5.  Matrix u*K – матричний. Коефіцієнт підсилення є правостороннім операндом.
  6.  Saturate on integer overflow (прапорець) – подавляти переповнення цілого. При встановленому прапорці обмеження сигналів цілого типу виконується коректно.

Параметр Multiplication блоку Gain може бути додатним або від’ємним числом, як більше, так і менше 1. Коефіцієнт підсилення можна задавати у вигляді скаляра, матриці або вектора, а також у вигляді виразу, що обчислюється. У тому випадку, якщо параметр Multiplication заданий як Element-wise K*u, то блок виконує операцію множення на заданий коефіцієнт скалярного сигналу або кожного елемента векторного сигналу. У противному випадку блок виконує операцію матричного множення сигналу на коефіцієнт заданий матрицею. За згодою коефіцієнт підсилення є дійсним числом типу double. Для операції поелементного підсилення вхідний сигнал може бути скалярного, векторного або будь-якого матричного типу, за винятком логічного (boolean). Елементи вектора повинні мати однаковий тип сигналу. Вихідний сигнал блоку буде мати той же самий тип, що й вхідний сигнал. Параметр блоку Gain може бути скаляром, вектором або матрицею будь-якого типу, за винятком логічного (boolean). При обчисленні вихідного сигналу блок Gain використовує наступні правила:

  •  Якщо вхідний сигнал дійсного типу, а коефіцієнт підсилення комплексний, то вихідний сигнал буде комплексним.
  •  Якщо тип вхідного сигналу відрізняється від типу коефіцієнта підсилення, то Simulink намагається виконати приведення типу коефіцієнта підсилення до типу вхідного сигналу. У тому випадку, якщо таке приведення неможливо, то розрахунок буде зупинений з виводом повідомлення про помилку. Така ситуація може виникнути, наприклад, якщо вхідний сигнал є беззнакове ціле (uint8), а параметр Gain заданий відємним числом.

Приклади використання блоку Gain при виконанні скалярних і поелементних операцій показані на 7.50.

Рис. 7.50. Приклади використання блоку Gain та його параметри

6.5. Блок обчислення математичних функцій Math Function

Блок виконує обчислення математичної функції.

Параметри:

  1.  Function – вид функції (вибирається зі списку):

exp – експонентна функція.

log – функція натурального логарифма.

10^u – обчислення ступеня 10.

log10 – функції логарифма.

magnitude^2 – обчислення квадрата модуля вхідного сигналу.

square – обчислення квадрата вхідного сигналу.

sqrt – квадратний корінь.

pow – введення в ступінь.

conj – обчислення комплексно-спряженого числа.

reciprocal – обчислення частки від ділення вхідного сигналу на 1.

hypot – обчислення кореня квадратного із суми квадратів вхідних сигналів (гіпотенузи прямокутного трикутника за значеннями катетів).

rem – функція, що обчислює залишок від ділення першого вхідного сигналу на другий.

mod – функція, що обчислює залишок від ділення з урахуванням знака.

transpose – транспонування матриці.

hermitian – обчислення ермітової матриці.

  1.  Output signal type – тип вихідного сигналу (вибирається зі списку):

auto – автоматичне визначення типу.

real – дійсний сигнал.

complex – комплексний сигнал.

Тип вихідного сигналу залежить від типу вхідного сигналу  й параметра блоку Output signal type.

Приклади використання блоку Math Function та його параметри показані на рис. 7.51.

Рис. 7.51. Приклади використання блоку Math Function та його параметри

6.6. Блок обчислення тригонометричних функцій Trigonometric Function

Блок виконує обчислення тригонометричної функції.

Параметри:

  1.  Function – вид функції (вибирається зі списку): sin, cos, tan, asin, acos, atan, atan2, sinh, cosh і tanh.
  2.  Output signal type – тип вихідного сигналу (вибирається зі списку):
  •  auto – автоматичне визначення типу.
  •  real – дійсний сигнал.
  •  complex – комплексний сигнал.

При векторному або матричному вхідному сигналі блок виконує поелементне обчислення заданої функції.

Приклади використання блоку Trigonometric Function та його параметри показані на рис. 7.52.

Рис. 7.52. Приклади використання блоку Trigonometric Function та його параметри

6.7. Блок визначення мінімального або максимального значення MinMax

Блок визначає максимальне або мінімальне значення із всіх сигналів, що надходять на його входи.

Параметри:

  1.  Function – вихідний параметр. Вибирається зі списку:
  •  min – мінімальне значення.
  •  max – максимальне значення.
  1.  Number of input ports – кількість вхідних портів.

Вхідні сигнали блоку можуть бути скалярними або векторними. Блок визначає максимальне або мінімальне значення із всіх скалярних сигналів, що надходять на його входи. Якщо вхідні сигнали є векторними, то блок виконує поелементну операцію пошуку мінімального або максимального значення. У цьому випадку розмірності векторів повинні збігатися. Якщо кількість вхідних портів блоку задано рівним 1, то блок може використовуватися для знаходження мінімального або максимального значення у вхідному векторі.

Приклади використання блоку MinMax та його параметри показані на рис. 7.53.

Рис. 7.54. Приклади використання блоку MinMax та його параметри

У даному розділі розглянуті тільки бібліотекі та їх блоки, необхідні для початкового рівня користування Simulink. Більш детально з іншими бібліотеками Simulink та їх параметрами можна ознайомитися з додаткової літератури [2].