Додаток В

 

Приклади використання пакету MATLAB

для розв’язання чисельних задач

Пакет прикладних програм MATLAB

MATLAB (скорочення від англ. «Matrix Laboratory») – термін, який відноситься до пакета прикладних програм для вирішення завдань технічних обчислень, а також до використання в цьому пакеті мови програмування. MATLAB використовують понад 1 000 000 інженерних і наукових працівників, він працює на більшості сучасних операційних системах, включаючи GNU / Linux, Mac OS, Solaris і Microsoft Windows .

MATLAB як мова програмування був розроблений Клівом Моулером (англ. Cleve Moler) наприкінці 1970-х років, коли він був деканом факультету компьютерних наук в Университеті Нью-Мексико . Метою розробки служило завдання дати студентам факультету можливість використання програмних бібліотек Linpack і EISPACK без необхідності вивчення Фортрану. Незабаром нова мова поширилась серед інших університетів і був зустрічений з великим інтересом вченими, що працюють в галузі прикладної математики. До цих пір в Інтернеті можна знайти версію 1982, написану на Фортрані, що розповсюджується з відкритим вихідним кодом. Інженер Джон Літтл (англ. John N. Little) познайомився з цією мовою під час візиту Кліва Моулера в Стенфордський університет в 1983. Зрозумівши, що нова мова володіє великим комерційним потенціалом, він об'єднався з Клівом Моулером і Стівом Бангертом (англ. Steve Bangert). Спільними зусиллями вони переписали MATLAB на C і заснували в 1984 компанію The MathWorks для подальшого розвитку. Ці переписані на С бібліотеки довгий час були відомі під ім'ям JACKPAC. Спочатку MATLAB призначався для проектування систем управління (основна спеціальність Джона Літтла), але швидко завоював популярність у багатьох інших наукових та інженерних областях. Він також широко використовувався і в освіті, зокрема, для викладання лінійної алгебри та чисельних методів.

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

Програми, написані на MATLAB, бувають двох типів – функції та скрипти. Функції мають вхідні та вихідні аргументи, а також власний робочий простір для зберігання проміжних результатів обчислень і змінних. Скрипти ж використовують загальний робочий простір. Як скрипти, так і функції не компілюються в машинний код і зберігаються у вигляді текстових файлів. Існує також можливість зберігати так звані pre-parsed програми – функції та скрипти, оброблені у вигляд, зручний для машинного виконання. У загальному випадку такі програми виконуються швидше звичайних, особливо якщо функція містить команди побудови графіків.

