Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






ІНТЕГРОВАНІ ПАКЕТИ ПРИКЛАДНИХ ПРОГРАМ

ІНТЕГРОВАНІ ПАКЕТИ ПРИКЛАДНИХ ПРОГРАМ

Викладач: Бовсуновська К.С.

ЗМІСТ

Вступ

Експлуатаційні характеристики системи MatLab та робота з нею…………………7

Математичні САПР та їх експлуатаційні характеристики………………..….……...7

Загальна характеристика MATLAB як системи автоматизації науково технічних розрахунків та середовища програмування………………………………….…..…...9

Технічні характеристики системи MatLab та галузі її використання……………...10

Перелік головних математичних можливостей системи MatLab…………...……..11

Інсталяція та завантаження системи MatLab………………………………………..13

Інтерфейси різних версій системи MatLab та їх особливості Загальний вигляд системи меню оболонки MatLab ……………………………………………….……15

Команди опції меню Edit…………………………………………………………..…17

Особливості інтерфейсу оболонки MatLab та її довідникової системи……..……21

Загальні основи роботи із системою. Математичні бібліотеки……………..…......21

Моделювання електронних схем, систем та сигналів. Інші функції системи……22

Особливості файлової структури оболонки MatLab……………………..……..…..25

Як зберегти свій проект у системі MatLab та відкрити його……….………………26

Вхідна мова системи MatLab та проведення простих обчислень……...……..……28

Матриці, вектори та числа як основні поняття вхідної мови системи MatLab……………………………………………………..……….…………………28

Числа, змінні та математичні вирази в системі MatLab……………………………30

Системні константи та змінні у системі MatLab……………………………………32

Текстові коментарі в програмах, написаних мовою MatLab………….……………34

Змінні у системі MatLab та робота з ними………………………………………….36

Визначення матриць та векторів……………………………………………………37

Головні команди текстового редактора системи MatLab…………………..……..41

Оператори системи MatLab. Узагальнена класифікація операторів системи MatLab…………………………………………………………………….….………41

Арифметичні оператори…………………………………………………….………45

Оператори математичних співвідношень…………………………….………….....47

Логічні оператори…………………………………………………..………….……50

Спеціальні символи та їх використання………………………...……….…………..51

Визначення матриць та векторів………………………………..…………..………..55

Функції перетворення матриць…………………………………………….………..60

Функції в системі MatLab. Загальні правила роботи з функціями в системі MatLab……………………………………………………………………….…….….62

Функції користувача та їх описання………………………………..……….………64

Механізм оброблення зовнішніх функцій у системі MatLab………………….….65

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

Дії з множинами…………………………………………………………….……….69

Елементарні математичні функції для роботи з числовими даними. Тригонометричні функції…………………………………………….……………..73

Зворотні тригонометричні функції………………………………….……………….75

Гіперболічні та зворотні гіперболічні функції……………………………………..77

Експоненціальна, степенева та логарифмічна функції…………………………..…78

Функції округлення та обчислення цілої частини числа…………………………80

Графічні функції системи MatLab та особливості їх використання………….…..81

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

Зміна властивостей графіків через систему меню……………………….…………82

Зміна властивостей та групування графіків через командні рядки.………………84

Зміна властивостей графіків через параметри функції plot……..…………………88

Зміна властивостей побудованих графічних об’єктів за допомогою дескрипторної графіки…………………………………………………………………………..……..94

Спеціальні функції двовимірної графіки у системі MatLab. Побудова графіків у логарифмічному та напівлогарифмічному масштабах……………………………95

Стовпчикові діаграми та гістограми………………………………...……..………96

Сходинкові графіки……………………………………………………….…….…..98

Побудова графіків із зонами похибки даних………………………..…………..…99

Побудова графіків у полярній системі координат………………………….……100

Побудова графіків від аналітично заданої функції…………………….…..…….101

Систематизація графічних команд двовимірної графіки……………….…….….101

Список рекомендованої літератури……………………………...…………………131


