36991

Основи роботи в середовищі MATLAB

Лабораторная работа

Информатика, кибернетика и программирование

Важливу роль у MTLB відіграють спеціалізовані групи програм пакети – так звані Toolbox в яких зібрані функції для розв’язування окремих класів задач наприклад PDE Toolbox Spline Toolbox та інші. Введення кожної команди виразу або функції повинно завершуватись натисненням клавіші Enter в результаті чого в командному вікні нижче введеної команди виводиться результат її виконання або інші повідомлення системи наприклад повідомлення про помилку. Вбудовані елементарні математичні функції В середовищі MTLB існує досить велика кількість...

Украинкский

2013-09-23

255 KB

19 чел.

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

Основи роботи в середовищі MATLAB

MATLAB – це математичний пакет прикладних програм, заснований на використанні матриць. Назва пакету є абревіатурою двох слів MATrix LABoratory (МАТрична ЛАБораторія). MATLAB містить велику кількість спеціалізованих програм (функцій), має власну мову програмування високого рівня, а також надає потужні можливості візуального подання двовимірних та тривимірних даних. Важливу роль у MATLAB відіграють спеціалізовані групи програм (пакети) – так звані Toolbox, в яких зібрані функції для розв’язування окремих класів задач, наприклад, PDE Toolbox, Spline Toolbox та інші.

Пакет MATLAB розвивається протягом кількох десятків років, орієнтуючись на різних користувачів. Сьогодні в університетському середовищі розвинених країн світу ця система є стандартним інструментом для навчання основам чисельних методів, а також проведення наукових досліджень у різних галузях прикладної математики. Використання MATLAB при розв’язуванні прикладних задач дає змогу повністю позбавитись необхідності виконання рутинних обчислень і зосередитись на особливостях задачі, візуалізації результатів і т.д.

Робоче середовище MATLAB

Робоче середовище MATLAB включає в себе: головне меню, панель інструментів, статусний рядок, а також 5 спеціалізованих вікон:

  •  командне вікно (Command Window) – містить командний рядок, який розпочинається зі знака запрошення >> і призначений для введення користувачем математичних виразів, команд, а також виклику функцій. Введення кожної команди, виразу або функції повинно завершуватись натисненням клавіші <Enter>, в результаті чого в командному вікні нижче введеної команди виводиться результат її виконання або інші повідомлення системи (наприклад, повідомлення про помилку). Якщо немає потреби одразу після виконання команди виводити її результат на екран, то в кінці команди у командному рядку треба поставити крапку з комою (;);
  •  вікно робочої області (Workspace) – відображає всі змінні, що були створені в процесі роботи з поточної сесією MATLAB;
  •  вікно поточного каталогу (Current Directory) – дозволяє змінити поточний каталог та переглянути його вміст; всі файли, що зберігаються або відкриваються користувачем, по замовчуванню містяться у поточному каталозі, яким на початку є підкаталог work основного каталогу MATLAB;
  •  вікно історії команд (Command History) – зберігає всі команди, які були введені в командному рядку; таким чином, команду, яка вже виконувалась раніше, можна віднайти у історії команд та повторити її;
  •  вікно панелі запуску (Launch Pad) – надає ще один спосіб доступу до встановлених на комп’ютері прикладних пакетів, що входять до складу MATLAB; аналогічний доступ можна отримати, натиснувши на кнопку Start, розташовану в лівому нижньому куті вікна MATLAB.

Арифметичні операції

В середовищі MATLAB визначені такі арифметичні операції:

  1.  піднесення до степеня  ^;
    1.  множення  *,  ділення  /;
    2.  додавання  +, віднімання  .

Тут операції наведені в порядку спадання пріоритету їх виконання при обчисленні виразів. Для зміни порядку виконання арифметичних операторів необхідно використовувати круглі дужки ().

Арифметичні вирази в MATLAB, як правило, формуються з операторів, констант (або чисел), змінних та функцій.

Змінні та константи

