Це вікно є основним у MatLAB. У ньому з'являються символи команд, які набираються користувачем на екрані дисплея, відображаються результати виконання цих команд, текст програми та інформація про помилки виконання програми, розпізнаних системою.

Ознакою того, що MatLAB готова до сприйняття та виконання чергової команди, є виникнення в останньому рядку текстового поля вікна знака запрошення ">>", після якого розташована вертикальна риса, що миготить.

У верхній частині вікна (під заголовком) розміщено рядок меню, де знаходяться меню File, Edit, View, Windows, Help. Щоб відкрити будь-яке меню, слід встановити на ньому покажчик миші та натиснути її ліву кнопку. Докладніше функції команд меню будуть описані в розділі «Інтерфейс MatLab і команди загального призначення. Написання М-книг».

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

1.2. Операції з числами

1.2.1. Введення дійсних чисел

Введення чисел з клавіатури здійснюється за загальними правилами, прийнятими для мов програмування високого рівня:

для відділення дробової частини мантиси числа використовується десяткова точка (замість коми при звичайному записі);

десятковий показник числа записується як цілого числа після попереднього запису символу «е»;

між записом мантиси числа та символом «е»(який відокремлює мантису від показника) не повинно бути жодних символів, включаючи символ пропуску.

Якщо, наприклад, ввести у командному вікні MatLAB рядок

то після натискання клавіші<Еnter>у цьому вікні з'явиться запис:


Слід зазначити, що результат виводиться у вигляді (форматі), який визначається заздалегідь встановленим форматом подання чисел. Цей формат можна встановити за допомогою команди Preferencesменю File(Рис. 1.3). Після виклику на екрані з'явиться однойменне вікно (рис. 1.4). Одна з ділянок цього вікна має назву Numeric Формат. Він призначений для встановлення та зміни формату представлення чисел, які виводяться у командне вікно у процесі розрахунків. Передбачено такі формати:

Short (default) – короткий запис (застосовується за умовчанням);

Long – довгий запис;

Hex - запис у вигляді шістнадцяткового числа;

Bank – запис до сотих часток;

Plus – записується лише знак числа;

Short Е – короткий запис у форматі з плаваючою комою;

Long Е – довгий запис у форматі з плаваючою комою;

Short G – друга форма короткого запису у форматі з плаваючою комою;

Long G – друга форма довгого запису у форматі з плаваючою комою;

Rational - запис у вигляді раціонального дробу.

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

Як видно із рис. 1.2 число, яке виведено на екран, не збігається з введеним. Це пов'язано з тим, що встановлений за умовчанням формат подання чисел ( Short) не дозволяє вивести більше 6 значущих цифр. Насправді введене число зберігається всередині MatLAB з усіма його цифрами. Наприклад, якщо вибрати мишею селекторну кнопку Long Е(тобто встановити зазначений формат подання чисел), то, повторюючи ті ж дії, отримаємо:

де всі цифри відображені правильно (рис. 1.5).

Слід пам'ятати:

- введене число та результати всіх обчислень у системі Ма tLAB зберігаються у пам'яті ПК із відносною похибкою близько 2.10-16(тобто з точними значеннями в 15 десяткових розрядах):

- діапазон представлення модуля дійсних чисел лежить у діапазоні між 10-308 та 10+308 .

1.2.2. Найпростіші арифметичні дії

У арифметичних виразах мови МаtLAB використовуються такі знаки арифметичних операцій:

+ - додавання;

– – віднімання;

* - множення;

/ - Поділ зліва направо;

\ - Поділ справа наліво;

^ - Зведення в ступінь.

Використання MatLAB у режимі калькулятора може відбуватися шляхом простого запису до командного рядка послідовності арифметичних дій з числами, тобто звичайного арифметичного виразу, наприклад: 4.5^2*7.23 – 3.14*10.4.

Якщо після введення цієї послідовності з клавіатури натиснути клавішу в командному вікні виникне результат виконання у вигляді, представленому на рис. 1.6, т. е. на екран під іменем системної змінної ans виводиться результат дії останнього оператора.

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

- якщо запис оператора не закінчується символом";", результат дії цього оператора одразу ж виводиться у командне вікно;

- якщо оператор закінчується символом";", результат його дії не відображається у командному вікні;

- якщо оператор не містить знака привласнення(= ), тобто є просто записом деякої послідовності дій над числами та змінними, значення результату присвоюється спеціальною системною змінною на ім'я ans;

- отримане значення змінної ans можна використовувати в наступних операторах обчислень, застосовуючи це ім'я ans; при цьому слід пам'ятати, що значення системної змінної ans змінюється після дії чергового оператора без знака надання;

- у загальному випадку форма подання результату у командному вікні має вигляд:

<Имя переменной> = <результат>.

приклад. Нехай потрібно вирахувати вираз (25+17)*7. Це можна зробити в такий спосіб. Спочатку набираємо послідовність 25+17 та натискаємо . Отримуємо на екрані результат у вигляді ans = 42.Тепер записуємо послідовність ans*7та натискаємо . Отримуємо ans = 294 (рис. 1.7). Щоб запобігти виведенню проміжного результату дії 25+17, достатньо після запису цієї послідовності додати символ ";". Тоді матимемо результати у вигляді, наведеному на рис. 1.8.

Використовуючи MatLAB як калькулятор, можна використовувати імена змінних для запису проміжних результатів пам'яті ПК. Для цього служить операція присвоєння, яка вводиться знаком рівності "=" у відповідності до схеми:<Имя переменной> = <выражение>[;]

Ім'я змінної може містити до 30 символів і не повинно збігатися з іменами функцій, процедур системи та системних змінних. При цьому система розрізняє великі та малі літери в змінних.Так, імена "amenu", "Amenu", "aMenu" в MatLAB позначають різні змінні.

Вираз праворуч від знака присвоювання може бути просто числом, арифметичним виразом, рядком символів (тоді ці символи потрібно укласти в апострофи) або символьним виразом. Якщо вираз не закінчується символом ";", після натискання клавіші<Еnter>у командному вікні виникне результат виконання у вигляді:

<Ім'я змінної> = <результат>.

Мал. 1.7. Мал. 1.8.

Наприклад, якщо ввести у командне вікно рядок " х= 25 + 17", з'явиться на екрані запис (рис. 1.9).

Система MatLAB має кілька імен змінних, які використовуються самою системою та входять до складу зарезервованих:

i, j - уявна одиниця (корінь квадратний з -1); pi - число p (зберігається у вигляді 3.141592653589793); inf - позначення машинної нескінченності; Na – позначення невизначеного результату (наприклад, типу 0/0 чи inf/inf); eps - похибка операцій над числами з плаваючою комою; ans - результат останньої операції без знака присвоєння; realmax та realmin – максимально та мінімально можливі величини числа, яке може бути використане.

Ці змінні можна використовувати у математичних виразах.

1.2.3. Введення комплексних чисел

Мова системи MatLAB, на відміну багатьох мов програмування високого рівня, містить у собі дуже просту у користуванні вбудовану арифметику комплексних чисел. Більшість елементарних математичних функцій допускають як аргументи комплексні числа, а результати формуються як комплексні числа. Ця особливість мови робить її дуже зручною та корисною для інженерів та науковців.

Для позначення уявної одиниці у мові МatLAB зарезервовано два імені i та j. Введення з клавіатури значення комплексного числа здійснюється шляхом запису у командне вікно рядка виду:

<ім'я комплексної змінної> = <значення ДЧ> + i[j] * <значення МЧ>,

де ДЧ - дійсна частина комплексного числа, МЧ - уявна частина. Наприклад:

З наведеного прикладу видно, у вигляді система виводить комплексні числа на екран (і друк).

1.2.4. Елементарні математичні функції

Загальна форма використання функції MatLAB така:

<ім'я результату> = <ім'я функції>(<перелік аргументів або їх значень>).

У мові MatLAB передбачені такі елементарні арифметичні функції.

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

sin (z) - синус числа z;