ЕКСПЛУАТАЦІЙНІ ХАРАКТЕРИСТИКИ СИСТЕМИ MatLab ТА РОБОТА З НЕЮ

 

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

 

Технічні характеристики системи MatLab та галузі її використання

 

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

 

Інтерфейси різних версій системи MatLab та їх особливості

Команди опції меню Edit

У пункті меню Edit знаходяться стандартні операції обміну даних для оболонки Windows: Copy— копіювати, Cut—вирізати та Paste — вставити. Якщо немає виділених рядків,то команди Copy та Cut неактивні, тоді у спливаючому меню вони пишуться не яскраво?чорним, а блідо?сірим кольором. Виділення тексту програми у вікні командного рядка здійснюється стандартним способом — натисненням лівої кнопки миші. Опція Clear меню Edit видаляє текст без його копіювання у буфер обміну даних, а опція Clear Session очищує командне вікно, значення всіх уведених змінних зберігаються. Опція Select All призначена для виділення всього вмісту командного вікна.

Опція меню Clear Session призначена для очищення командного вікна. Спливаюче вікно команди Меню команди Edit

 

Команда головного меню Window

Команда Window аналогічна подібній команді інших засобів текстового редактора. При зверненні до неї з’являється спливаюче меню списку відкритих вікон. До них можна звернутися, підвівши курсор до відповідного рядку списка та натиснувши ліву кнопку миші. Наприклад, після виведення графіків в окремому вікні, можна звернутися до нього через команду Window.


 

 

Математичні бібліотеки

• розв’язання задач оптимізації (Optimization Toolbox);

• чисельне розв’язання диференціальних рівнянь у часткових похідних та їх систем (Partial Differential Equation (PDE) Toolbox);

• розв’язання статистичних задач (Statistics Toolbox);

• розв’язання задач сплайнової інтерполяції (Spline Toolbox);

• символічні математичні перетворення.

 

Інші функції системи

• робота з базами даних Database Toolbox;

• система математичного оброблення зображень (Image Processing Toolbox та Wavelet Toolbox);

• математичні бібліотеки розв’язання задач економіки та бізнесу, зокрема основні та допоміжні функції, а також часові ряди для проведення фінансових обчислень (Financial Toolbox, Financial Derivatives Toolbox, Financial Times Series).

Одна з переваг системи MatLab, і завдяки їй вона є найпопулярнішою САПР серед професійних програмістів. Розвинута довідникова система, за вміння користуватися нею, допомагає фахівцям під час розв’язання складних задач. Але скористатися наведеною структурою не завжди зручно. Так, розділи пакету Simulink, у яких описується можливість моделювання схем, систем та сигналів, мають досить прозору структуру, а кількість розділів, у яких описуються математичні функції пакету MatLab, — досить обмежену.

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

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

повернутися на крок назад (Back),

перейти на крок уперед (Forward ),

та перезавантажити поточну сторінку (Reload).

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

Біля текстового вікна знаходиться кнопка «Add to Favorites» — «Запам’ятати сторінку». Натиснувши на цю кнопку користувач може додати до списку сторінок, необхідні для подальшої роботи.

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

Можна побачити, що «вікно навігатора» має чотири вкладинки, які відповідають різним режимам робити довідкової системи. На першій вкладниці Contents знаходиться зміст довідника з посиланням на розділи. Зазначена структуризація не завжди може задовольнити користувача.

Друга вкладинка Index відповідає пошуку інформації у довіднику в алфавітному порядку. Слід зазначити, що відразу після інсталяції системи ця функція може не працювати, при цьому система видає повідомлення «Error: Help directory is not set» («Помилка: Не вказана директорія з файлами допомоги»). Уникнути цієї помилки можна через функцію системного меню File → Set Path. При зверненні до цієї функції з’являється командне вікно Set Path (Установлення шляху).