Числа в MATLAB можуть бути: цілими чи дробовими, дійсними (з фіксованою або плаваючою крапкою) чи комплексними, додатними чи від’ємними. Наприклад: 25 – ціле число; 2/3 – дробове число (); 0.17 – дійсне число з фіксованою крапкою (); 1.7e-1 – дійсне число з плаваючою крапкою (); 4.8+0.6i – комплексне число (); 9.3 (або +9.3)– додатне число; -6.57 – від’ємне число.

В середовищі MATLAB визначені декілька спеціальних констант – сталих чисельних значень, що позначаються унікальним ідентифікатором та мають математичний смисл:

pi – число ;

inf – нескінченність ; 

NaN – дані нечислового типу (Not a Number);

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

realmin – мінімальне дійсне додатне число;

realmax – максимальне дійсне додатне число.

Всі ці константи можна використовувати при обчисленні виразів.

Змінні в MATLAB характеризуються іменем, яке також називають ідентифікатором, та значенням. В MATLAB кількість символів в імені змінної обмежена і дорівнює 31. Ідентифікатор повинен починатися з букви та може містити букви, цифри й деякі інші допустимі символи (окрім пробілу). Великі та малі літери в іменах змінних, функцій та команд розрізняються, наприклад, y і Y є двома різними змінними.

Щоб присвоїти змінній деяке значення, використовується знак = (оператор присвоювання). Так, наприклад, для того, щоб змінна a набула значення 4,75, достатньо записати в командному рядку a=4.75, при цьому MATLAB одразу виведе в командному вікні значення a:

>> a=4.75

a =

   4.7500

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

>> b=-1.53;

в командному вікні не буде виведене значення змінної b, а з’явиться порожній командний рядок. В подальшому переглянути значення змінної b можна у вікні робочої області (Workspace), або ввівши в командному рядку її ім’я і натиснувши клавішу <Enter>:

>> b

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

b =

  -1.5300

Слід відмітити, що в одному командному рядку можуть бути записані одразу декілька команд, розділених комою (,) або крапкою з комою (;). Введення команд через кому еквівалентне їх послідовному виконанню в командному рядку з відображенням результатів на екрані, тоді як при записі їх через крапку з комою виведення результатів не здійснюється.

Змінній окрім сталого числового значення можна присвоїти значення виразу, записавши в командному рядку

>> ім’я змінної = вираз

При цьому вираз може містити інші змінні, яким попередньо необхідно присвоїти значення.

Зауважимо, що при відсутності імені змінної в лівій частині та знаку = автоматично створюється змінна ans (скорочено від англ. answer), якій присвоюється результат обчислення виразу.

Приклад 1. Обчислити в MATLAB значення виразу  при :

>> x=1.03;

>> 4^3+7*x*(5.2-1/3)

ans =

  99.0887

По замовчуванню результати обчислень виводяться у командне вікно з чотирма знаками після десяткової крапки. Щоб змінити формат виведення, використовують команду format (табл. 1).

Таблиця 1

Формати подання даних в пакеті MATLAB

Команда

Опис формату подання числа

format short

з фіксованою крапкою та 4 знаками після крапки (встановлений по замовчуванню)

format long

з фіксованою крапкою та 14 знаками після крапки

format short e

з плаваючою крапкою та 4 десятковими знаками

Продовження таблиці 1

format long e

з плаваючою крапкою та 15 десятковими знаками

format short g

з фіксованою крапкою та 3 знаками після крапки

format long g

з фіксованою крапкою та 13 знаками після крапки

format rat

у вигляді звичайних дробів

format hex

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

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

Вбудовані елементарні математичні функції

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

Серед елементарних математичних функцій системи MATLAB можна виділити наступні:

  •  алгебраїчні та арифметичні функції

abs(x) – абсолютне значення (модуль) x; 

exp(x) – експоненціальна функція ; 

log(x), log10(x), log2(x) – натуральний, десятковий та двійковий логарифми;

pow2(x) – піднесення числа 2 до степеня x;

sqrt(x) – квадратний корінь з x;

  •  тригонометричні та обернені до них функції