sinh(z) – гіперболічний синус;

asin (z) - арксинус (у радіанах, в діапазоні від до );

аsinh(z) – зворотний гіперболічний синус;

зіs(z) - косинус;

соsh(z) – гіперболічний косинус;

acos (z) - арккосинус (в діапазоні від 0 до p);

асоsh(z) – зворотний гіперболічний косинус;

tan (z) - тангенс;

tanh (z) – гіперболічний тангенс;

atan (z) - арктангенс (в діапазоні від від до );

аtап2 (Х, Y) – чотириквадрантний арктангенс (кут у діапазоні від – pдо + pміж горизонтальним правим променем та променем, який проходить через точку з координатами Хі Y);

atanh (z) – зворотний гіперболічний тангенс;

sec(z) - секанс;

sech(z) – гіперболічний секанс;

asec (z) - арксеканс;

asech (z) – зворотний гіперболічний секанс;

csc (z) - косеканс;

csch (z) – гіперболічний косеканс;

acsc (z) - арккосеканс;

acsch (z) – зворотний гіперболічний косеканс;

cot(z) - котангенс;

coth(z) – гіперболічний котангенс;

acot (z) - арккотангенс;

acoth (z) – зворотний гіперболічний котангенс

Експонентні функції

exp(z) – експонента числа z;

log(z) – натуральний логарифм;

log10 (z) – десятковий логарифм;

sqrt(z) – квадратний корінь із числа z;

abs(z) – модуль числа z.

Цілочисленні функції

fix (z) - округлення до найближчого цілого у бік нуля;

floor (z) - округлення до найближчого цілого у бік негативної нескінченності;

ceil (z) – округлення до найближчого цілого у бік позитивної нескінченності;

round (z) - звичайне округлення числа z до найближчого цілого;

mod (X, Y) - цілісний поділ X на Y;

rem(X, Y) - обчислення залишку від розподілу X на Y;

sign(z) - обчислення сигнум-функції числа z

(0 при z = 0, -1 при z< 0, 1 при z > 0)

1.2.5. Спеціальні математичні функції

Крім елементарних у мові MatLAB передбачено низку спеціальних математичних функцій. Нижче наведено перелік та короткий зміст цих функцій. Правила звернення до них та використання користувач може відшукати в описах цих функцій, що виводяться на екран, якщо набрати команду help та вказати в тому ж рядку ім'я функції.

Функції перетворення координат

cart2 sph– перетворення декартових координат на сферичні;

cart2 pol– перетворення декартових координат на полярні;

pol2 cart- Перетворення полярних координат в декартові;

sph2 cart- Перетворення сферичних координат в декартові.

Функції Бесселя

besselj– функція Бесселя першого роду;

bessely- Функція Бесселя другого роду;

besseli- Модифікована функція Бесселя першого роду;

besselk- Модифікована функція Бесселя другого роду.

Бета-функції

beta- бета-функція;

betainc- Неповна бета-функція;

betaln- Логорифм бета-функції.

Гамма-функції

gamma– гамма-функція;

gammainc- Неповна гамма-функція;

gammaln- Логарифм гамма-функції.

Еліптичні функції та інтеграли

ellipj- еліптичні функції Якобі;

ellipke- Повний еліптичний інтеграл;

expint- Функція експоненційного інтеграла.

Функції помилок

erf- Функція помилок;

erfc- Додаткова функція помилок;

erfcx- масштабована додаткова функція помилок;

erflnv- Зворотна функція помилок.

Інші функції

gcd- найбільший спільний дільник;

lern- Найменше загальне кратне;

legendre- Узагальнена функція Лежандра;

log2– логарифм на підставі 2;

pow2- Зведення 2 у зазначений ступінь;

rat- Подання числа у вигляді раціонального дробу;

rats- Подання чисел у вигляді раціонального дробу.

1.2.6. Елементарні дії з комплексними числами

Найпростіші дії з комплексними числами - додавання, віднімання, множення, розподіл і зведення в ступінь - здійснюються за допомогою звичайних арифметичних знаків +, -, *, /, \ і ^ відповідно.

Приклади використання наведено на рис. 1.11.

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

1.2.7. Функції комплексного аргументу

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

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

У МаtLАВ є кілька додаткових функцій, розрахованих лише на комплексний аргумент:

real (z) - виділяє дійсну частину комплексного аргументу z;

і mag (z) – виділяє уявну частину комплексного аргументу;

angle (z) – обчислює значення аргументу комплексного числа z (у радіанах у діапазоні від –p до +p);

conj (z) - видає число, комплексно пов'язане щодо z.

Приклади наведено на рис. 1.13.

Мал. 1.12. Мал. 1.3.

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

>> v = [-1, -1+2i,-5,4,5i,-1-2i,-5i]

Columns 1 through 4

1.0000 -1.0000 +2.0000i -5.0000 4.0000

Columns 5 through 7

0 + 5.0000i -1.0000-2.0000i 0 - 5.0000i

>> disp(cplxpair(v))

Columns 1 through 4

1.0000 - 2.0000i -1.0000 + 2.0000i 0 - 5.0000i 0 + 5.0000i

Columns 5 through 7

5.0000 -1.0000 4.0000

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

1. Гультяєв А. К. MatLAB 5.2. Імітаційне моделювання серед Windows: Практичний посібник. – Спб.: КОРОНА принт, 1999. – 288 с.

2. Гультяєв А. К. Візуальне моделювання у середовищі MATLAB: Навчальний курс. – Спб.: ПІТЕР, 2000. – 430 с.

3. Дияконов В. П. Довідник із застосування системи PC MatLAB. - M.: Фізматліт, 1993. - 113с.

4. Дияконів В. Simulink 4. Спеціальний довідник. - Спб: Пітер, 2002. - 518 с.

5. Дияконов В., Круглов В. Математичні пакети розширення MatLAB. Спеціальний довідник. – СПб.: Пітер, 2001. – 475с.

6. Краснопрошина А. А., Рєпнікова Н. Б., Ільченко А. А. Сучасний аналіз систем управління із застосуванням MATLAB, Simulink, Control System: Навчальний посібник. - К.: "Корнійчук", 1999. - 144 с.

7. Лазарєв Ю. Ф. Початки програмування серед MatLAB: Уч. допомога. – К.: “Корнійчук”, 1999. – 160с.

8. Лазарєв Ю. MatLAB 5.x. - К.: "Ірина" (BHV), 2000. - 384 с.

9. Медведєв В. С., Потьомкін В. Г. Control System Toolbox. MatLAB 5 для студентів. - Р.: "ДІАЛОГ-МІФІ", 1999. - 287 с.

10. Потьомкін В. Г. MatLAB 5 для студентів: Справ. допомога. - M.: "ДІАЛОГ-МІФІ", 1998. - 314 с.

Розміщено на http://www.allbest.ru/

Вступ

Назва пакету Matlab є скороченням від англійської Matrix Laboratory(що означає матрична лабораторія). Цим же терміном (тобто Matlab) називають і мову програмування, що використовується для складання програмних кодів Як відомо, програмний код може компілюватисяабо інтерпретуватися. У першому випадку отримуємо виконавчий (машинний) код, який виконується центральним процесором. Під час інтерпретації відбувається перетворення у проміжний код, який виконується безпосередньо системою-інтерпретатором. Скомпільований код зазвичай виконується швидше, ніж інтерпретований код. Разом з тим, інтерпретовані мови програмування, як правило, більш демократичні в плані синтаксису. Програмний код Matlab інтерпретується. Однак це ніяк не ставить під сумнів обчислювальні можливості Matlab. Основою для реалізації різних типів даних у Matlab є матриці, що пояснює багато особливості середовища (та мови програмування) Matlab. До матриць ми досить часто апелюватимемо під час викладу матеріалу книги.