Для встановлення директорій необхідно натиснути кнопку «Add with Subfolders» та знайти її у вікні на дереві каталогів. У цьому випадку треба додати директорію, розташовану у каталозі, який був визначений для інсталяції MatLab. Після цього слід натиснути кнопку «Ok» та зачекати, поки виконається операція. Слід зазначити, що зміни до списку робочих каталогів заносяться відразу, і система в алфавітному порядку починає працювати.

На третій вкладинці «навігатора допомоги» «Search» («Пошук») можна виконати пошук сторінок довідника та функцій за ключовим словом. При переході на цю вкладинку з’являються два текстових вікна. В одному із них, потрібно вказати один з чотирьох можливих типів пошуку («Весь текст», «Заголовки документів», «Імена функцій»,«Безпосереднійвихіднабазиданих Інтернет»).

Крім того, поряд із вікном «Search type» знаходиться кнопка «Tips» («Підказки») . При натисненні відкривається документ, у якому описані функції навігатора допомоги.

У текстовому полі «Search For», яке знаходиться внизу, вказується фрагмент, за яким проводиться пошук. Посилання на сторінки довідника з’являються після введення тексту та натиснення кнопки «Go». Тут слід зазначити великий обсяг довідника MatLab та його орієнтованість на професіоналів математиків та програмістів.

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

Нарешті — це пошук серед обраних сторінок, які виводяться на вкладниці «Favorites». Спосіб запам’ятовування за допомогою кнопки «Add to Favorites». Переглянути обрану сторінку можна, звернувшись до списку обраних сторінок.

Крім розвинутого «навігатора допомоги» в інтерфейсі користувача MatLab 6.0 з’явилася додаткова опція Web, через яку можна отримати доступ до сайту фірми MathWork в Інтернеті (www.mathwork.com) для оновлення системи та для отримання додаткової інформації англійською мовою. Серед численних російськомовних Інтернет?сайтів, присвячених MatLab, найпопулярнішим є www.еxponenta.ru

Зазначимо, що досвідчені користувачі MatLab задоволені новим інтерфейсом та «навігатором допомоги». По?перше, як наголошувалось, нова система допомоги має опис випроваджених алгоритмів та посилання на наукові джерела, де ці алгоритми описані досконаліше. Це дуже спрощує використання досвідченими програмістами складних розрахунків, особливо у разі внесення змін до базових функцій системи. По-друге, для тих користувачів, які звикли до старого стандарту інтерфейсу, є можливість змінити його за допомогою команди View→Desk topLayout→CommandWindowsOnly. Після цього інтерфейс системи спрощується та схожий до наведеного.

Для оновлення багатовіконного інтерфейсу MatLab 6.0 достатньо виконати функцію View → Desktop Layout → Default.

Дуже зручними у багатовіконному інтерфейсі MatLab 6.0 є вікна історії команд (Command History) та робочого середовища (Work Space). За допомогою вікна історії команд можна звернутися до будь-якої з команд, переглянувши їх за допомогою лінії прокручування та позначення курсором команди, яку потрібно повторити. Принцип роботи вікна команд історії.

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

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

Слід зазначити, що рядок Меню File MatLab версії 6.0 має інший інтерфейс, схожий знавігатором, на якому, замість вкладок, використовуються значки «+», «–». Вікно Preference MatLab 6.0

Меню MatLab має вкладинку Demos, яка корисна тим, хто починає працювати з цією системою. За допомогою цієї команди ви можете викликати демонстраційну галерею, у якій знайдете приклади застосування системи MatLab для виконання наукових розрахунків. У разі звернення до вкладки Demos відкривається «вікно галереї» прикладів, дуже схоже на «вікно допомоги». Ліворуч побачите список розділів, праворуч — список прикладів. Щоб побачити список підрозділів, треба натиснути на кнопку «+». Натиснувши лівою кнопкою миші на відповідний приклад, ви відкриєте вікно його демонстрації.

Поряд з «вікном навігації», показаний з приклад, який називається «Curve Fitting» — «Апроксимація кривих».

