Файл-функції та файл-програми

Вбудована мова програмування MatLab досить проста, вона містить необхідний мінімум конструкцій, які описані в наступному параграфі. Перш ніж програмувати в MatLab, необхідно зрозуміти, що всі програми можуть бути файл-функціями, або файл-програмами. Файл-програма є текстовим файлом із розширенням m (M-файлом), у якому записані команди та оператори MatLab. Розберемо, як створити просту файл-програму.

Листинг 5.1. Найпростіша файл-програма

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

та вибрати в меню View пункт Evaluate Selection (або натиснути ). Виділені оператори виконуються послідовно, так само, якби вони були набрані в командному рядку. Очевидно, що працювати в M-файлі зручніше, ніж із командного рядка, оскільки можна зберегти програму, додати оператори, виконувати окремі команди не пробігаючись з історії команд, як у разі командного рядка.

Після того, як програма збережена в M-файлі, наприклад в myprog.m, для її запуску можна використовувати пункт Tools меню Run або просто набрати в командному рядку ім'я M-файлу (без розширення) і натиснути , тобто виконати, як звичайну команду MatLab. При таких способах запуску програми слід врахувати важливу обставину – шлях до каталогу з M-файлом має бути відомий MatLab. Зробіть каталог із файлом myprog поточним.

У MatLab 5.3 в меню File робочого середовища перейдіть до Set Path… З'являється діалогове вікно Path Browser (навігатор шляхів). У рядку введення Current Directory встановіть потрібнийкаталог. Для вибору каталогу скористайтеся кнопкою, розташованою праворуч від рядка введення.

У MatLab 6.x установка поточного каталогу виконується з вікна Current Directory робочого середовища. Якщо це вікно відсутнє, слід вибрати пункт Current Directory меню View робочого середовища. Для вибору бажаного каталогу на диску натисніть кнопку, розташовану праворуч від списку, що розкривається.

»a = [0.1 0.4 0.3 1.9 3.3];

то файл-програма, що містить рядок bar(а), побудує стовпцеву діаграму вектораa(зрозуміло, якщо він не був перевизначений у файл-програмі).

Файл-функції відрізняються від файл-програм тим, що вони можуть мати вхідні та вихідні аргументи, а всі змінні, визначені всередині файл-функції, є локальними і не видно у робочому середовищі. M-файл, який містить файл-функцію, повинен починатися із заголовка, після нього записуються оператори MatLab. Заголовок складається зі слова function, списку вихідних аргументів, імені файл-функції та списку вхідних аргументів. Аргументи у списках поділяються комою. Лістинг 5.2 містить приклад найпростішої файл-функції з двома вхідними та одним вихідним аргументами.

Листинг 5.2. Файл-функція mysum

При виклику файл-функції mysumвідбулися такі події:

вхідний аргумент a отримав значення 2;

вхідний аргумент bстав дорівнює 3;

сума aіbзаписалася у вихідний аргументc;

Значення вихідного аргументу здобула змінна робочого середовища і результат вивівся в командне вікно.

Майже всі функції MatLab є файл-функціями і зберігаються в однойменних M-файлах. Функція sin допускає два варіанти виклику: sin (x) і y = sin (x), в першому випадку результат записується вans, а в другому - в змінну y. Наша функція mysum поводиться так само. Більш того,Вхідними аргументами можуть бути масиви однакових розмірів або масив і число.

Розберемо тепер, як створити файл-функцію з кількома аргументами. Список вихідних аргументів у заголовку файл-функції полягає у квадратних дужках, самі аргументи відокремлюються комою. Як приклад на лістингу 5.3 наведено файл-функцію quadec, яка за заданими коефіцієнтами квадратного рівняння знаходить його коріння.

Листинг 5.3. Файл-функція для розв'язання квадратного рівняння

При виклику quadeq з командного рядка використовуйте квадратні дужки для вказівки змінних, до яких будуть занесені значення коренів:

Зауважте, що файл-функцію quadecможна викликати без вихідних аргументів, або тільки з одним вихідним аргументом. У цьому випадку повернеться лише перший корінь.

Файл-функція може не мати вхідних чи вихідних аргументів, заголовки таких файл-функцій наведені ниже:

function noout(a,b), function [v,u]=noin, function noarg()

Вміння писати власні файл-функції та файл-програми необхідне як при програмуванні в MatLab, так і при вирішенні різних завдань засобами MatLab (зокрема пошуку коренів рівнянь, інтегрування, оптимізації 1 ). Розберемо лише один приклад, пов'язаний з побудовою графіка функції на відрізку. Запрограмуйте файл-функціюmyfun для обчислення

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

Листинг 5.4. Файл-функція myfun

Графік

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

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

Написати файл-функцію
з кроком 0.01 доданок
MatLab
весь час зверталося в нуль іplot побудувала графік не
написати
, а іншої функції. Непродуманий вибір кроку часто призводить до втрати суттєвої інформації щодо поведінки функції. У MatLab є вбудована функція fplot - деякий аналог plot, але з автоматичним підбором кроку при побудові графіка. Першим вхідним аргументом fplot є ім'я файл-функції, а другим — вектор, елементи якого є межі відрізків: fplot ('ім'я файл-функції', [a, b]). Побудуйте тепер у новому вікні графік за допомогою fplot:

Вийшов графік, який точно відображає поведінку функції (рис. 5.1, б).

Написати файл-функцію

Завдання для самостійної роботи

Написати файл-функції та побудувати графіки на заданому відрізку за допомогою plot(з кроком 0.05) таfplotдля наступних функцій:

1.

файл-програми
Написати файл-функцію
.2.
файл-програми
.

3.

написати
Написати файл-функцію
. 4.
файл-функції
MatLab
.

5.

файл-функції
файл-функції
.6.
MatLab
написати
.

7.

файл-функції
. 8.
файл-функцію
файл-програми
.

9.

файл-функцію
.

10.

файл-функції
.

Завдання для самостійної роботи

Написати файл-функцію для вирішення поставленого завдання.

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

Написати файл-функцію, яка повертає суму всіх елементів вектора з непарними індексами.

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

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

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

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

Написати файл-функцію, яка замінює елемент матриці з індексами 1,1 добутком всіх елементів матриці.

Написати файл-функцію, яка будує багатокутник (замкнутий) за заданими векторами xіyс з координатами вершин.

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

Написати файл-функцію, яка переводить час у секундах на години, хвилини та секунди.

1Використання чисельних методівMatLab виходить за рамки цього посібника.