Застосування:

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

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

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

    3. Візуалізація даних. У складі пакета MATLAB є велика кількість функцій для побудови графіків, у тому числі тривимірних, візуального аналізу даних і створення анімаційних роликів. Вбудоване середовище розробки дозволяє створювати графічні інтерфейси користувача з різними елементами управління, такими як кнопки, перемикачі та іншими. За допомогою компонента MATLAB Compiler ці графічні інтерфейси можуть бути перетворені в самостійні додатки, для запуску яких на інших комп'ютерах необхідна встановлена бібліотека MATLAB Component Runtime.

    4. Зовнішні інтерфейси. Пакет MATLAB включає різні інтерфейси для отримання доступу до зовнішніх підпрограм, що написані на інших мовах програмування, даних, клієнтів і серверів, спілкується через технології Component Object Model (COM) або Dynamic Data Exchange (DDE), а також периферійних пристроїв, які взаємодіють безпосередньо з MATLAB. Багато з цих можливостей відомі під назвою MATLAB API.

  •   COM . Пакет MATLAB надає доступ до функцій, що дозволяють створювати, маніпулювати і видаляти COM-об'єкти (як клієнти, так і сервера). Підтримується також технологія ActiveX. Всі COM-об'єкти належать до спеціального COM-класу пакета MATLAB. Всі програми, що мають функції контролера автоматизації (англ. Automation controller) можуть мати доступ до MATLAB як до сервера автоматизації (англ. Automation server).
  •   DDE . Пакет MATLAB містить функції, які дозволяють йому отримувати доступ до інших додатків середовища Windows, так само як і цим програмам отримувати доступ до даних MATLAB, за допомогою технології динамічного обміну даними (DDE). Кожна програма, яка може бути DDE-сервером, має своє унікальне ідентифікаційне ім'я. Для MATLAB це ім'я - Matlab.

    5.  Веб-сервіси . В MATLAB існує можливість викликати методи веб-сервісів. Спеціальна функція створює клас, грунтуючись на методах API веб-сервісу. MATLAB взаємодіє з клієнтом веб-сервісу за допомогою прийняття від нього посилок, їх обробки та посилок відповіді. Підтримуються наступні технології: Simple Object Access Protocol (SOAP) і Web Services Description Language (WSDL).

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

    1.  Цифрова обробка сигналів, зображень та даних: DSP Toolbox, Image Processing Toolbox, Wavelet Toolbox, Communication Toolbox, Filter Design Toolbox – набори функцій, які дозволяють вирішувати широкий спектр задач обробки сигналів, зображень, проектування цифрових фільтрів і систем зв'язку.

    2.  Системи управління: Control Systems Toolbox, ?-Analysis and Synthesis Toolbox, Robust Control Toolbox, System Identification Toolbox, LMI Control Toolbox, Model Predictive Control Toolbox, Model-Based Calibration Toolbox – набори функцій, що полегшують аналіз і синтез динамічних систем, проектування, моделювання і ідентифікацію систем управління, включаючи сучасні алгоритми управління, такі як робастне управління, H ?-керування, ЛМН-синтез, ?-синтез та інші.

    3. Фінансовий аналіз: GARCH Toolbox, Fixed-Income Toolbox, Financial Time Series Toolbox, Financial Derivatives Toolbox, Financial Toolbox, Datafeed Toolbox – набори функцій, які дозволяють швидко та ефективно збирати, обробляти і передавати різну фінансову інформацію.

    4. Аналіз і синтез географічних карт, включаючи тривимірні: Mapping Toolbox.

    5. Збір та аналіз експериментальних даних: Data Acquisition Toolbox, Image Acquisition Toolbox, Instrument Control Toolbox, Link for Code Composer Studio – набори функцій, які дозволяють зберігати й обробляти дані, отримані в ході експериментів, у тому числі в реальному часі. Підтримується широкий спектр наукового та інженерного вимірювального обладнання.

    6. Візуалізація та подання даних: Virtual Reality Toolbox – дозволяє створювати інтерактивні світи і візуалізувати наукову інформацію за допомогою технологій віртуальної реальності та мови VRML.

    7. Засоби розробки: MATLAB Builder for COM, MATLAB Builder for Excel, MATLAB Builder for NET, MATLAB Compiler, Filter Design HDL Coder – набори функцій, які дозволяють створювати незалежні програми з середовища MATLAB.

    8. Взаємодія із зовнішніми програмними продуктами: MATLAB Report Generator, Excel Link, Database Toolbox, MATLAB Web Server, Link for ModelSim – набори функцій, що дозволяють зберігати дані в різних видах таким чином, щоб інші програми могли з ними працювати.

    9. Бази даних: Database Toolbox – інструменти роботи з базами даних.

    10. Наукові та математичні пакети: Bioinformatics Toolbox, Curve Fitting Toolbox, Fixed-Point Toolbox, Fuzzy Logic Toolbox, Genetic Algorithm and Direct Search Toolbox, OPC Toolbox, Optimization Toolbox, Partial Differential Equation Toolbox, Spline Toolbox, Statistic Toolbox, RF Toolbox – набори спеціалізованих математичних функцій, що дозволяють вирішувати широкий спектр наукових та інженерних завдань, включаючи розробку генетичних алгоритмів, вирішення завдань в приватних похідних, цілочисельні проблеми, оптимізацію систем та інші.

    11.  Нейронні мережі: Neural Network Toolbox – інструменти для синтезу та аналіз нейронних мереж.

    12.  Нечітка логіка: Fuzzy Logic Toolbox – інструменти для побудови й аналізу нечітких множин.

    13.  Символьні обчислення: Symbolic Math Toolbox – інструменти для символьних обчислень з можливістю взаємодії з символьним процесором програми Maple.

    Крім перерахованих вище, існують тисячі інших наборів інструментів для MATLAB, написаних іншими компаніями та ентузіастами.

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

    Сумісні з MATLAB на рівні мови програмування :

  •   GNU Octave GNU Octave ;
  •   FreeMat FreeMat ;
  •   Scilab Scilab ;
  • Близькі за функціональністю

  •   R , S и SPlus . R, S і SPlus.
  •   APL і його нащадки: наприклад J .
  •   Python, при використанні з такими бібліотеками як NumPy і SciPy реалізує подібні можливості.
  •   IDL (англ. Interactive Data Language, інтерактивна мова опису даних), колись був комерційним конкурентом MATLAB, зараз залишається серйозним конкурентом в багатьох прикладних областях, хоча його частка на ринку програмних продуктів для чисельного аналізу різко впала.
  •  Якщо є необхідність розробки великих проектів для чисельного аналізу, то можливе використання мов програмування загального призначення, що підтримують статичну типізацію та модульну структуру. Прикладами можуть служити Modula-3, Haskell, Ада, Java. При цьому рекомендується використовувати відомі у науково-інженерному середовищі спеціалізовані бібліотеки.

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