Користувач має можливість натисненням кнопок Start (Почати), Next (Наступна) та Pervious (Попередня) у правій частині вікна послідовно розглядати код функцій MatLab у лівій частині вікна внизу та результат виконання цих функцій.

Слід зазначити, що користуватися меню у MatLab не обов’язково. Ті самі функції виконують команди help, demo та what snew, наприклад:

help functions — виведення функцій;

help sin — опис функцій sin;

whatsnew — нові функції;

demo — інформаційне вікно з прикладами.

Тому інтерфейсом меню MatLab версії 6.0 і вищих версій користуються недосвідчені користувачі, професіонали частіше працюють з командним рядком.

 

Визначення матриць та векторів

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

1. Усі елементи матриці або вектора необхідно брати у квадратні дужки.

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

3. Між рядками матриці ставлять крапку з комою.

Приклади визначення матриць та векторів:

>> v=[1, 2, 3, 4]

v=

1 2 3 4

>> MAT =[1,2;3,4]

M=

1 2

3 4

>>

Нескладно також звернутися до елементів вектора або матриці для виведення на екран або використання у виразах. Для цього достатньо вказати в круглих дужках порядковий номер елемента вектора або номер рядка та стовпця матриці через кому. Ці правила запису цілком відповідають відповідним правилам у математиці. Продовжуючи попередній приклад, розглянемо таку послідовність командних рядків:

>> v(1)=

>> M(1,1)=

>>

Найважливіше, що є у системі MatLab і чого немає в інших системах програмування та математичних САПР — це можливість виконання арифметичних дій із матрицями та векторами та їх використання як параметрів математичних функцій. У цьому разі обчислення проводяться з кожним елементом матриці бо вектора. З основ програмування відомо, що в кожній з мов програмування запис типу sin(v) або exp(M) , де М — матриця, v — вектор, був би некоректним. Щоб виконати будь-яку математичну дію з елементами вектора або матриці, потрібно організувати цикл. Обчислення функції від всіх елементів вектора або матриці є можливим у системі MathCAD, але там це робиться через спеціальну функцію векторизації. З точки зору точного математичного опису в цьому є певна рація, оскільки у математиці такі операції заборонені. Але під час розробки реальних програм найчастіше необхідно обробляти масиви великих чисел саме таким чином, наприклад, поелементно додавати, множити поелементно або на константу, обчислювати функції від елементів масиву. А такі дії, як множення матриць або векторний добуток двох векторів, потрібні програмісту значно рідше, тому їх можна реалізувати через внутрішні функції системи. Розробники MatLab виходили, ймовірно, саме із цих міркувань, адже система створювалася для професіоналів?програмістів. Тому у MatLab використані записи типу exp(M) або sin(v) як поелементні дії з матрицями та векторами. Адже програмісту зручно працювати саме так, хоча такий запис неправильний з математичної точки зору. До того ж, такий підхід відповідає всій ідеології системи, тому що вона розроблена для роботи з матрицями, і вони розглядаються як звичайні числа. А спеціальні матричні та векторні операції тут також введені, але через окремі функції.

Тому множення, ділення, піднесення у степінь умові MatLab реалізовані як за правилами лінійної алгебри, так і для поелементних операцій, але запис цих функцій різний. Якщо визначені дії слід виконувати поелементно, використовуються оператори .* для поелементного множення, ./ для по елементного ділення та .^ для поелементного піднесення у ступінь, у цьому разі розмірність масивів для поелементних операцій має бути однаковою. При використанні операторів */ та ^математичні дії виконуються за правилами лінійної алгебри. У випадку множення вектора або матриці на числову константу по елементні операції повністю збігаються з операціями лінійної алгебри.

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

Приклад

>> format short

>> v=[1,2,3,4];

>> sin(v)

ans=

0,8415 0,9093 0.1411 ?0,7568

>> 3*v

ans=

3 6 9 12

>> v^2

???Error using= =>^Matrix must be square.