Значна частина функціональних можливостей програми Matlab реалізована через пакети інструментів(англійський термін toolbox). Це колекції функцій та інших утиліт, призначених для вирішення вузько спеціальних завдань. Більшість пакетів мають вузьку, специфічну спрямованість. Програма Matlab призначена (насамперед) для виконання числових розрахунків та візуалізації одержуваних результатів. Пакет містить величезну кількість утиліт для виконання різних операцій і дозволяє створювати власні повнофункціональні програмні коди. Разом з тим Matlab можуть виконуватися і символьні розрахунки. Цій меті служить вбудоване в Matlab середовище MuPAD. Таким чином, користувачеві Matlab надаються широкі можливості не лише в області числових, а й символьних розрахунків.

1. Прості обчислення

Під простими, або покроковими, мають на увазі обчислення, які зазвичай виконуються в командному вікні програми Matlab. Відповідна інструкція або команда вводиться у командному вікні, а потім виконується. На малюнку 1 показано, як може виглядати робоче вікно Matlab під час запуску. Інтерес у цьому випадку представляє внутрішнє вікно (зазвичай у центрі робочого вікна програми) з назвою Command Window- Командне вікно. У цьому вікні можна побачити індикатор рядка введення (у вигляді подвійної стрілки) >> ). Для введення команди курсор необхідно перемістити після індикатора рядка введення та ввести вказівку для виконання. Іншими словами, у рядок введення командного вікна необхідно ввести вираз і, натиснувши клавішу Enter, запустити процес обчислення цього виразу. Результат обчислень відображається внизу під командою, що виконується. За замовчуванням результат заноситься до системної змінної ans.

Малюнок 1

На малюнку 2 наведено приклад обчислення кількох арифметичних виразів. В даному випадку наведено результати обчислення виразів 1+2*3 та (5^2-4)/7 відповідно. У першому випадку, як і очікувалося, отримуємо як результат значення 7, у другому - значення 3.

Малюнок 2

Як основні арифметичні оператори Matlab використовуються: оператор «+» для обчислення суми, оператор «-» для обчислення різниці, оператор «*» для обчислення твору, оператор «/» для обчислення приватного та оператор «^» для зведення в ступінь.

У загальному сенсі змінна- Це область пам'яті, до якої можна звертатися по імені для отримання значення, записаного в цій області, а також зміни. У строго типізованих мовах програмування (таких, як С++, Java або Pascal) для використання змінної необхідно попередньо її оголосити, вказавши при цьому, якого типу вона відноситься. У Matlab нічого подібного робити не потрібно. Змінної відразу можна надавати значення. Як оператор присвоювання використовується знак рівності "=". Ім'я змінної, якій присвоюється значення, вказується ліворуч від оператора присвоювання, а змінної, що присвоюється значення праворуч від оператора присвоювання. Значення, що присвоюється змінною, якщо йдеться про скалярні величини, може бути числом або виразом, що містить інші змінні. При цьому необхідно, щоб цим змінним раніше вже було надано значення. Приклад використання скалярних змінних у покрокових обчисленнях наведено у робочому документі малюнку 3.

Малюнок 3

Першою командою x = 0.5 * sin (0.1) присвоюється значення змінної "x". При цьому використана вбудована функція Matlab sin() для обчислення синуса. Призначене в результаті цієї змінної значення відображається внизу під рядком введення у форматі:

« змінна =

значення»

Аналогічно наступною командою y = 0.3 * cos (0.2) значення присвоюється змінної "y". Тут cos() - вбудована функція Matlab для обчислення косинуса. Звертаємо також увагу читача, що як десятковий роздільник при введенні дійсних чисел з десятковою дробовою частиною використовується точка.

Зрештою, командою z=(x^2+y^2)^(1/3) значення присвоюється змінної «z». У вираз, що визначає значення змінної "z", входять змінні "x" і "y". Однак оскільки попередньо цим змінним було надано значення, помилки не виникає і значення змінної «z» присвоюється коректно.

Є дві базові операції, які є досить корисними, особливо при більшому обсязі обчислень. По-перше, у деяких випадках потрібно дізнатися, які змінні робочого простору вже використовуються, і, по-друге, іноді доводиться, образно висловлюючись, "видаляти змінні з ігрового поля" - тобто звільняти пам'ять, виділену під ці змінні. Перша операція виконується за допомогою інструкції "whos". Якщо ввести в командний рядок цю інструкцію та натиснути клавішу «Enter», буде виведено список доступних у робочому просторі змінних з описом деяких атрибутів.

Малюнок 4

У цьому випадку список складається з чотирьох змінних: трьох оголошених змінних користувача «x», «y» та «z», та системної змінної «ans». Очищення простору змінних здійснюється за допомогою інструкції «clear», після якої, через пробіл, вказуються імена змінних, що видаляються. На малюнку 5 наведено результат виконання команди «clear x y», після якої виконано команду «whos» для перевірки списку змінних робочого простору.

Малюнок 5

Оскільки командою "clear x y" змінні "x" та "y" з робочого простору видалені, у списку змінних залишилися лише змінна "z" та системна змінна "ans". Хоча значення змінної "z" присвоюється на основі значень змінних "x" і "y", їх видалення з робочого простору (або зміна їх значення) призначення змінної "z" ніяк не впливає. Для видалення з робочого простору всіхзмінних використовують інструкцію clear без вказівки змінних.

У попередніх прикладах використовувалися скалярні величини. З точки зору основної ідеології та технічної реалізації, скаляри в Matlab є скоріше екзотикою, ніж звичайним явищем. Справа в тому, що Matlab базовим типом даних є матриці (або масиви). У цьому відношенні скаляр "з точки зору Matlab" (якщо можна так висловитися) є матрицею розміру 1х. Як відомо, масиви можна індексувати, тобто для доступу до елемента масиву вказується ім'я масиву та його індекс (або індекси). Індекси вказуються після імені матриці (масиву) у круглих дужках і поділяються комами. До скалярної змінної можна звертатися як на ім'я, і ​​вказавши індекси - у разі це (1,1). Приклад звернення до скалярної величини у звичайному режимі та за допомогою пари одиничних індексів показаний на малюнку 6.

Командою «MyVar=10» змінною «MyVar» надається значення «10». Звертатися до змінної можна як під назвою «MyVar», і у режимі звернення до елементу матриці «MyVar(1,1)». В обох випадках як результат повертається значення скалярної змінної MyVar.

Оскільки всі змінні Matlab апріорі розглядаються як матриці, ніяких особливих інструкцій при оголошенні матриць виконувати не потрібно, за винятком того, що для матриці необхідно задати значення її елементів. Робиться це досить просто. Список елементів матриці полягає в квадратних дужках, списки значень елементів рядка розділяються комами або пробілами, а списки значень різних стовпців поділяються крапкою з комою. Наприклад, командою «A=» визначається вектор-рядок (матриця розмірів 1х3) з елементами «1», «2» і «3» відповідно.

Малюнок 6

Командою "B=" задається вектор-стовпець (матриця розмірів 3х1) з елементами "4", "5" і "6". Нарешті, командою «C=» задається матриця розмірами 3х2 (3 рядки та 2 стовпці). Приклади виконання цих команд наведено у документі малюнку 7.

Малюнок 7

До елементів матриці можна звертатися у звичайному режимі, вказавши два індекси (номер рядка та номер стовпця, на перетині яких знаходиться елемент). Існує також спосіб звернення по узагальненому індексу. Узагальнений індекс елемента матриці визначається як його порядковий номер, якщо відлік починати з лівого верхнього елемента зверху вниз і від лівого стовпчика до правого. Так, якщо матриця «X» має розміри «n» на «m», то елемент з індексами «i» і «j» можна звернутися або як «X(i,j)», або як «X(n*( j-1) + i)». Хоча другий спосіб індексування елементів може здатися дещо заплутаним, він відповідає технічному способу індексації елементів матриці в пам'яті, тому обчислення у такому разі виконуються швидше. На малюнку 8 наведено фрагмент документа, в якому в різному режимі виконується звернення до елементів матриці C, визначеної раніше. Зокрема, командою C(1) отримуємо значення елемента C(1,1) (значення1). Інструкція "C(5)" є посиланням на елемент "C(2,2)", значення якого дорівнює "4".