sin(x), cos(x), tan(x), cot(x) – синус, косинус, тангенс, котангенс;

sec(x), csc(x) – секанс (), косеканс ();

asin(x), acos(x), atan(x), acot(x) – арксинус, арккосинус, арктангенс, арккотангенс;

asec(x), acsc(x) – арксеканс, арккосеканс. 

Аргументи тригонометричних функцій повинні бути задані в радіанах. Обернені тригонометричні функції повертають результат також в радіанах.

  •  гіперболічні та обернені до них функції

sinh(x), cosh(x), tanh(x), coth(x), sech(x), csch(x) – гіперболічні синус, косинус, тангенс, котангенс, секанс, косеканс;

asinh(x), acosh(x), atanh(x), acoth(x), asech(x), acsch(x) – гіперболічні арксинус, арккосинус, арктангенс, арккотангенс, арксеканс, арккосеканс;

  •  заокруглення та залишок від ділення

ceil(x) – заокруглення до найближчого цілого, не меншого від x;

floor(x) – заокруглення до найближчого цілого, не більшого від x;

round(x) – заокруглення до найближчого цілого;

fix(x) – відкидання дробової частини;

sign(x) – знак числа x;

mod(x,y) – залишок від цілочисельного ділення x на y (зі знаком);

rem(x,y) – залишок від цілочисельного ділення x на y.

Приклад 2. Обчислити значення виразу :

>> cos(pi+sqrt(3))

ans =

   0.1606

Матриці

Всі змінні в середовищі MATLAB являють собою матриці (або масиви).  Так, скаляр (число) в MATLAB є масивом розмірності 1х1, вектор – матрицею з одним рядком або одним стовпчиком.

Матриці можна вводити безпосередньо, наприклад, у командному рядку. Для цього необхідно вказати ім’я матриці, після якого поставити оператор присвоювання та в квадратних дужках послідовно перерахувати всі її елементи. Елементи одного рядка відділяються пробілом або комою, а рядки – крапкою з комою (;). 

Приклад 3.

>> A=[1 2 3; 4 5 6; 7 8 9]

A =

    1     2     3

    4     5     6

    7     8     9

Альтернативний спосіб введення матриці полягає в натисканні клавіші <Enter> (або сполучення клавіш <Shift> + <Enter>) наприкінці кожного рядка.

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

Приклад 4.

>> x=[3 1 2 9]

x =

    3     1     2     9

>> y=[15;10]

y =

   15

   10

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

>> ім’я вектора=[початкове значення:крок:кінцеве значення]

Якщо крок дорівнює 1, то його можна не вказувати, і дана команда приймає вигляд:

>> ім’я вектора=[початкове значення:кінцеве значення]

Приклад 5. Створимо вектор-рядок  з використанням оператору двокрапки:

>> z=0:0.2:1

z =

    0    0.2000    0.4000    0.6000    0.8000    1.0000

Крок може бути і від’ємним числом, наприклад, в результаті виконання команди

>> u=[10:-2:1];

буде створений вектор .

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

Відмітимо, що з використанням оператора : можна автоматично створювати не лише вектори, а й матриці. Так, команда

>> B=[1:2:7; 8, 2:4; 12:-1:9; 14, 13, 16, 15]

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

B =

    1     3     5     7

    8     2     3     4

   12    11    10     9

   14    13    16    15

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

Таблиця 2

Функції формування спеціальних матриць

Тип матриці

Функція для створення

квадратна матриця розміру

прямокутна матриця

розміру

Матриця з нульовими елементами

zeros(n)

zeros(m,n)

Матриця з одиничними елементами

ones(n)

ones(m,n)

Одинична матриця

eye(n)

eye(m,n)

Матриця випадкових чисел, рівномірно розподілених між нулем та одиницею

rand(n)

rand(m,n)

Матриця випадкових чисел, розподілених за нормальним законом

randn(n)

randn(m,n)

Приклад 6. Створимо нульову матрицю розміром 2х4:

>> C=zeros(2,4)