>> v.^2

ans=

1 4 9 16

>> v+2

ans=

3 4 5 6

MAT=[1,2;3,4]

MAT =

1 2

3 4

>> sin (MAT)

ans =

0.8415 0.9093

0.1411 ?0.7568

>> MAT^2

ans =

7 10

15 22

>> MAT.^2

ans =

1 4

9 16

>> 3*MAT

ans =

3 6

9 12

>> 2+MAT

ans =

3 4

5 6

>>

У наведеному прикладі повідомлення ???Error using =>^ Matrix must be square (Помилкове використання оператора ^. Повинна бути квадратна матриця) означає, що використання операції множення векторів за правилами лінійної алгебри неможливе, можна множити одну на одну тільки квадратні матриці. Як бачимо, для квадратної матриці система дійсно не видає помилку і виконує операцію множення матриці саму на себе за правилами лінійної алгебри, але результат суттєво відрізняється від поелементного множення. Усі результати поелементних операцій для вектора v та матриці MAT однакові оскільки містять ті самі елементи.


 

Оператори системи MatLab

Арифметичні оператори

Переглянемо призначення основних математичних операторів та правила роботи з ними за допомогою команди help ARITH.

>> help ARITH

Arithmetic operators.

+

Plus.

X + Y adds matrices X and Y. X and Y

must have the same dimensions unless one

is a scalar (a 1?by?1 matrix).

A scalar can be added to anything.

? Minus.

X ? Y subtracts matrix X from Y. X and Y

must have the same dimensions unless one

is a scalar. A scalar can be subtracted

from anything.

* Matrix multiplication.

X*Y is the matrix product of X and Y.

Any scalar (a 1?by?1 matrix) may multiply

anything. Otherwise, the number of

columns of X must equal the number of

rows of Y.

.* Array multiplication

X.*Y denotes element?by?element

multiplication. X and Y must have the

same dimensions unless one is a scalar.

A scalar can be multiplied into anything.

^ Matrix power.

Z = X^y is X to the y power if y is

a scalar and X is square. If y is an

integer greater than one, the power is

computed by repeated multiplication. For

other values of y the calculation

involves eigenvalues and eigenvectors.

Z = x^Y is x to the Y power, if Y is a

square matrix and x is a scalar, computed

using eigenvalues and eigenvectors.

Z = X^Y, where both X and Y are matrices,

is an error.

.Ârray power.

Z = X.^Y denotes element?by?element

powers. X and Y must have the same

dimensions unless one is a scalar.

A scalar can operate into anything.

>>

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

Серед математичних дій до окремого розділу SLASH належать оператори прямого та зворотного ділення матриць. Пряме ділення, або ділення зліва направо, — це звичайне матричне ділення за відсутності крапки, або поелементне ділення за її наявності. Матричне ділення реалізується за правилами лінійної алгебри таким чином: якщо С=A*B, то A=C/B або B=C/A, де А, В, С — матриці відповідного розміру. Поелементне ділення можливе тільки для матриць або векторів однакового розміру. Як і всі поелементні дії, воно реалізується через оператор . / .

Матричне зворотнє ділення, або ділення справа наліво — це ділення елементів другої матриці виразу на елементи першої, тобто X/Y=Y\X. Пряме та зворотне ділення ефективно використовується для розв’язання систем лінійних рівнянь. Таким самим чином, але як поелементна операція, визначається поелементне зворотне ділення.

Оператори + та — при роботі з матрицями та векторами можуть також бути використані як унарний плюс та унарний мінус. У цьому випадку знаки + та – ставлять безпосередньо перед ідентифікатором матриці, наприклад: +М або –М, де М —матриця. Ці оператори працюють таким чином: опреатор –М змінює знаки всіх елементів матриці на зворотні, після чого можна через оператор +М повернути всім елементам початкове значення. Таким чином, згідно з командою help ops, покажемо, що кожному оператору відповідає функція, що виконує ту саму дію. При наведенні синтаксису операторів та функцій матриці позначено літерою M, а числові константи — літерою n.

