Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Додаток В
Інтегрована система автоматизації математичних та науково-технічних розрахунків MATLAB MATLAB (MATrix LABoratory – матрична лабораторія) – одна з найдавніших, ретельно пророблених і апробованих систем автоматизації математичних розрахунків. Вона побудована на розширеному поданні матричних операцій. Але синтаксис мови програмування системи продуманий наскільки ретельно, що матричне спрямування MATLAB не відчувається користувачами, яких не цікавлять матричні обчислення. Система MATLAB з точки зору її розробників пропонується, як мова програмування високого рівня для математичних та науково-технічних обчислень. Вона відобразила в собі не тільки весь досвід розвитку та комп‘ютерної реалізації чисельних методів за останні три десятиліття, а і досвід розвитку математики за всю історію Людства. Системою користуються більш ніж 500 000 тисяч легально зареєстрованих користувачів. Система MATLAB має на сьогоднішній день 12 реалізацій, 12-а реалізація відома як версія 6.0. Розробник системи фірма – MathWorks. Inc – піклуючись про рейтинг системи доповнила її пакетами програм, що призначені для розв‘язання складних сучасних технічних задач (таблиця В1).
Перелік основних програмних продуктів класу MATLAB. Таблиця В1
Система MATLAB може використовуватися в режимі безпосередніх обчислень – командному режимі, а також – в режимі програмування. Система MATLAB багатопланова, і тому може виникнути питання – для чого використовувати програмування, якщо величезну кількість задач є можливість розв‘язати за допомогою внутрішніх та додаткових ресурсів системи. Та навіть у найбільшій і найпотужнішій системі нереально передбачити всіх засобів для розв‘язання специфічних задач, що стоять перед користувачем. Мова програмування системи MATLAB дозволяє їх ефективно розвиватися, створювати і використовувати в системі найновіші методи розв‘язання сучасних задач.
Програмування в системі MATLAB.
Програмами в MATLAB є М-файли текстового формату, які вміщують запис програми у вигляді програмних кодів. Засоби мови програмування MATLAB: § дані різних типів, § константи і змінні, § оператори, в тому числі і оператори математичних виразів, § вбудовані команди і функції, § функції користувача, § керуючі структури, § системні оператори і функції, § засоби розширення мови.
Коди програм в системі MATLAB пишуться на мові високого рівня, яка є достатньо зрозумілою для користувачів середньої кваліфікації в області програмування. Мова програмування MATLAB є типовим інтерпретатором. Це значить, що кожна інструкція програми розпізнається і зразу виконується, що полегшує забезпечення діалогового режиму роботи з системою. Етап компіляції всіх інструкцій відсутній. Висока швидкість виконання програми забезпечена · наявністю заздалегідь відкомпільованого ядра, в якому зберігаються критичні, щодо швидкості виконання, інструкції, наприклад такі, як цикли і базові математичні функції, · ретельним відпрацюванням системи контролю синтаксису програм в режимі інтерпретації. Інтерпретація значить, що MATLAB не створює виконуваних кінцевих програм. Вони існують у вигляді М-файлів. Для виконання програм необхідно знаходитися у середовищі MATLAB. Але для програм на мові MATLAB створені компілятори, що транслюють програми MATLAB в коди мови програмування С та С++. Це вирішує завдання створення виконуваних програм, що на початку створюються у середовищі MATLAB.
Основні типи даних.
Структура типів даних системи MATLAB подана на рис.1.
Рис. 1. Структура типів даних в MATLAB.
Типи даних array та numeric є віртуальними, оскільки до них не можна віднести, будь-які змінні. Вони служать для визначення і комплектування деяких типів даних. Таким чином, в MATLAB визначені шість основних типів даних, що є багатовимірними масивами: § double – числові масиви з числами подвоєної точності, § char – рядкові масиви з елементами-символами, § sparse – розріджені матриці з елементами-числами подвоєної точності, § cell – масиви комірок, котрі у свою чергу можуть бути масивами, § struct – масиви записів з полями, які також можуть вміщувати масиви, § unit8 – масиви 8-розрядних цілих чисел без знаків (математичні операції з ними не передбачені), застосовуються для службових цілей. Крім того, передбачений ще один тип даних UserObject, який належить до типів даних (об‘єкти), що визначаються користувачем. Кожному типу даних відповідають деякі характерні для нього операції, що називаються методами. Дочірні типи даних, що розташовані на рис.1 нижче батьківських типів, наслідують від останніх їх методи, що є ознакою наслідування об‘єктів. Начолі ієрархії типів даних знаходяться дані типу array, а значить, що всі види даних в MATLAB є масивами.
Мова програмування MATLAB включає в себе всі засоби, що необхідні для реалізації різних видів програмування: · процедурного, · операторного, · функціонального, · логічного, · структурного (модульного), · об‘єктно-орієнтованого, · візуально-орієнтованого.
В основі процедурного, операторного та функціонального типів програмування лежать процедури, оператори і функції, які використовуються як основні об‘єкти мови MATLAB. Логічне програмування реалізується в MATLAB за допомогою логічних операторів та функцій. В системі наглядно реалізований принцип структурного програмування – більшість функцій і команд мови є закінченими модулями, обмін даними між якими відбувається через їх вхідні параметри, хоча можливий і через глобальні змінні. Програмні модулі оформлені у вигляді текстових М-файлів, які зберігаються на диску і підключаються до програм по мірі необхідності. На відміну від багатьох інших мов програмування, застосування модулів не вимагає попереднього об‘явлення, я для створення і відлагодження самостійних модулів MATLAB має всі необхідні засоби. Переважна більшість команд і функцій системи MATLAB представляється у вигляді таких модулів. Об‘єктно-орієнтоване програмування також широко представлене в системі MATLAB. Воно особливо проявляється при програмуванні задач графіки. Візуально-орієнтоване програмування в MATLAB представлено, в основному, в пакеті Simulink при моделюванні заданих блоками пристроїв та систем.
Двоїстість операторів і функцій в MATLAB полягає у можливості їх виконання як з програм, так і в режимі прямих обчислень. Під командами ми будемо розуміти засоби, що керують периферійними пристроями, а під операторами – засоби, що виконують операції з конкретними операндами (даними). Функція перетворює одні дані у інші. Для багатьох функцій характерне повернення значень у відповідь на звертання до них зі вказівкою списку вхідних параметрів. Наприклад: sin(х). Більшість функцій можна використовувати в арифметичних виразах. Для операторів (а також команд), які не повертають значення, їх застосування в арифметичних виразах абсурдно. Наприклад: вираз 2*рlot(х, у), де рlot(х, у) – оператор побудови графіка функцій, буде сприйнятий системою як помилка. Всі функції, що повертають єдине значення (чи один масив), записуються малими буквами: f_name(Список_параметрів) Функції, що повертають ряд значень чи масивів, наприклад Х, Y, Z, записуються так: [X, Y, Z, …]=f_name(Список_параметрів)
Оскільки мова програмування системи MATLAB орієнтований на структурне програмування, у ньому немає номерів рядків і програмних операторів безумовного переходу GOTO. Є лише керуючі структури наступних типів: § умовні вирази if…else…elseif…end, § цикли for…end, while…end,. Їх форма схожа на використовувану в мові Pascal (область дії керуючих структур виділяється їх заголовком і словом end, але без слова begin). Для дострокового завершення функції і виходу з неї використовуються інструкції return та break. Ще один оператор розгалуження є оператор переключення switch…case…otherwise…end. Рядків з ключовим словом саsе може бути багато, а рядок з ключовим словом otherwise повинен бути один.
Для створення М-файлів використовують як вбудований редактор системи, так і будь-який текстовий редактор, що підтримує формат ASCII. Підготований і записаний на диск М-файл стає частиною системи. Його можливо викликати як з командного рядка, так і з іншого М-файлу. Розрізняють два типи М-файлів: файли-сценарії та файли-функції. В процесі свого створення вони проходять синтаксичний контроль за допомогою вбудованого в систему MATLAB редактора і відладчика М-файлів. Файл-сценарій (Script-файл) – запис серії команд без вхідних і вихідних параметрів. Він має наступну структуру: %Основний коментар %Додатковий коментар Тіло файла з будь-якими виразами. Властивості файлів-сценаріїв: · вони не мають вхідних і вихідних аргументів, змінні цих файлів є глобальними, · працюють з даними з робочої області, · в процесі виконання не компілюються, · є зафіксованою у вигляді файлу послідовністю операцій, повністю аналогічною тій, що використовується у робочій області. Наприклад, побудуємо файл сценарію з назвою p_red, що будує графік синусоїди червоною лінією: %Plot with color red % Будує графік синусоїди лінією червоного кольру %с виділеною масштабною сіткою в інтервалі [xmin, xmax] x=xmin: 0.1: xmax; plot (x, sin(x), ’r’) grid on В даній програмі перші три рядка є коментарями: перший рядок – основний коментар, який виводиться при виконання команд lookfor та help ім‘я_каталогу. Повний коментар виводиться при виконанні команди help ім‘я_файлу. Знак % повинен починатися з першої позиції рядка, інакше коментар не сприйматиметься командою help і може видавати помилку. Далі у прикладі йде безпосередньо перелік операцій. Для того, щоб скористатися файлом необхідно задати початкові дані (перегляд файлу – команда type p_red) і звернутися до файлу: > > xmin=-10; > > xmax-10; > > p_red
M-файл-функція є об‘єктом мови програмування системи MATLAB. Файл-функція є повноцінним модулем з точки зору структурного програмування, оскільки вміщує вхідні та вихідні параметри і використовує апарат локальних змінних. Структура такого модуля виглядає так: function var=f_name(список_параметрів) %Основний коментар %Додатковий коментар Тіло файлу з будь-якими виразами var=вираз
Файл-функція має наступні властивості: · починається з об’явлення типу function, після якого вказується ім‘я змінної – вихідного параметру, ім‘я самої функції та список її вхідних параметрів, · функція повертає своє значення і може використовуватися у вигляді f_name(список_параметрів) в математичних виразах, · всі змінні, що використовуються у тілі функції є локальними, тобто діють тільки у межах функції, · файл-функція є самостійним програмним модулем, який спілкується з іншими модулями через свої вхідні та вихідні параметри, · правила виводу коментарів ті ж, що і у файлів-сценаріїв, · файл-функція є засобом розширення системи MATLAB, · при звертанні до файла-функції, він компілюється і виконується, а створені машинні коди зберігаються в робочій області системи MATLAB.
Остання конструкція var=вираз вводиться, якщо треба, щоб функція повертала результат обчислень. Якщо файл-функція завершується рядком із точкою з комою (;), то для повертання значення функції використовується програмний оператор return. Якщо функція має більше одного вхідного параметра, то вони вказуються у квадратних дужках після слова function. Структура такого модуля має вигляд: function [var1, var2, …]=f_name(список_параметрів) % Основний коментар % Додатковий коментар Тіло файлу з будь-якими виразами var1=вираз var2=вираз …………... Така функція нагадує повноцінну процедуру. Її не можна використовувати безпосередньо в математичних виразах, оскільки вона повертає не єдиний результат, а їх множину. Тому функція використовується як окремий елемент програм виду: [var1, var2, …]=f_name(список_параметрів) Після застосування елементу вихідні змінні стають визначеними і їх можливо використовувати в подальших математичних обчисленнях та інших сегментах програми. Змінні у файлах-сценаріях є глобальними, а у файлах-функціях – локальними. Застосування глобальних змінних у програмних модулях може приводити до небажаних результатів, але у деяких випадках застосування глобальних змінних у файлах-функціях є більш ефективним. Відповідальність за безпомилкову роботу в таких випадках бере на себе програміст. Об‘являє змінні модуля функції глобальними команда: global var1 var2 … Застосування підфункцій. Підфункції записуються в тілі основних функцій і мають ідентичну структуру. Вони не належать до внутрішніх функцій, вбудованих в ядро MATLAB. Вони не можуть використовуватися за межами М-файлу, що визначає основну функцію. Приклад функції з підфункцією: function [mean, stdev] = statv(x) %Statv Interesting statistics. %Приклад функції з вбудованою підфункцією n = length (x) mean = avg(x, n) stdev = sqrt(sum ((x-avg(x, n)).^2)/n) %______________________________ function m = avg(x, n) %Mean subfunction m = sum(x)/n; У цьому прикладі середнє значення елементів вектора х знаходиться за допомогою підфункції avg(x, n), тіло якої записано в тілі основної функції statv. При використанні функції statv отримаємо наступні результати: > > V=[1 2 3 4 5] V = 1 2 3 4 5 > > [a, m]=statv(V) a = m = 1.4142 > > statv(V) ans = > > help statv
|