C =

    0     0     0     0

    0     0     0     0

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

>> v=ones(1,5)

v =

1     1     1     1     1

Звернення до елементів векторів і матриць здійснюється за допомогою індексів. Індекси вказуються в круглих дужках після імені матриці або вектора і являють собою порядковий номер елемента (у випадку векторів) або номер рядка та стовпчика, в яких розташований елемент (у випадку матриць), до якого необхідно отримати доступ. В MATLAB нумерація елементів розпочинається з одиниці, відповідно індекси повинні бути більше або дорівнювати одиниці. Наприклад, для звернення до третього елемента деякого вектора x, необхідно записати x(3), а запис A(2,3) означає елемент, що знаходиться на перетині другого рядка та третього стовпчика матриці A. Звертатись до елементів матриць можна, використовуючи всього один індекс. В цьому випадку матриця розглядається як один вектор-стовпчик, сформований послідовно зі стовпчиків початкової матриці. Наприклад, отримати значення елементу, що знаходиться у другому рядку та третьому стовпчику матриці A, можна за допомогою команд A(2,3) або A(8).

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

>> ім’я вектора(порядковий номер елемента)

Загальний вигляд звернення до елемента матриці наступний:

>> ім’я матриці(номер рядка,номер стовпчика)

Щоб замінити значення елемента вже створеної матриці на інше, треба вказати ім’я матриці, індекси елемента в круглих дужках, оператор присвоювання та нове значення елемента. Так, команда  

>> A(3,1)=cos(pi);

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

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

При зверненні та присвоєнні деяких значень елементам матриць (векторів), в якості індексів можна використовувати вектори, діапазони або оператор :.

Наприклад, за допомогою виразу A(1:2,1:3) можна виділити підматрицю, що складається з елементів перших двох рядків та перших трьох стовпчиків матриці A з прикладу 3:

>> A(1:2,1:3)

ans =

    1     2     3

    4     5     6

Якщо при зверненні до елементів матриці замість одного з індексів вказано оператор :, то це означає що треба виділити весь рядок або стовпчик. Так, запис A(3,:)означає третій рядок матриці A:

>> A(3,:)

ans =

    7     8     9

Ще один спосіб виділення підматриць полягає у використанні векторів в якості індексів. Наприклад, щоб отримати значення елементів матриці A, що розташовані в другому рядку, в першому і третьому стовпчику, можна записати:

>> A(2,[1 3])

ans =

    4     6

Об’єднання матриць (векторів) з однаковою кількістю рядків “по горизонталі” відбувається так: [A B C]; “по вертикалі” – [ABC] (матриці A, B і C повинні мати однакову кількість стовпчиків). Зауважимо, що команди об’єднання матриць (векторів) можуть містити довільну кількість імен матриць (векторів).

Математичні операції з матрицями