Наведемо приклад арифметичних дій з векторами. У прикладі системна функція disp призначена для виведення значення виразу на екран. Більш досконало системні функції MatLab. Функція rot90, використана у наведеному прикладі, виконує операцію транспортування матриці. Ця функція використовується для перстворення вектора-рядка на вектор-стовпчик.

Приклад

>> x=[1,2,3,4,5]; y=[?2,1,4,0,5];

>> x+2

ans=

3 4 5 6 7

>> disp(x+2)

3 4 5 6 7

>> x+y

ans=

?2 2 12 0 25

 

Логічні оператори

 

Значну роль у системі MatLab відіграють логічні оператори та функції. Під час розв’язання задач з електроніки їх можна ефективно використовувати для аналізу цифрових схем. Але особливо велике значення мають логічні дії при написанні програми мовою MatLab, які будуть розглянуті у розділі 4. Особливість виконання логічних операцій із числовими даними полягає у тому, що логічній одиниці відповідає будь?яке число, крім нуля. При виконанні логічних операцій над рядками, як і для операцій порівняння, усі символи рядка подаються через їх ASCIІ коди.

Функції any та all призначені для оброблення векторів. Якщо аргументом функції є матриця, операція за замовчуванням проводиться з кожним стовпчиком матриці, результат — вектор. Використовуючи формат цих функцій з двома аргументами, одним з яких є число n, можна обрати напрям обробки матриці. Значенню n=1 відповідає обробка рядків матриці (перший напрям), а значенню n=2 — оброблення стовпчиків (другий напрям). Команди можуть використовуватися як для окремих операндів, так і для математичних виразів, що дуже важливо при реалізації функцій програмування. Формат логічних команд під час роботи з виразами такий:

(вираз) оператор (вираз)

або

функція ((вираз), (вираз))

Наведемо приклад використання логічних операторів.

Приклад

>> M1=[1,2,3]

M1 =

1 2 3

>> M2=[0,2,0]

M2 =

0 2 0

>> and(M1,M2)

ans =

0 1 0

>> or(M1,M2)

ans =

1 1 1

>> M1&M2

ans =

 

Визначення матриць та векторів

 

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

1. Усі елементи матриці або вектора необхідно брати у квадратні дужки.

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

3. Між рядками матриці ставлять крапку з комою.

Приклади визначення матриць та векторів:

>> v=[1, 2, 3, 4]

v=

1 2 3 4

>> MAT =[1,2;3,4]

M=

1 2

3 4

>>

Нескладно також звернутися до елементів вектора або матриці для виведення на екран або використання у виразах. Для цього достатньо вказати в круглих дужках порядковий номер елемента вектора або номер рядка та стовпця матриці через кому. Ці правила запису цілком відповідають відповідним правилам у математиці. Продовжуючи попередній приклад, розглянемо таку послідовність командних рядків:

>> v(1)=

>> M(1,1)=

>>

Найважливіше, що є у системі MatLab і чого немає в інших системах програмування та математичних САПР — це можливість виконання арифметичних дій ізматрицями та векторами та їх використання як параметрів математичних функцій. У цьому разі обчислення проводяться з кожним елементом матриці або вектора. З основ програмування відомо, що в кожній з мов програмування запис типу sin(v) або exp(M) , де М — матриця,v — вектор, був би некоректним. Щоб виконати будь-яку математичну дію з елементами вектора або матриці, потрібно організувати цикл. Обчислення функції від всіх елементів вектора або матриці є можливим у системі MathCAD, але там це робиться через спеціальну функцію векторизації. З точки зору точного математичного опису вцьому є певна рація, оскільки у математиці такі операції заборонені. Але під час розробки реальних програм найчастіше необхідно обробляти масиви великих чисел саме таким чином, наприклад, поелементно додавати, множити поелементно або на константу, обчислювати функції від елементів масиву. А такі дії, як множення матриць або векторний добуток двох векторів, потрібні програмісту значно рідше, тому їх можна реалізувати через внутрішні функції системи. Розробники MatLab виходили, ймовірно, саме із цих міркувань, адже система створювалася для професіоналів?програмістів. Томуу MatLab використані записи типу exp(M) або sin(v) як поелементні дії з матрицями та векторами. Адже програмісту зручно працювати саме так, хоча такий запис неправильний з математичної точки зору. До того ж, такий підхід відповідає всій ідеології системи, тому що вона розроблена для роботи з матрицями, і вони розглядаються як звичайні числа. А спеціальні матричні та векторні операції тут також введені, але через окремі функції.