Малюнок 8

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

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

Таблиця 1 Основні арифметичні оператори Matlab.

Оператор

Опис

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

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

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

Оператор поділу. Бінарний оператор. Якщо обидва операнди - скаляри, то як результат повертається приватне від поділу скаляра на скаляр. Якщо перший операнд - матриця, а другий - скаляр, як результат повертається матриця, кожен елемент якої виходить поелементним розподілом матриці-операнда на скаляр. Якщо обидва операнда - квадратні матриці одного рангу, як результат повертається добуток матриці - першого операнда на матрицю, зворотну до матриці - другого операнда.

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

Оператор лівостороннього поділу. Бінарний оператор. Операндами

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

Оператор поелементного множення. Бінарний оператор. Операнди є матриці однакового розміру. Результатом є матриця, елементи якої дорівнюють добутку відповідних елементів матриць-операндів.

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

Оператор поелементного лівостороннього поділу. Бінарний оператор. Операнди є матриці однакового розміру. Результатом є матриця того самого розміру. Виконується поділ елементів матриці – другого операнда на відповідні елементи матриці – першого операнда.

Оператор обчислення сполученої матриці. Унарний оператор. Результатом є матриця, пов'язана до матриці-оператора.

Оператор транспонування. Унарний оператор. Результатом є матриця, транспонована до матриці-операнду.

Оператор поелементного зведення на ступінь. Бінарний оператор.

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

Наведені оператори практично повністю перекривають весь спектр можливих операцій, які доводиться виконувати із матрицями. Деякі приклади використання арифметичних операторів з матричними операндами наведено у табл. 2. Матриці "A" і "B" при цьому ініціалізовані в документі наступними командами (жирним шрифтом виділено введення користувача):

>> A=

>> B=[-1,1;3,-2]

Таблиця 2 Приклади виконання арифметичних операцій із матрицями.

Опис

Добуток матриць.

Обчислюється за правилами обчислення матриць у лінійній алгебрі.

Розподіл матриць.

Матриця A множиться на матрицю, зворотну до матриці B.

Лівостороннє множення матриць.

Матриця, обернена до матриці A, множиться на матрицю B.

Поелементний поділ матриць.

Елементи матриці A поділяються відповідні елементи матриці B.

Лівосторонній поелементний поділ.

Елементи матриці B поділяються відповідні елементи матриці A.

Поелементне множення матриць.

Елементи матриці A множаться відповідні елементи матриці B.

Сума матриць.

Обчислюється за правилами обчислення суми матриць у лінійній алгебрі (складаються відповідні елементи матриць A та B).

Різниця матриць.

Обчислюється за правилами розрахунку різниці двох матриць (від елементів матриці A віднімаються відповідні елементи матриці B).

Транспонування матриці.

Результатом є матриця, що транспонується до матриці A.

Малюнок 9

Малюнок 10

Проте арифметичні оператори далеко ще не єдині оператори, використовувані при обчисленнях.

3. Логічні оператори та оператори порівняння

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

Зазвичай під логічними значеннями мають на увазі тип даних, змінні якого можуть набувати два значення - істинаі брехня(«true» та «false» відповідно). У Matlab будь-яке числове значення, відмінне від нуля, інтерпретується як істина(або "true"), а ненульові значення інтерпретуються як брехня(або "false"). Фактично, це правило переведення числових значень у логічні значення. Зворотне перетворення виконується за таким правилом: логічне значення істина(або «true») перетворюється на числове значення «1», а логічне значення брехня(або «false») перетворюється на числове значення «0».

Якщо певній змінній присвоїти як значення "true" або "false", відображається відповідно значення "1" або "0".

Операндами для операторів порівняння є числові значення. Це бінарні оператори. Якщо обидва операнди - скаляри, порівняння виконується за правилами порівняння чисел. При істинному співвідношенні повертається значення "1", при хибному - значення "0". Якщо операндами є матриці однакових рангів, порівнюються відповідні елементи матриць (за правилами порівняння числових значень). Результатом є "логічна матриця": її елементи дорівнюють 1 або 0 в залежності від результату порівняння відповідних елементів вихідних матриць. Якщо одним операндом є скаляр, іншим - матриця, то виконується порівняння кожного елемента матриці зі скаляром. Оператори порівняння перераховані в таблиці 3. бінарне програмування компілювання

Таблиця 3 Оператори порівняння Matlab.

Оператор

Опис

Оператор перевірки щодо рівності.

Оператор перевірки значень операндів щодо нерівності.

Оператор перевірки того, що значення першого операнда більше значення другого операнда.

Оператор перевірки того, що значення першого операнда менше значення другого операнда.

Оператор перевірки того, що значення першого операнда не менше значення другого операнда.

Оператор перевірки того, що значення першого операнда не більше значення другого операнда.

Як і у випадку операторів порівняння, операндами логічних операторів можуть виступати як скаляри, так і матриця (одночасно обидва або лише один). Якщо операндами є скаляри, відповідні логічні операції виконуються за описаними вище правилами перетворення числових і логічних значень. Якщо обидва операнди - матриці однакових розмірів, логічні операції виконуються поелементно. За умови, що один операнд – матриця, а другий – скаляр, логічна операція виконується для кожного елемента матриці та скаляра. Логічні оператори Matlab представлені у таблиці 4.

Таблиця 4 Логічні оператори Matlab.

Як в операціях порівняння, так і в логічних операціях для елементів матриць або скалярів (залежно від типу операндів) повертаються значення «0» (брехня) та «1» (істина).

4. Комплексні числа

У Matlab можна використовувати не лише дійсні, а й комплексні числа. Введення комплексних чисел у робочій області виконується відповідно до правил подання комплексних чисел. Як уявну одиницю можна використовувати, на вибір, змінні «i» або «j», без будь-якого попереднього оголошення. Однак якщо змінній «i» або «j» присвоїти числове значення, відповідну змінну як уявну одиницю задіяти не вийде.

>> z=1+2i

>> z+j

>> (2-4i)*(1+z)

12.0000 – 4.0000i

>> i* z

При введенні комплексного значення між уявною частиною та уявною одиницею оператор множення можна не ставити. За промовчанням для відображення уявної одиниці використовується символ «i» (хоча може вводитися як «j»). Існує ряд функцій, що полегшують роботу з комплексними числами. Серед них має сенс виділити функції «real()» і «imag()» для обчислення дійсної та уявної частин комплексного числа відповідно, функцію «conj()» для обчислення комплексно сполученого числа, а також функцію «complex()», що приймає два аргументу (дійсна та уявна частини), на підставі яких створюється комплексне число.

>> complex(3,-2)

3.0000 – 2.0000i

>> conj(ans)

3.0000 + 2.0000i

>> real(ans)

>> imag(2-4 i)

Комплексними можуть бути як скалярні величини, а й матриці.

Малюнок 11

5. Оператор створення інтервалу значень

Досить популярним і найчастіше використовується в Matlab є оператор "двокрапка", тобто «:». Існує кілька варіантів використання. Розглянемо найзагальніші. Для створення вектора-рядка зі значеннями, рівно розподіленими в деякому інтервалі, оператор використовують у наступному форматі: «нижня межа діапазону, оператор (тобто «:») та верхня межа діапазону» - наприклад: «x=a:b». У цьому створюється вектор-рядок (для наведеної команди вектор записується змінну «x»). Перший елемент вектора дорівнює нижній межі зазначеного діапазону (значення a). Крок дискретності зміни значень елементів вектора дорівнює одиниці. Значення останнього елемента визначається верхньою межею вказаного діапазону (у разі «b»). Так, командою x=1:10 створюється вектор-рядок зі значеннями 1, 2, 3 і т.д. до 10» включно (жирним шрифтом виділено введення користувача):

>> x=1:10

1 2 3 4 5 6 7 8 9 10