Над матрицями можна виконувати ті ж самі арифметичні операції, що й над числами – додавання (+) і віднімання (), множення (*) і ділення (/), піднесення до степеня (^), – а також операцію транспонування ('). Всі ці операції виконуються одразу над цілими матрицями, тому вони називаються матричними. При застосуванні матричних операцій слід пам’ятати наступне:

  •  для додавання або віднімання матриці повинні бути однакового розміру;
  •  при множенні кількість стовпчиків першої матриці (та, що стоїть зліва від оператора *) обов’язково повинна дорівнювати кількості рядків другої матриці;
  •  операція піднесення до степеня застосовується лише для квадратних матриць.

Оскільки вектор є матрицею з одним рядком або одним стовпчиком, то всі матричні операції (крім піднесення до степеня) можна застосовувати і до  векторів. При цьому повинні виконуватись наведені вище умови.

Результатом додавання або віднімання матриць (векторів) є матриця (вектор) з елементами, рівними сумі або різниці відповідних елементів початкових матриць (векторів). Тобто операції додавання та віднімання є поелементними. Проте це не відноситься до операцій множення, ділення та піднесення до степеня. Дані операції також можна виконувати поелементно, вказавши перед ними крапку: .*, ./ та .^ (пробіл між крапкою та знаком операції ставити не потрібно). Обов’язковою умовою застосування поелементних операцій є однаковий розмір матриць (векторів).

Приклад 7. Виконаємо в MATLAB всі наведені вище операції для наступних матриць:

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

>> B=[0 -1; 5 8];

Знайдемо результати додавання, віднімання, множення та ділення матриць A і B:

>> A+B

ans =

    1     1

    8    12

>> A-B

ans =

    1     3

   -2    -4

>> A*B

ans =

   10    15

   20    29

>> A/B

ans =

 -0.4000  0.2000

  0.8000  0.6000

Операції піднесення до степеня та транспонування застосовуються до однієї матриці:

>> A^2

ans =

    7    10

   15    22

>> A'

ans =

    1     3

    2     4

Виконаємо над матрицями A і B поелементні операції множення та ділення:

>> A.*B

ans =

    0    -2

   15    32

>> B./A

ans =

        0   -0.5000

   1.6667    2.0000

Піднесення кожного елементу матриці B до степеня, що дорівнює відповідному елементу матриці A, можна виконати наступним чином:

>> B.^A

ans =

          0           1

        125        4096

Крім того, за допомогою операції .^ можна здійснити піднесення всіх елементів матриці до одного степеня. Так, команда

>> A.^2

підносить кожен елемент матриці А до квадрату (порівняйте з результатом операції A^2):

ans =

    1     4

    9    16

Поелементними є також операції додавання і віднімання, множення і ділення з матрицями (векторами) та скалярами. В такому випадку операція здійснюється між скаляром та кожним елементом матриці або вектора. Наприклад, щоб збільшити втричі всі елементи матриці А, достатньо ввести одну з наступних команд

>> A=A*3

або

>> A=3*A

Результатом виконання обох команд є матриця

A =

    3     6

    9    12

Крім виконання арифметичних операцій, до елементів матриць та векторів можна застосовувати математичні функції. Наприклад, в результаті виконання наступних команд створюється нова матриця, елементами якої є значення функції косинус від відповідних елементів матриці D:

>> D=[0 pi pi/2; 2*pi 0 pi/3];

>> cos(D)

ans =

   1.0000   -1.0000    0.0000

   1.0000    1.0000    0.5000

Графіки функцій

Середовище MATLAB має досить потужні можливості для графічного подання інформації, що надає йому особливої практичної цінності. MATLAB дозволяє будувати двовимірні та тривимірні графіки функцій, заданих в аналітичному вигляді, у вигляді векторів або матриць; надає можливість будувати діаграми, гістограми та графіки спеціальних функцій.

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

Можливими формами виклику функції plot є:

  •  plot(y) – побудова графіку залежності елементів вектора y від їх індексів;
  •  plot(x,y) – побудова графіку залежності y від x;
  •  plot(x,y,s) – побудова графіку залежності y від x зі стилем лінії (колір і тип лінії, тип маркеру), заданим аргументом s;
  •  plot(x1,y1,x2,y2,…,xn,yn) – побудова графіків декількох функцій на одних координатних осях;
  •  plot(x1,y1,s1,x2,y2,s2,…,xn,yn,sn) – побудова на одних координатних осях графіків декількох функцій з відповідними стилями ліній.

Приклад 8. Побудуємо графік функції  на відрізку :

>> x=0:0.01:10;

>> y=sin(x);

>> plot(x,y)

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

Досить часто виникає необхідність одночасної побудови декількох графіків. MATLAB надає для цього наступні можливості:

  •  виведення кожного графіку в окремому графічному вікні;
  •  виведення декількох графіків у одному вікні (на одних координатних осях);
  •  виведення декількох графіків у одному вікні (на окремих координатних осях).

Для відкриття нового порожнього графічного вікна призначена команда

>> figure

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

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

  •  з використанням команди hold on;
  •  за допомогою функції plot(x1,y1,x2,y2,…,xn,yn).

Приклад 9. Побудуємо на одному графіку функції  і  на відрізку .

Сформуємо вектори x, y та z:

>> x=0:0.01:10;

>> y=sin(x);

>> z=cos(x);

Для відображення обох графіків у одному графічному вікні виконаємо команду hold on, після чого побудуємо графіки за допомогою функції plot:

>> hold on

>> plot(x,y)

>> plot(x,z)

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

>> hold off

Альтернативний спосіб побудови двох функцій на одних координатних осях полягає у використанні команди plot з двома парами аргументів:

>> plot(x,y,x,z)

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

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

plot(x,y,'колір_стиль_маркер') 

plot(x1,y1,'колір_стиль_маркер',…,xn,yn,'колір_стиль_маркер') 

Цей аргумент заключається в апострофи та може складатися з одного, двох або трьох символів, які визначають колір, тип лінії і тип маркера (див. табл. 3).

Таблиця 3

Стилі графіків

Колір лінії

Тип лінії

Тип маркера

y

жовтий

-

суцільна

.

крапка

m

рожевий

:

пунктирна

o

круг

c

блакитний

-.

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

x

хрест

r

червоний

--

штрихова

+

знак “плюс”

g

зелений

*

зірочка

b

синій

s

квадрат

w

білий

d

ромб

k

чорний

p

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

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

subplot(m,n,p)

яка розбиває графічне вікно на матрицю з m на n підграфіків і вибирає p-й підграфік поточним. Підграфіки нумеруються послідовно зліва направо, згори вниз. Щоб додати графік функції до поточного підграфіку, треба звернутись до функції plot.

Корисною альтернативою plot є функція fplot, форма звернення до якої наступна:

fplot('fun',[a,b],n)

Тут

fun – рядкова змінна, що містить запис функції, графік якої треба побудувати, або ім’я файлу, в якому ця функція визначена;

[a,b] – інтервал побудови графіка;

n – кількість точок, за якими буде побудований графік функції (за замовчуванням n = 25).

Приклад 10. Побудуємо графік функції  на відрізку  за допомогою функції fplot:

>> fplot('sin(x)',[0,10])

Для побудови графіків тривимірних поверхонь, спочатку необхідно задати прямокутну область визначення функції за допомогою команди meshgrid, а потім скористатись командою mesh або surf для побудови поверхні.

Приклад 11. Побудуємо графік функції , де , :

>> [x,y]=meshgrid(-pi:0.1:pi,-pi:0.1:pi);

>> z=sin(cos(x+y));

>> mesh(z)

Елементи мови програмування MATLAB

Мова програмування MATLAB має декілька структур для керування потоками, аналогічні їх прототипам в інших мовах програмування:

  1.  умовний оператор – може використовуватись в одній із трьох форм:

if умова

оператори

end

if умова

оператори1

else 

оператори2

end

if умова1

оператори1

elseif умова2  

оператори2

elseif умова_n

оператори_n

else 

оператори

end

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

Таблиця 1

Оператори порівняння

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

Булеві величини

==

Дорівнює

~ (not)

Заперечення

1

True

~=

Не дорівнює

& (and)

Логічне “і”

0

False

<

Менше

| (or)

Логічне “або”

>

Більше

<=

Менше або дорівнює

>=

Більше або дорівнює

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

switch вираз

case значення1

оператори1

case {значення2,…}

оператори2

otherwise % може бути відсутнім

оператори_n

end

Примітка. В MATLAB всі символи, що розміщені після знака % вважаються коментарем.

  1.  оператор циклу for – виконує групу операторів всередині циклу фіксовану кількість разів:

for змінна циклу = початкове значення:крок:кінцеве значення

оператори

end

Якщо крок дорівнює одиниці, то його можна не вказувати:

for змінна циклу = початкове значення:кінцеве значення

оператори

end 

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

while умова

оператори

end

Оператор continue здійснює перехід до наступної ітерації в циклі for або while, пропускаючи всі команди всередині циклу, що йдуть після нього.

Команду break використовують для дострокового виходу з циклу. У вкладених циклах break виконує вихід з внутрішнього циклу.

M-файли

Більшість вбудованих функцій MATLAB зберігаються у так званих   M-файлах (файлах з розширенням .m), які містять команди мови MATLAB. Користувач може створити свою власну функцію, сформувавши для цього відповідний М-файл у редакторі M-файлів. Даний редактор викликається з головного меню MATLAB командами File  New  M-file, або з командного рядка – командою edit, після якої через пробіл можна вказати ім’я М-файлу. До створеної користувачем функції можна звертатись таким же чином, як і до вбудованих функцій.

Розрізняють два типи M-файлів: сценарії та функції.

Файли-сценарії містять послідовність команд середовища MATLAB. Можуть мати довільну назву, обов’язковим є тільки розширення .m. Викликається сценарій введенням назви імені файлу в командному рядку. Сценарії не приймають та не повертають ніяких аргументів, вони оперують існуючими змінними в робочій області (глобальними) та можуть самі створювати нові змінні, що залишаються в Workspace. Типовим випадком використання сценаріїв є запис команд у М-файл, замість їх введення у командному рядку.

Файли-функції можуть мати вхідні та вихідні аргументи. Ім’я функції та М-файлу (з розширенням .m) повинні співпадати. Змінні, що використовуються в М-функціях по замовчуванню є локальними, хоча існує можливість оголошення глобальних змінних. Структура функції має вигляд:

function [вихідні аргументи]=ім’я функції(вхідні аргументи)

% Основний коментар

% Додатковий коментар

Тіло функції (виконуваний код)

Перший рядок містить оголошення списку вихідних аргументів (записаних через кому), імені функції та вхідних аргументів (записаних через кому). Без такого рядка файл буде сприйматись як сценарій, а не як функція. Для позначення змінних можна використовувати різні літери і для назви функцій – різні імена (але назва функції та М-файлу повинні співпадати!). Оскільки всі змінні в функції є локальними, то їх імена не впливають на імена та значення змінних у робочій області.

Наступні після заголовку функції рядки, що починаються з символу %, є  коментарями. Вони надають довідкову інформацію про призначення даної функції, формати звернення до неї і т.і. Ці рядки виводяться в командне вікно після введення команди допомоги

>> help ім’я функції

Перший рядок (основний коментар) відображається також при використанні команди lookfor.

Приклад 12. Визначимо функцію f (x)=x – x2/4 в M-файлі з ім’ям f.m. В редакторі M-файлів вона записується наступним чином:

function y=f(x)

y=1+x-x.^2/4;

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

>> cos(f(3))

ans =

-0.1782

Зауважимо, що завдяки використанню поелементних операцій, вхідним аргументом функції f може бути не тільки одне число, але й вектор. Результатом обчислень в такому випадку також буде вектор:

>> x=[0 2 3];

>> f(x)

ans =

   1.0000    2.0000    1.7500

Приклад 13. Скласти в MATLAB файл-функцію для обчислення значення кусково-заданої функції:

Введемо в редакторі функцію pwf та збережемо її у M-файлі з ім’ям pwf.m:

function f=pwf(x)

if x<-1

   f=1-exp(-1-x);

elseif x<=2

   f=x.^2-x-2;

else

   f=2-x;

end

Щоб обчислити значення функції при , необхідно в командному рядку ввести:

>> pwf(0)

ans =

   -2

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

Приклад 14. Обчислити суму .

Введемо в редакторі наступні функції та збережемо їх у M-файлі з ім’ям suma.m:

function S=suma(n)

S=0;

for k=1:n

   S=S+1/fact(k);

end

function f=fact(n)

%підфункція для обчислення n!

f=1;

for i=1:n

   f=f*i;

end

Тут suma – основна функція, а fact – допоміжна підфункція, призначена для обчислення факторіалу. Звертатись до функції fact можна лише в межах М-файлу suma.m, на відміну від функції suma, яка є доступною для всіх інших функцій MATLAB.

Щоб знайти значення суми при , достатньо ввести :

>> suma(5)

ans =

   1.7167

Вхідними та вихідними аргументами функцій, окрім чисел та векторів, можуть бути також і матриці.

Приклад 15. Знайти суму та добуток всіх додатних елементів заданої матриці.  

Введемо наступну функцію в редакторі М-файлів та збережемо її у файлі з ім’ям posdob.m:

function [S,D]=posdob(A)

S=0;

D=1;

[n,m]=size(A);

for i=1:n

   for j=1:m

       if A(i,j)>0

           S=S+A(i,j);

           D=D*A(i,j);

       end

   end

end

Тут size(A) – вбудована функція для визначення розміру матриці A: n – кількість рядків, m – кількість стовпчиків. В MATLAB також є вбудована функція length(x), яка знаходить довжину вектора x.

Знайдемо суму та добуток додатних елементів матриці :

>> B=[0 -1; 5 8];

>> [S,D]=posdob(B)

S =

   13

D =

   40

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

Приклад 16. Файл-функція negsum знаходит суму всіх перших від’ємних элементів вектора.

function s=negsum(x)

s=0;

k=1;

while k<=length(x) && x(k)<0

   s=s+x(k);

   k=k+1;

end

Приклад 17. Знайти кількість одиниць та мінус одиниць в заданій матриці, а також знайти суму всіх елементів, відмінних від одиниці та мінус одиниці.

Файл-функція mpsum для заданої матриці повертає кількість мінус одиниць в першому вихідному аргументі (m), кількість одиниць – в другому (p), а суму – в третьому (s).

function [m,p,s]=mpsum(x)

m=0;

p=0;

s=0;

for i=1:length(x)

   switch x(i)

       case -1

           m=m+1;

       case 1

           p=p+1;

       otherwise

           s=s+x(i);

   end

end

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

  •  warning('Текст попереджуючого повідомлення') – виводить текст попереджуючого повідомлення у командне вікно;
  •  error('Текст повідомлення про помилку') – виводить текст повідомлення про помилку в командне вікно та коректно завершує виконання програми;
  •  disp(масив або рядок) – виведення проміжних результатів у командне вікно;
  •  змінна=input('Підказка')–введення з клавіатури значення змінної.


 

А также другие работы, которые могут Вас заинтересовать

60443. Жизнь дается человеку только один раз 36 KB
  Учитель: Как приятно на вас дети смотреть какие вы красивые словно солнышко. Что помогает вам быть такими Дети высказывают свои мысли и делают вывод что это - здоровье. Сообщение темы Психологическая установка...
60445. Найтяжчі злочини проти людства 75.5 KB
  Історія народу-бездонна, невичерпна криниця духу мудрості, перемог і страждань. Кожен народ, має власну історію. Глибоку і прозору, або замулену й прикидану.
60446. Виховання соціально-громадянської позиції молоді засобами масової інформації 31 KB
  Зараз є очевидним що дія багатьох з цих чинників в галузі формування громадянськості української молоді є стихійною не досить ефективною а часто і деструктивною. Засоби масової інформації роблять великий вплив на виховання...
60447. Використання музично-дидактичних ігор на уроках музичного мистецтва в основній школі 170.5 KB
  Найбільш ефективний розвиток дітей через ігри досягається при поєднанні ігрової діяльності з навчанням. Мета дослідження теоретичне обґрунтування та розкриття основних методів дидактичноігрової діяльності на уроках музики та в позакласних формах роботи.
60448. Знакомство со школой 30 KB
  Цель: познакомить детей с основными школьными правилами с пространством школы; дать возможность получить новые впечатления приобрести опыт общения с учителем и друг с другом; развивать положительное эмоциональное отношение к школе и обучению...
60451. Орієнтація на творчу реалізацію особистості методом проектів 81.5 KB
  Усе своє життя ми відшуковуємо та накопичуємо знання піднімаємо свій освітній рівень. При цьому знання це не тільки те що дають нам книги телебачення школа а й те що ми отримуємо та використовуємо у процесі праці та спілкування з людьми накопичуючи життєвий досвід.