Тому множення, ділення, піднесення у степінь умові MatLab реалізовані як за правилами лінійної алгебри, так і для поелементних операцій, але запис цих функцій різний. Якщо визначені дії слід виконувати поелементно, використовуються оператори .* для поелементного множення, ./ для по елементного ділення та .^ для поелементного піднесення у ступінь, у цьому разі розмірність масивів для поелементних операцій має бути однаковою. При використанні операторів */ та ^математичні дії виконуються за правилами лінійної алгебри. У випадку множення вектора або матриці на числову константу по елементні операції повністю збігаються з операціями лінійної алгебри.

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

Приклад

>> format short

>> v=[1,2,3,4];

>> sin(v)

ans=

0,8415 0,9093 0.1411 ?0,7568

>> 3*v

ans=

3 6 9 12

>> v^2

???Error using= =>^Matrix must be square.

>> v.^2

ans=

1 4 9 16

>> v+2

ans=

3 4 5 6

MAT=[1,2;3,4]

MAT =

1 2

3 4

>> sin (MAT)

ans =

0.8415 0.9093

0.1411 ?0.7568

>> MAT^2

ans =

7 10

15 22

>> MAT.^2

ans =

1 4

9 16

>> 3*MAT

ans =

3 6

9 12

>> 2+MAT

ans =

3 4

5 6

>>

У наведеному прикладі повідомлення

???Error using =

=>^ Matrix must be square

(Помилкове використання оператора ^. Повинна бути квадратна матриця)

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

 

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

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

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

Формат функції об’єднання матриць cat(dim, A, B), де

dim — специфікація розмірності масиву, а A та B — матриці, що об’єднуються. Параметри специфікації розмірності dim визначені таким чином:

dim = 1 — об’єднання матриць за рядками, кількості рядків у матрицях A та B повинні збігатися;

dim = 2 — об’єднання матриць за стовпчиками, кількості стовпчиків у матрицях A та B повинні збігатися;

dim = 3 — об’єднання матриць зі створенням тривимірного масиву, кількості матриць A та B повинні бути однакової розмірності.

Слід зазначити, що функцію об’єднання матриць легко здійснити через множинну індексацію та методи формування матриць, наявність функції cat у системі MatLab є дещо надлишковою і користуються нею рідко.

Іншими важливими функціями опрацювання матриць є функції переставлення їх елементів. Наприклад, функція fliplr(А) здійснює дзеркальне відображення елементів матриці зліва’направо відносно вертикальної осі. Функція flipud(А) здійснює дзеркальне відображення елементів матриці зверху вниз відносно горизонтальної осі. Функція reshape(A, l,k) створює з матриці A розмірності m*n іншу матрицю розмірності l*k через послідовний вибір елементів матриці А по стовпцях. Обов’язковою умовою для проведення такої операції є виконання співвідношення m•n = l•k. Але безперечною перевагою функції reshape є те, що за її допомогою можна здійснювати будь’які перетворення розмірності матриці.

Розглянемо тепер важливі функції створення трикутних матриць і матриць з відповідними діагональними елементами. Функція tril(A)створює нижню трикутну матрицю на основі матриці А через присвоєння значення «0» усім її елементам, розташованим нижче головної діагоналі. Функція triu(A) створює верхню трикутну матрицю на основі матриці А, анулюючи її елементи, розташовані вище головної діагоналі. Для створення діагональної матриці використовують функцію MatLab diag.