Малюнок 12

Якщо потрібно створити вектор-рядок з послідовністю значень та кроком дискретності, відмінним від одиниці, використовують той же оператор "двокрапка" (тобто «:»), але в дещо іншому форматі: «вказується нижня межа діапазону значень, оператор «двокрапка», крок дискретності, знову оператор "двокрапка", і верхня межа діапазону - наприклад: "y = a: m: b". Формується вектор-рядок з першим значенням – нижньою межею діапазону (для наведеної команди це «a»). Кожен наступний елемент виходить додаванням до попереднього величини, вказаної якість кроку дискретності (у разі «m»). Значення елементів сформованого масиву не перевищують верхню межу діапазону (тобто b). Приклад такого використання оператора "двокрапка" наведено нижче (уривок коду з робочої області, жирним виділено введення користувача):

>> y=1:0.7:10

Columns 1 through 8

0000 7000 2.4000 3.1000 3.8000 4.5000 5.2000 5.9000

Columns 9 through 13

6.6000 7.3000 8.0000 8.7000 9.4000

Малюнок 13

В даному випадку створюється вектор рядок y зі значеннями від 1 до 10 з кроком дискретності 0.7 - значення 0, 7, 2.4 і т.д. до 9.4 включно (наступне гіпотетичне значення в послідовності 10.1 перевищує верхню межу діапазону 10, тому у формований вектор воно не входить). Повідомлення "Columns 1 through 8" і "Columns 9 through 13" з'являються автоматично як наслідок того, що результат виконання команди "y=1:0.7:10" в один рядок не міститься, тому виконується перенесення частини вектора-результату в наступний рядок. Дані повідомлення мають полегшити процес індексної ідентифікації елементів.

Другий спосіб використання оператора "двокрапка" - при індексуванні елементів. Як і в попередньому випадку, існує кілька форматів, або правил використання оператора "двокрапка" в індексах.

Наприклад, якщо оператор "двокрапка" використовується у форматі «A(i:j,k)»,

то як результат повертається вектор-стовпець, який формується з елементів матриці "A", що знаходяться в "k-му" стовпці з "i-й" по "j-му" рядок включно. Посилання у форматі «A(:,k)» повертає як значення весь «k-й» стовпець матриці «A».

Можна використовувати оператор "двокрапка" при вказівці відразу двох індексів. Наприклад, командою «A(i:j,m:n)» повертається підматриця, що складається їх рядків з «i-ї» по «j-ю» і одночасно стовпців з «m-го» по «n-й».

Розглянемо деякі приклади використання оператора "двокрапка".

Зокрема, вихідна матриця A вводиться командою:

A=

У наступних командах оператор "двокрапка" використовується для вилучення підматриць з вихідної матриці "A":

>> A(1:3,2)

>> A(3,2:4)

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

Наприклад, командою «A(1:3,2)» повертається вектор-стовпець, складений з елементів з першого по третій рядок у другому стовпці матриці «A». Командою "A(3,2:4)" повертається вектор-рядок, який складений з елементів третього рядка з другого по четвертий стовпець включно матриці "A". Нарешті, командою "A(3:4,1:2)" повертається підматриця матриці "A", верхній лівий елемент якої має індекси "(3,1)", а нижній правий елемент має індекси "(4,2)".

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

У Matlab за замовчуванням є досить велика кількість вбудованих функцій. Ядро їх становлять математичні функції, які практично застосовуються порівняно часто. Деякі їх перелічені у таблиці 5.

Таблиця 5 Деякі математичні функції Matlab.

Опис

Модуль числа (у тому числі комплексного), вказаного аргументом функції.

Арккосинус для числа, вказаного аргументом функції.

Арккосинус аргумент функції. Результат представлений у градусах.

Арккотангенс числа, вказаного аргументом функції.

Арккотангенс аргумент функції. Результат представлений у градусах.

Арккосексанс числа, вказаного аргументом функції.

Арккосексанс аргументу функції. Результат представлений у градусах.

Арксеканс числа, вказаного аргументом функції.

Арксеканс аргументу функції. Результат представлений у градусах.

Арксеканс гіперболічний від числа, вказаного аргументом функції.

Арксинус від числа, вказаного аргументом функції.

Арксінус аргументу функції. Результат представлений у градусах.

Арксинус гіперболічний від числа, вказаного аргументом функції.

Арктангенс від числа переданого аргументом функції.

Функція має два аргументи (наприклад, atan(y,x)). Як результат повертається напрямок (кут у діапазоні значень від -р до р) на точку з відповідними координатами (у даному випадку, точка з координатами (y, x)). Якщо аргументи комплексні, їх уявні частини ігноруються.

Арктангенс аргумент функції. Результат представлений у градусах.

Арктангенс є гіперболічним від числа, переданого аргументом функції.

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

Косинус від числа, переданого аргументом функції.

Косинус аргументу функції, вказаного у градусах.

Косинус гіперболічний від числа переданого аргументом функції.

Котангенс від числа переданого аргументом функції.

Котангенс аргументує функцію, зазначену в градусах.

Котангенс є гіперболічним від числа, переданого аргументом функції.

Косеканс від числа, переданого аргументом функції.

Косеканс аргументу функції, вказаного у градусах

Косеканс гіперболічний від числа переданого аргументом функції.

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

Командою виду expm1(x) з підвищеною точністю обчислюється значення exp(x)-

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

Функція обчислення факторіалу числа, вказаного аргументом функції.

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

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

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

Корінь квадратний із суми квадратів модулів аргументів, переданих функції.

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

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

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

Логарифм на підставі 10 від числа, вказаного аргументом функції.

Командою виду log1p(x) із підвищеною точністю обчислюється значення log(1+x).

Логарифм на підставі 2 від числа, вказаного аргументом функції.

Функцією повертається залишок від розподілу значення першого аргументу функції значення другого аргументу. Ціла частина відділення визначається функцією froor().

Функцією як значення повертаються біноміальні коефіцієнти. Якщо функція викликана у форматі nchoosek (n,k), то як результат повертається значення: ,

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

Командою nthroot(x,n) як значення повертається корінь порядку n (другий аргумент) із дійсного числа або елементів дійсного масиву x (перший аргумент).

Функція може викликатись з одним або двома аргументами. Якщо функції один аргумент (масив) і функція викликається у форматі pow2(x), то як результат повертається масив ступенів двійки, показники ступеня визначаються масивом x. Якщо функція викликається з двома аргументами у форматі pow2 (x, y), результатом є x.*2.^y.

Функція має два аргументи. Якщо аргументи скалярні, як результат повертається значення першого аргументу, зведене до ступеня, що визначається другим аргументом. У загальному випадку як результат виконання команди power (A,B) повертається "A.^B".

Функцією генерується перелік простих чисел. Кількість чисел зазначається аргументом функції.

Функцією повертається залишок від розподілу значення першого аргументу функції значення другого аргументу. Ціла частина відділення визначається функцією fix().

Функція заокруглення аргументу до найближчого цілого значення.

Секанс від числа, вказаного аргументом функції.

Секанс аргументу функції, вказаного у градусах.

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

Синус від числа, вказаного аргументом функції.

Синус аргументу функції, вказаного у градусах.

Корінь квадратний із числа, вказаного аргументом функції.

Опис

Тангенс від числа, вказаного аргументом функції.

Тангенс аргументує функцію, зазначену в градусах.

Хоча більшість із наведених вище функцій з математичної точки зору визначені для скалярних величин, зазвичай вони можуть застосовуватися і для аргументів-матриць. В цьому випадку дія функціонального оператора застосовується до кожного з елементів матриці. Наприклад, якщо змінна "A" є матрицею з елементами "A(i,j)", то в результаті виконання команди "exp(A)" отримаємо матрицю того ж рангу, а її елементи обчислюються як "exp(A(i,j) ))». У деяких випадках такий підхід є неприйнятним. Існують звані матричні функції, аргументами яких за визначенням є матриці (переважно квадратні). Результат цих функцій обчислюється за алгоритмами, розробленими спеціально для матриць. Так, у Matlab є вбудовані матричні функції для експоненти, логарифму та квадратного кореня. Це відповідно функції expm(), logm() і sqrtm(). Наприклад, якщо "A" - квадратна матриця, то функцією "expm(A)" обчислюється матрична експонента. За визначенням це ряд:

Результатом є матриця, яка обчислюється, як правило, на основі власних чисел та власних векторів матриці «A». Матричний логарифм для аргументу-матриці "A", що обчислюється інструкцією "logm(A)", являє собою матрицю таку, що матрична експонента від неї дорівнює матриці "A". Іншими словами, за визначенням якщо "B=logm(A)", то "expm(B)=A", і функція "logm()" є зворотною до функції "expm()". Аналогічно, в результаті вилучення квадратного кореня з матриці «A» за допомогою функції sqrtm() отримуємо матрицю, яка, будучи зведеною в квадрат, дає матрицю «A». Наприклад, якщо B=sqrtm(A), то B*B=A.

У Matlab також широко представлені спеціальні функції, деякі з них наведені в таблиці 6.

Таблиця 6. Деякі спеціальні математичні функції Matlab.

Опис

Функція Ейрі.

Функція Бесселя третього роду (функція Ханкеля).

Командою besseli(n,x) повертається модифікована функція Бесселя першого роду (індексу n).

Командою besselj(n,x) повертається функція Бесселя першого роду (індексу n), яка одна із рішень рівняння Бесселя.

Командою besselk(n,x) повертається модифікована функція Бесселя другого роду (індексу n), яка одна із рішень модифікованого рівняння Бесселя. Для індексів відповідний вираз розраховується як ліміт.

Командою besselj(n,x) повертається функція Бесселя другого роду (індексу n), яка є одним із рішень рівняння Бесселя. Для індексів відповідний вираз розраховується як ліміт.

Бета-функція Ейлера.

Неповна бета-функція Ейлер.

Логарифм натуральний від бета-функції Ейлера. Аргументами передаються аргументи бета-функції.

Еліптична функція Якобі. Якщо функція викликається з двома аргументами у форматі ellipj(u,m), як результат повертаються значення (вектор) для функцій sn(u) , cn(u) та dn(u).

Функція обчислення повного еліптичного інтеграла першого і другого роду (вектор значень).

функція помилок.

Функція помилок (залишкова).

Функція помилок (залишкова нормована).

Обернена функція до функції помилок erf().

Обернена функція до функції помилок erfc().

Інтегральний експонент.

Гамма-функція Ейлера.

Неповна гама-функція.

Логарифм натуральний від гамма-функції Ейлера. Аргументом функції передається аргумент гамма-функції.

Функція обчислення приєднаних поліномів Лежандра. В результаті виклику функції у форматі legendre(n,x) повертається вектор-стовпець значень приєднаних поліномів Лежандра m() Pn xдля m= 0,1,2,...,n

ПСІ-полігамна функція.

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

7. Формат виведення числових даних

У деяких випадках доводиться змінювати спосіб, яким дані з результатом виконання команд виводяться на екран. Насамперед зазначимо, що можна взагалі не відображати результату виконання команди в командному вікні. Для цього достатньо відповідну команду закінчити крапкою з комою (тобто «;»). У цьому випадку після натискання клавіші Enter команда виконується, але результат її виконання в командному вікні не відображається. Такий режим особливо зручний у випадках, коли потрібно виконувати громіздкі проміжні розрахунки, які, з одного боку, необхідні отримання кінцевого результату, з другого - захаращують робочий простір. Тому розумний вихід із такої ситуації – приховати результат виконання команди. Числовий формат виведення в явному вигляді визначається за допомогою інструкції «format». У команді визначення формату виводу після ключового слова «format» вказується формат, що застосовується. Допустимі формати, з коротким їх описом, перелічені у таблиці 7.

Таблиця 7 Числові формати.

Опис

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

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

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

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

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

Залежно від значення, для відображення застосовується формат з плаваючою точкою, або з фіксованою точкою. Після десяткової коми відображається 7, 14 чи 15 цифр.

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

Інженерний формат з 7, 14 або 15 цифрами, що відображаються після десяткової точки і показником ступеня, кратним трьом.

Формат, при якому для позитивних чисел відображається знак +, для негативних відображається знак -, а для нуля відображається пробіл.

Фінансовий формат, коли після десяткової точки відображається дві цифри.

Відображення чисел у шістнадцятковій системі числення.

Відображення чисел у вигляді раціонального дробу.

Режим відображення результатів обчислень у компактній формі зі зменшеними інтервалами між рядками.

Режим відображення результатів обчислень із збільшеними інтервалами між рядками. Використовується за промовчанням.

Нижче наведено приклад відображення числа р у різних форматах (у командах використана вбудована константа Matlab pi):

>> pi

>> format long

>> pi

3.141592653589793

>> format long e

>> pi

3.141592653589793e+000

>> format long eng

>> pi

3.14159265358979e+000

>> format bank

>> pi

>> format rat

>> pi

>> format +

>> pi

Малюнок 14

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

Практичначастина

1. Створити вектор-рядок: початковий елемент дорівнює – р, кінцевий р, крок дорівнює 0. Транспонувати рядок у стовпець.

2. Створити три вектор-рядки з 5 елементів fi = , де n = 5 для x = 2, 3, 4. Об'єднати ці рядки в матрицю А (3 5).

3.Створити три вектор-стовпці з 5 елементів арифметичної прогресії. Елемент арифметичної прогресії розраховується за такою формулою:

де "аn-1" - попередній елемент; "аn" - наступний.

П'ять елементів вектора формуються, починаючи із завдання першого елемента «а» та c використанням кроку арифметичної прогресії «d» для завдання наступних елементів:

Для першого вектор-стовпця: a = 2; d = 1:

Для другого вектор-стовпця: a = 7; d = 2:

Для третього вектор-стовпця: a = 10; d = -2:

4. Об'єднати ці вектор-стовпці в матрицю (5 Ч 3).

5. Транспонувати матрицю і об'єднати з матрицею А в матрицю М(6 Ч 5).

6. З матриці A прибрати другий рядок.

7. У матриці обнулити третій рядок і прибрати два останні рядки.

8. Створити матрицю Н(2×2) шляхом виділення перших двох рядків і стовпців матриці М.

9. Створити за допомогою функції repmat матрицю, що складається з 2×3 матриць Н.

10. Створити матриці розмірністю 3×3:

C - одиниць:

F – рівномірно розподілених випадкових чисел:

E – нормально-розподілених випадкових чисел:

11. Знайти мінімальний елемент у матриці рівномірно-розподілених чисел розмірністю 3×5, використовуючи функцію «reshape».

1. Побудувати на відрізку [-1,-0.3] з кроком 0.005 графіки функцій, що обгинають.

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

2. Побудувати графіки добових температур; значення векторів часу та температури за два дні наведено нижче.

Час – 0 4 7 9 10 11 12 13 13.5 14 14.5 15 16 17 18 20 22.

Температура 10 травня - 14 15 14 16 18 17 20 22 24 28 25 20 16 13 13 14 13. Температура 11 травня - 12 13 13 14 16 18 20 20 21 21

