MATLAB — пакет прикладних програм для чисельного аналізу, а також мова програмування, що використовується в цьому пакеті. Система, створена компанією The MathWorks, є засобом для роботи з математичними матрицями, побудови графіків функцій, роботи з алгоритмами, створення робочих оболонок (інтерфейсів користувача) з програмами іншими мовами програмування. Хоча продукт спеціалізується на чисельному аналізі, спеціальні інструментальні засоби працюють з програмним забезпеченням Maple, що робить його повноцінною системою для роботи з алгеброю.
Мова MATLAB
Опис мови Мова MATLAB — високорівнева інтерпретована мова програмування, яка включає засновані на матрицях структури даних, широкий спектр функцій, інтегроване середовище розробки, об'єктно-орієнтовані можливості та інтерфейси до програм, написаних іншими мовами програмування.
Програми, написані на MATLAB, бувають двох типів — функції та скрипти. Функції мають вхідні та вихідні аргументи, а також власний робочий простір для зберігання проміжних результатів обчислень та змінних. Скрипти використовують загальний робочий простір. Як скрипти, так і функції зберігаються як текстові файли і компілюються в машинний код динамічно. Існує також можливість зберігати так звані pre-parsed програми — функції та скрипти, перетворені у вигляд, зручний для машинного виконання. Загалом такі програми виконуються швидше за звичайні, особливо якщо функція містить команди побудови графіків.
Основною особливістю мови MATLAB є її широкі можливості для роботи з матрицями, які творці мови висловили в гаслі «думай векторно» ().
Вектори та матриці Приклад коду, що є частиною функції magic.m, яка генерує магічний квадрат M для непарних значень розміру сторони n:[J,I] = meshgrid(1:n); A = mod(I+J-(n+3)/2,n); B = mod(I+2*J-2,n); M = n*A + B + 1;Приклад коду, що завантажує одновимірний масив A значеннями масиву B у зворотному порядку (тільки якщо вектор A визначений, і кількість його елементів збігається з кількістю елементів вектора B):A(1:end) = B(end:-1:1);
Графіки MATLAB може створювати тривимірну графіку за допомогою функцій surf, plot3 або mesh. [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2); Z = sin(R)./R; Z(R==0) = 1; mesh(X,Y,Z);Цей код створить каркасний тривимірний графік функції sinc . Поділ графічного вікна здійснюється командою subplot (кількість рядків, кількість стовпців, поточний елемент) (можна уявити, як створення матриці). Побудова поліноміальної регресії для табличних даних можлива через команду Tools > Basic Fitting вікна графічного виводу.
Обчислення площі обмеженої лініями Обчислення площі обмеженої двома лініями можливе за допомогою команди quad (площа визначеного інтеграла, код див. нижче). Аргументами quad є точки перетину ліній (знаходяться за допомогою команди fzero (перший аргумент різниця між функціями, другий аргумент відрізок або точка де різниця між функціями дорівнює нулю).clear all clc close all f=@(x) 0.5*x.^2+sin(5*x)-5*x+1 g=@(x) sqrt(x.^2+5.5) X=-2:0.01:14; subplot(2,1,1) plot(X,f(X),'m','LineWidth',2) hold on plot(X,g(X),'g','LineWidth',2) grid xlabel('x') ylabel('f,g') legend('f','g','Location','best') F=@(x) g(x)-f(x) subplot(2,1,2) plot(X,F(X),'b','LineWidth',2) hold on plot([-2 14],[0 0],'k','LineWidth',2) grid xlabel('x') ylabel('f,g') x1=fzero(F,0) x2=fzero(F,[10,14]) S=quad(F,x1,x2)
Перенесення рядка в командному вікні У разі довгих формул, коли вираз не поміщається в рядок у програмі, передбачена функція перенесення в командному вікні, здійснювана трьома крапками «…». Крапки набувають синього кольору, курсор на наступному рядку блимає, але знак початку командного рядка (>>) відсутній. Наприклад,t=sqrt(abs(sin(1.3*pi)/cos(4.6)*tan(0.7*pi)/acot(0.3)))-... (exp(-0.2)*log(3.8)^1.2)^(1/3)рівносильно t=sqrt(abs(sin(1.3*pi)/cos(4.6)*tan(0.7*pi)/acot(0.3)))-(exp(-0.2)*log(3.8)^1.2)^(1/3)
Оформлення графіків Функція plot() дає змогу змінювати колір і тип лінії, що відображається, зокрема й у логарифмічному масштабі. Для цього використовують додаткові параметри, які записують так: plot(<x>, <y>, <'колір лінії, тип лінії, маркер точок'>). Наприклад,plot(X,Y,'r--','LineWidth',2, 'Marker','o','MarkerFaceColor','k')побудує графік червоного кольору (r), штрихпунктирний (--), із товщиною лінії 2 ('LineWidth',2), з маркером у вигляді круга ('Marker','o'), зафарбованого в чорний колір ('MarkerFaceColor','k').grid
xlabel('x')
ylabel('y')
title('Lamana liniya')grid створює сітку, xlabel('x') та ylabel('y'), підписує осі координат, title('Lamana liniya') надає графіку заголовок.
Введення векторів (відповідно потім і матриць (масивів)) У квадратних дужках перераховуємо елементи вектора через пропуск (можна розділяти комою) і елементи викладуться в рядок. Наприклад,X=[2 3 4 3 5 1]Якщо потрібно викласти елементи в стовпець, то їх слід розділяти крапкою з комою «;» (В принципі, завжди можна застосувати процедуру транспонування).
Дуже часто потрібно задати вектор, елементи якого відрізняються на однакову величину — крок. Особливо це актуально, коли будуємо графіки функцій (область побудови цієї функції розділяємо точками з якимсь кроком). Для цієї задачі використовують символ індексації двокрапка «:». Наприклад, від 0 до 10 для кроку 2:Y=[0:2:10](якщо крок дорівнює 1, то його не пишемо, одиницю MATLAB використає, як типове значення). Вектор може бути аргументом функції, наприклад F=sin(Y)
Поелементне опрацювання масивів Деякі дії не мають у математиці певного позначення, наприклад поелементне опрацювання елементів масиву, проте в MATLAB подібні позначення є. Якщо потрібно застосувати дію до кожного елемента масиву, то ставиться крапка «.». Наприклад, якщо є вектор FF=[0 3 4 3 5 1]його можна поділити на два:F/2Отримаємо (кожен елемент вектора буде поділено на 2): 0 1.5000 2.0000 1.5000 2.5000 0.5000Однак, якщо написати2/FMatlab видасть помилку:Error using / Matrix dimensions must agree.Якщо дію потрібно застосувати до кожного елемента вектора, в MATLAB на це вказують крапкою перед знаком дії:2./F. Отримаємо:Inf 0.6667 0.5000 0.6667 0.4000 2.0000Inf означає, що зроблено спробу ділення на нуль.
Задання функцій Нехай є два графіки функцій і потрібно визначити їх перетин, далі порахувати площу, обмежену в результаті перетину. У MATLAB функцію користувача можна створити додаванням знака «@» (у круглих дужках пишемо те, від чого ця функція залежить):f=@(x)0.5*x^2+sin(5*x)-5*x+1що відповідає функції . Крапка стоїть лише перед степенем (.^), це свідчить, що функція буде вектором. Перед сумою, різницею крапки не ставлять, оскільки додавати й віднімати вектори можна за звичайними правилами.
Буде виведено:f =
function_handle with value:
@(x)0.5*x.^2+sin(5*x)-5*x+1function_handle повідомляє, що це функція користувача.
Приклад коду для виведення діапазону побудови від -2 до 12 з кроком 0,01 (можна вводити як 0.01, так і .01):X=-2:.01:12;Крапка з комою «;» наприкінці команди означає, що результат не буде виведено на екран. Для виведення функцій разом в одному вікні можна використати команду hold on:plot(X,f(X)) hold on plot(X,g(X)) grid legend('f','g','Location','best')legend('f','g','Location','best') каже, що підписи функцій на спільному графіку будуть розташовані в найвільнішому місці.
Застосування
Математика та обчислення MATLAB надає користувачеві для аналізу даних багато (кілька сотень) функцій, які покривають практично всі галузі математики, зокрема:
Матриці та лінійна алгебра: алгебра матриць, лінійні рівняння, власні значення та вектори, сингулярності, факторизація матриць та інші. Многочлени та інтерполяція: корені многочленів, операції над многочленами та їх диференціювання, інтерполяція та екстраполяція кривих та інші. Математична статистика та аналіз даних: статистичні функції, статистична регресія, цифрова фільтрація, швидке перетворення Фур'є та інші. Обробка даних: набір спеціальних функцій, серед яких побудова графіків, оптимізація, пошук нулів, чисельне інтегрування (у квадратурах) та інші. Диференціальні рівняння: розв'язування диференціальних та диференціально-алгебричних рівнянь, диференціальних рівнянь із запізненням, рівнянь із обмеженнями, рівнянь у часткових похідних та інші. Розріджені матриці: спеціальний клас даних пакета MATLAB, що використовується в спеціалізованих застосуваннях (функція з'явилася 1992 року). Цілочисельна арифметика: виконання операцій цілочисленної арифметики в середовищі MATLAB.
Розробка алгоритмів MATLAB надає зручні засоби розробки алгоритмів, включно з високорівневими з використанням концепцій об'єктно-орієнтованого програмування. Він має всі необхідні засоби інтегрованого середовища розробки, серед яких налагоджувач та профайлер. Функції для роботи з цілими типами даних полегшують створення алгоритмів для мікроконтролерів та інших застосувань, де це необхідно.
Візуалізація даних У складі пакету MATLAB є багато функцій для побудови графіків, зокрема й тривимірних, візуального аналізу даних та створення анімованих роликів.
Вбудоване середовище розробки дає змогу створювати графічні інтерфейси користувача з різними елементами керування, такими як кнопки, поля введення та інші.
Незалежні програми Програми MATLAB, як консольні, так і з графічним інтерфейсом користувача, можна зібрати за допомогою модуля MATLAB Compiler у незалежні від MATLAB застосунки або динамічні бібліотеки, для запуску яких на інших комп'ютерах, однак, потрібно встановлювати вільно розповсюджуване середовище MATLAB Runtime (раніше називалася MATLAB Compiler Runtime, MCR).
Зовнішні інтерфейси Пакет MATLAB включає різні інтерфейси для отримання доступу до зовнішніх підпрограм, написаних іншими мовами програмування, даних, клієнтів та серверів, які спілкуються через технології Component Object Model або Dynamic Data Exchange, а також периферійних пристроїв, які взаємодіють безпосередньо з MATLAB. Багато з цих можливостей відомі під назвою MATLAB API.
COM Пакет MATLAB надає доступ до функцій, які дають змогу створювати, маніпулювати та видаляти COM-об'єкти (як клієнти, так і сервери). Підтримується також технологія ActiveX. Усі COM-об'єкти належать до спеціального COM-класу пакету MATLAB. Усі програми, що мають функції контролера автоматизації (), можуть мати доступ до MATLAB як до сервера автоматизації ().
.NET Пакет MATLAB у Microsoft Windows надає доступ до програмної платформи .NET Framework. Є можливість із середовища MATLAB завантажувати .NET-збірки (Assemblies) та працювати з об'єктами .NET-класів. У версії MATLAB 7.11 (R2010b) підтримується .NET Framework версій 2.0, 3.0, 3.5 та 4.0.
DDE Пакет MATLAB містить функції для доступу до інших застосунків середовища Windows, так само як і цим програмам отримувати доступ до даних MATLAB, за допомогою технології динамічного обміну даними (DDE). Кожен застосунок, який може бути DDE-сервером, має унікальну ідентифікаційну назву. Для MATLAB це назва Matlab.
Вебслужби У MATLAB є можливість використовувати вебслужби. Спеціальна функція створює клас, який містить методи API вебслужби, що дозволяє звертатися до вебслужби через виклики методів класу.
MATLAB взаємодіє з клієнтом вебслужби за допомогою отримання даних, їх опрацювання та надсилання результату. Підтримуються технології Simple Object Access Protocol (SOAP) та Web Services Description Language (WSDL).
Послідовний порт Інтерфейс для послідовного порту пакету MATLAB забезпечує прямий доступ до периферійних пристроїв, таких як модеми, принтери та наукове обладнання, що підключається до комп'ютера через послідовний порт (COM-порт). Інтерфейс працює через створення об'єкта спеціального класу для послідовного порту. Наявні методи цього класу дають змогу зчитувати та записувати дані в послідовний порт, використовувати події та обробники подій, а також записувати інформацію на диск комп'ютера в режимі реального часу. Це буває необхідно при проведенні експериментів, симуляції систем реального часу та інших застосувань.
MEX-файли