Можливі такі формати функції:

diag(v) — створення квадратної матриці, на головній діагоналі якої розташовані елементи вектора v;

diag(v, n) — створення прямокутної матриці, на одній із діагоналей якої розташовані елементи вектора v, у цьому разі параметр n визнає зсув діагоналі розташування елементів відносно головної діагоналі. Значення n > 0 відповідають зсуву відносно головної діагоналі вгору, а значення n < 0 — зсуву вниз.

Інша функція формування матриці на основі заданої — це функція repmat(A,m,n), яка повертає матрицю B, що є результатом розмноження матриці A m разів по стовпчиках та n разів по рядках. Розглянули два способи виконання тієї самої операції через використання множинної індексації, тому наявність функції repmat у системі MatLab теж є дещо надлишковою.

Є крім того, функція повороту елементів матриці на 90°

rot90(A, k), де A — матриця, що перетворюється, k — кількість поворотів, за замовчуванням k = 1.

Приклад

» format short

» M1=rand(2)

M1 =

0.4321 0.7660

0.2840 0.0976

» M2=rand(2)

M2 =

0.5558 0.2109

0.4483 0.1773

» cat(1,M1,M2)

ans =

0.4321 0.7660

0.2840 0.0976

0.5558 0.2109

0.4483 0.1773

» cat(2,M1,M2)

ans =

0.4321 0.7660 0.5558 0.2109

0.2840 0.0976 0.4483 0.1773

» format short

» M1=rand(2)

M1 =

0.1559 0.6852

0.2797 0.8352

» M2=rand(2)

M2 =

0.2201 0.4075

0.5674 0.7049

» C1=cat(1,M1,M2)

C1 =

0.1559 0.6852

0.2797 0.8352

0.2201 0.4075

0.5674 0.7049

» C2=cat(2,M1,M2)

C2 =

0.1559 0.6852 0.2201 0.4075

0.2797 0.8352 0.5674 0.7049

» fliplr(C1)

ans =

0.6852 0.1559

0.8352 0.2797

0.4075 0.2201

0.7049 0.5674

» flipud(C2)

ans =

0.2797 0.8352 0.5674 0.7049

0.1559 0.6852 0.2201 0.4075

» tril(C1)

ans =

0.1559 0

0.2797 0.8352

0.2201 0.4075

0.5674 0.7049

» triu(C1)

ans =

0.1559 0.6852

0 0.8352

0 0

0 0

» v=rand(3,1)

v =

0.2580

0.4546

0.3964

» diag(v)

ans =

0.2580 0 0

0 0.4546 0

0 0 0.3964

» diag(v,2)

ans =

0 0 0.2580 0 0

0 0 0 0.4546 0

0 0 0 0 0.3964

0 0 0 0 0

0 0 0 0 0

» diag(v,?2)

ans =

0 0 0 0 0

0 0 0 0 0

0.2580 0 0 0 0

0 0.4546 0 0 0

0 0 0.3964 0 0

» C1

C1 =

0.1559 0.6852

0.2797 0.8352

0.2201 0.4075

0.5674 0.7049

» rot90(C1)

ans =

0.6852 0.8352 0.4075 0.7049

0.1559 0.2797 0.2201 0.5674

» rot90(C1,2)

ans =

0.7049 0.5674

0.4075 0.2201

0.8352 0.2797

0.6852 0.1559

»

У MatLab функція норми вектора norm має такі формати:

norm(X, р) — функція повертає норму порядку р для вектора Х;

norm(X, р) — функція повертає норму другого порядку для вектора Х;

norm(X,’inf’) — функція повертає максимальне значення з абсолютних значень елементів вектора;

norm(X,’– inf’) — функція повертає мінімальне значення з абсолютних

Последнее изменение этой страницы: 2016-06-09

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...