Оформити графіки заголовком "All temperature", по осі "Х" підписати "Time"; по осі "У" `Temperature"; у легенді - "10 may", "11 may" і розмістити її в нижньому лівому кутку.

3.Побудувати 3-вимірні графіки функції:

z(x,y) = 4 sin(2р x) cos(5р y)(1 - x 2 )y(1 ?y)

на прямокутній ділянці «x [?1], y » з кроком 0.05 усіма способами, розглянутими в лабораторній роботі, розміщуючи в окремих областях одному вікні. Назви функцій, які застосовуються для побудови графіків, включити до заголовків цих графіків.

Розміщено на Allbest.ru

...

Як і більшість інших мов програмування, Matlab надає можливість використання математичних виразів, але, на відміну від багатьох з них, ці вирази в Matlab включають матриці. Основні складові виразу:

Змінні;

Оператори;

Опції.

Змінні. У Matlab немає потреби у визначенні типу змінних або розмірності. Коли Matlab зустрічає нове ім'я змінної, він автоматично створює змінну та виділяє відповідний обсяг пам'яті. Якщо змінна вже існує, Matlab змінює її склад і якщо необхідно виділяє додаткову пам'ять. Наприклад,

num_ students = 25

створює матрицю 1x1 з ім'ям num_ studentsі зберігає значення 25 її єдиному елементі.

Імена змінних складаються з букв, цифр або символів підкреслення. Matlab використовує лише перші 31 символ імені змінної. Matlab чутливий до регістрів, він розрізняє великі і малі літери. Тому Aі a- не та сама змінна. Щоб побачити матрицю, пов'язану зі змінною, просто введіть назву змінної.

Числа. Matlab використовує прийняту десяткову систему числення, з необов'язковою десятковою точкою та знаками плюс-мінус для чисел. Наукова система числення використовує букву eвизначення множника ступеня десяти. Уявні числа використовують iабо jяк суфікс. Деякі приклади правильних чисел наведені нижче:

Усі числа для зберігання використовують формат long, це числа з плаваючою точкою володіють обмеженою точністю - приблизно 16 значущих цифр і обмеженим діапазоном - приблизно від 10 -308 до 10 308 .

Оператори.Вирази використовують звичайні арифметичні операції та правила старшинства (табл. 1).

Таблиця 1

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

Опції. Matlab надає велику кількість елементарних математичних функцій, таких як abs, sqrt, exp, sin. Обчислення квадратного кореня чи логарифма негативного числа є помилкою: у разі результатом є відповідне комплексне число. Matlab також надає і більш складні функції, включаючи функцію Гамма і функції Бесселя. Більшість із цих функцій мають комплексні аргументи. Щоб вивести список усіх елементарних математичних функцій, наберіть:

helpelfun

Щоб переглянути перелік усіх функцій Matlab для аналізу даних:

helpdatafun

Якщо вам потрібно дізнатися про StatisticsToolbox, введіть:

helpstats

Список елементарних функцій наведено в табл. 2.

Таблиця 2

Елементарні функції пакету Matlab

Логарифм числа на підставі:.

Для виведення складніших математичних і матричних функцій наберіть:

helpspecfun

helpelmat

відповідно.

Деякі функції, такі як sqrtі sin, - вбудовані. Вони є частиною Matlab, тому вони є дуже ефективними, але їх обчислювальні деталі важко доступні. У той час як інші функції, такі як gammaі sinh, реалізовані у m-файлах. Тому можна побачити їхній код і, у разі потреби, навіть модифікувати його.

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

Нескінченність з'являється при розподілі на нуль або при виконанні математичного виразу, що призводить до переповнення, тобто до перевищення realmax. Не число ( NaN) генерується при обчисленні виразів типу 0/0 або Inf/ Inf, які мають певного математичного значення.

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

eps = 1. e-6

cleareps

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

ТАМБІВСЬКИЙ ДЕРЖАВНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ


КАФЕДРА

«Інформаційні процеси та управління»

Методична розробка

для проведення лабораторного заняття №1

з дисципліни "Теорія прийняття рішень"

Назва дисципліни

найменування теми

Тема:Дослідження методів одновимірної оптимізації

Мета роботи:

Вивчення методів одновимірної оптимізації та способів їхньої алгоритмічної реалізації в середовищі багатофункціональної інтегрованої системи автоматизації математичних та науково-технічних розрахунків MATLAB 7.1;

Порівняльна оцінка за обсягом обчислювальних витрат методів: прямого сканування, дихотомії, «золотого перерізу» та методу Фібоначчі.

Література:

1. Аок М. Введення в методи оптимізації. М: Наука, 1977. 444 с.

2. Батіщев Д.І. Методи раціонального проектування. М.: «Радіо та зв'язок», 1984. 248 с.

3. Бодров В.І., Лазарєва Т.Я., Мартем'янов Ю.Ф. Математичні методи прийняття рішень: Навч. допомога. Тамбов: Вид-во Тамб. держ. тех. ун-ту, 2004. 124 с.

4. Полак Е. Чисельні методи оптимізації. М.: Світ, 1997. 376 з.

5. Хіммельблау Д. Прикладне нелінійне програмування. М.: Світ, 1975. 534 з.

6. Юдін Д.Б. Обчислювальні методи теорії ухвалення рішень. М: Наука, 1989. 316 с.

7. Кетков Ю. Л., Кетков А. Ю., Шульц М. М. MATLAB 7: програмування, чисельні методи. – СПб.: БХВ-Петербург, 2005. – 752 с

З проведення заняття

Лабораторні заняття з дисципліни "Теорія прийняття рішень" проводяться з метою поглиблення та закріплення теоретичних знань, отриманих студентами на різних видах занять та у процесі самостійного вивчення навчального матеріалу, набуття ними навичок практичної реалізації математичних методів прийняття рішень. За результатами лабораторних занять студенти мають

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

Основні методи моделювання відповідних процесів;

Виконувати вибір та оцінку впливу основних параметрів на результат моделювання;

Аналізувати та узагальнювати отримані результати.

Виконання лабораторної роботи включає три етапи: попередню підготовку до лабораторного заняття, безпосередньо заняття, звітність з лабораторного заняття.

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

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

Підготовка до заняття

Напередодні заняття студенти мають:

Ознайомиться з посібником з даного лабораторного заняття;

Повторити лекційний матеріал та вивчити пропоновану літературу з цієї теми;

Вивчити порядок виконання роботи;

Підготуватися до відповіді контрольні питання.

Порядок проведення заняття

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

Далі студенти приступають до проведення досліджень відповідно до методики. З усіх незрозумілих питань щодо лабораторного заняття студенти повинні звертатися до викладача, інженерно-технічного складу або інструктора комп'ютерного класу. Результати досліджень та висновки оформлюються у вигляді звіту з лабораторного заняття. Звіт є робочим документом студента та подається провідному викладачеві під час захисту. Далі проводиться захист звітів з лабораторного заняття, а після закінчення - підбиття підсумків заняття.

Звітність із заняття

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

Коротка характеристика MATLAB

Система MATLAB (Matrix Laboratory) складається з великої кількості спеціальних програм, що дозволяють вирішувати широкий спектр математичних та технічних завдань із різних галузей науки. Головним її елементом є ядро ​​системи MATLAB. На додаток до нього система містить близько 80 різних комплектів команд (т.зв. "Toolboxes"), що відповідають різним розділам математики, математичної фізики, проектування, зв'язку, економіки і т.д. У роботі використовуються базові засоби програмування MATLAB: М-файли – функції, вбудовані функції, оператори, команди тощо.

Рис.1. Робочий стіл системи

На рис.1 представлений робочий стіл системи. Рядок меню (File, Edit, тощо) багато в чому схожий з аналогічним рядком редактора Microsoft Word. Розташований нижче ряд іконок також виконують самі операції, що у редакторі Word (крім 3-х останніх). Робочий стіл системи складається з кількох вікон, склад яких можна змінювати за допомогою команд меню Desktop.На рис.1 у верхньому вікні зліва наводиться вміст робочого простору Workspace, куди поміщені описи всіх констант та функцій, введених користувачем у процесі роботи. У нижньому вікні Command Historyнаводиться послідовність виконаних команд. Розміри вікон регулюються перетягуванням кордону за допомогою миші. Головне вікно робочого столу – Command Window(Командне вікно). У командному вікні після знака ">>" набирається командний рядок, який виконується після натискання клавіші " Enter".

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

Формат числа задається меню File(рис.1) у розділі Preferencesза допомогою функції Numeric Format.Найбільш часто використовуваними з 12 можливих є формати Shortі Long- Коротка і довга формати чисел.

Одними з основних понять MATLAB є змінні і затвердження .

Зміннапозначається однією літерою або набором літер та цифр, що починається з літери. Число літер та цифр у наборі в сумі не повинно перевищувати дев'ятнадцять. Твердження має таку форму:

>>змінна=вираз

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

Основні арифметичні оператори наведено у табл.1.1. Під час виконання обчислень у командному вікні після натискання клавіші " Enter"результат присвоюється параметру" ans", якщо відповідному виразу не присвоєно ім'я, або його імені - в іншому випадку (імена змінних, констант та функцій повинні починатися з літери (літери латинські), можуть містити цифри та символ підкреслення). Для блокування висновку результату обчислень деякого виразу після нього треба встановити знак (точка з комою).

Таблиця 1.1

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

>> x=log(1+5*((log10(100))^2-0.2*pi)/sqrt(1+2.71828^3))

Після запровадження твердження, тобто. натискання клавіші Enter, нижче відразу видається результат. Якщо результат необхідно заблокувати, тобто. не треба видавати на екран дисплея, то наприкінці затвердження потрібно поставити знак « ; (точку з комою). Попереднє вираз можна уявити і в іншій формі:

>> a=(log10(100))^2;

>> b = sqrt (1 +2.71828 ^ 3);

>> x=log(1+5*(a-0.2*pi)/b)

MATLAB має кілька вбудованих змінних: pi, eps, inf, iі j.Змінна piпозначає число , eps=2 -52 =2.2204*10 -16 – похибка операцій над числами з плаваючою точкою, inf- нескінченність ( ), iі j- уявну одиницю ( i = j= ).

Коли аргумент ліворуч не вказано, результат виразу надається загальної змінної ans.

Оператори відносини (табл. 1.2) використовують у умовних операторах, операторах циклу тощо. при реалізації алгоритмів пошуку з використанням М-функцій (підпрограми-функції записуються у файлах з розширенням m).

Таблиця 1.2

Отже, програмами в системі MATLAB є файли М текстового формату, що містять запис програм у вигляді програмних кодів.

Вхідна мова MATLAB налічує лише 9 операторів, які використовують 14 службових слів. Відповідні синтаксичні конструкції наведені у табл. 1.3.

Таблиця 1.3

Формат оператора Пояснення
var = expr Оператор присвоєння. Обчислює значення виразу expr та заносить результати обчислень у змінну var
ifумова_1 оператори_1 end Умовний оператор. Якщо справедлива умова_1, то виконується група оператори_1, якщо справедлива умова_2, то виконується група оператори_2, ... Якщо всі зазначені умови виявляються помилковими, то виконуються оператори, розташовані між else та end
switchexpr casevail оператори_1 caseval2 оператори_2 . . . . . . . . . [ othervise оператори] end Перемикач за значенням виразу expr. Якщо воно збігається з величиною vail , то виконується група оператора_1, якщо воно збігається з величиною val2, то виконується група оператора_2, ... Якщо значення expr не збігається з жодною з перерахованих величин, то виконуються оператори, розташовані між othervise і end
forvar=el:e3 оператори end Цикл типу арифметичної прогресії, в якому змінна var при кожному повторенні тіла циклу змінюється від початкового значення el з кроком е2 до кінцевого еЗ
whileумова оператори end Цикл з передумовою, що повторюється доти, доки істинно зазначена умова
try оператори_1 catch оператори 2 end Спроба виконати групу операторів_1. За умови, що в результаті їх виконання виникає виняткова ситуація, управління передається групі операторів_2 (обробка збійних ситуацій). Якщо помилка не виникла, то група оператора_2 не виконується
break Достроковий вихід з конструкцій типу for , while, switch, try - catch
function f1 function f2 (x1, x2, . . .) function y = f3 (xl, x2, ...) function = f4 (xl, x2, ...) Заголовок функції (xl, х2, ... - вхідні параметри; y, yl, у2, ... -вихідні параметри)
return Достроковий вихід із тіла функції

Під час написання програм-функцій потрібно, щоб ім'я М-файлу, у якому запам'ятовується програма, обов'язково збігалося з ім'ям функції.

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

Мова MATLAB не містить оператора goto. У зв'язку з цим у текстах m-файлів відсутні мітки операторів. Для ідентифікації рядків, у яких виникають аварійні ситуації, використовуються внутрішні номери автоматично, що присвоюються системою.

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

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

Розмноження матриці на число, записане різними способами

З того часу минуло понад тридцять років. За ці роки про MATLAB були написані десятки книг, він став однією зі стандартних мов для науково-технічних розрахунків. Відносна простота мови і висока швидкість обчислень, що виконуються з його допомогою, збереглися і, як і раніше, залишаються привабливими сторонами пакета. Але за рахунок чого це досягається? Як улаштований сучасний MATLAB?

Як і раніше, у MATLAB «під капотом» найсучасніші математичні бібліотеки. Зараз це: Intel Math Kernel Library (MKL) для операцій лінійної алгебри та Intel Integrated Performance Primitives Library (IPPL) – для оптимізації обробки зображень. MKL включає, зокрема, бібліотеки: BLAS , що реалізує базові векторно-матричні операції, і LAPACK - сучасний розвиток LINPACK - що містить вирішувачі завдань лінійної алгебри. Тому не дивно, що за швидкістю виконання MATLAB обганяє будь-який «саморобний» код, що реалізує векторно-матричні операції. Також впевнено оминає він і пакети, які використовують інші реалізації BLAS та LAPACK.

Справа в тому, що MKL та IPPL використовують SSE та AVX - набори інструкцій для процесора, які реалізують паралельні обчислення, у разі, коли потрібно виконати ту саму послідовність дій над різними даними (SIMD). Це призводить до суттєвого зростання продуктивності, причому без будь-яких зусиль з боку користувача.

Крім того, MATLAB, ймовірно, використовує SSE/AVX та у функціях свого ядра, які реалізовані на С. Принаймні, для розробки пакету MathWorks використовує Intel Parallel Studio XE, до складу якого входить компілятор C/C++.

Цікаво, що на комп'ютерах з процесорами AMD MATLAB також використовує бібліотеки, розроблені в Intel, хоча AMD реалізувала свою бібліотеку зі подібними можливостями – AMD Core Math Library (ACML).

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

Визначення версій бібліотек MATLAB за допомогою функції version

Щоб ефективно використовувати ці можливості, потрібно «векторизувати» програму, т. е. замінити використання циклів операціями над масивом загалом, які й реалізуються швидкими функціями MATLAB.

Але й цикли були забуті. У 2003 р. у складі MATLAB (версії 6.5, R13) з'явився JIT-компілятор. Він аналізує виконувану програму, транслюючи фрагменти, що повторюються, в машинний код. В результаті, при наступних повтореннях швидкість виконання цих фрагментів значно зростає (іноді - до 100 разів), що дозволяє зробити деякі цикли майже настільки ж швидкими, як їх векторизовані аналоги. Але: щоб JIT-компілятор можна було успішно застосувати, код циклу повинен задовольняти певним вимогам.

Коротке зведення цих вимог, а також порад з векторизації програми, можна отримати в роботі Writing Fast MATLAB Code, а більш детальну та свіжу інформацію - у блозі Undocumented Matlab Яїра Альтмана або на сторінках його книги “Accelerating MATLAB Performance” - найбільш детальному на сьогоднішній день посібнику з оптимізації програм MATLAB. До речі, наведене вище використання функції version також стосується недокументованих можливостей пакета.

Як дешевшу альтернативу MATLABу можна використовувати Python з бібліотеками NumPy/SciPy та встановленою MKL. При цьому замість JIT-компілятора MATLAB використовуються Numba або Cython. Численні тести, результати яких можна знайти в Інтернеті (наприклад, цей), говорять про те, що MATLAB і зв'язка Python + SciPy видають дуже близькі за швидкодією результати, так що на перший план виступають вміння програміста та його знання особливостей конкретного пакету.

Дмитро Храмов