Робота з матрицями - Реферат

бесплатно 0
4.5 34
Особливості матриць в MATLAB, їх введення з клавіатури та завантаження з інших джерел. Доступ до елементів матриці. Операції над матрицями (векторами). Поелементне перетворення матриці. Характеристика спеціальних функцій, що генерують поширені матриці.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Операції над матрицями (векторами) 3.1 Дії над векторами 3.1.1 Векторні дії над векторами 3.

Список литературы
Вступ

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

1. Особливості матриць в MATLAB

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

1.1 Введення матриць.

1.1.1 Введення з клавіатури

Вихідні значення векторів можна задавати з клавіатури шляхом поелементного введення. Для цього в рядку треба спочатку вказати імя вектора, потім поставити знак присвоювання =, потім ліву квадратну дужку, а за нею ввести задані значення елементів вектора, відокремлюючи їх одне від одного пробілами або комами. Завершується рядок правою квадратною дужкою. Наприклад, введення рядка V = [1.2 - 0.3 1.2e-5] задає вектор V, що містить три елементи зі значеннями 1.2, - 0.3, 1.2e-5: >> V= [1.2 - 0.3.2e-5]

V =1.2000-0.3000 0.0000

Після введення вектора система виводить його на екран. Те, що в наведеному прикладі останній елемент виведений як нуль, зумовлено встановленим форматом Short відповідно до якого дані виводяться на екран. матриця вектор matlab функція

Вектор-стовпець вводиться аналогічно, але значення елементів у переліку відокремлюються знаком "крапка з комою”.

Комбінуючи стовпці та рядки можна створити двовимірний масив - матрицю:

Ще один спосіб введення матриць полягає в тому, що матрицю можна трактувати як вектор-рядок, кожен елемент якої є вектор-стовпцем. Наприклад, матрицю два на три можна ввести за допомогою команди:

С = [[3; 4] [-1; 2] [7; 0]] С = 3 - 1 7 4 2 0

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

Почніть набирати в командному рядку " = [4 3 - 1

Натисніть клавішу . Зверніть увагу, що пакет нічого не рахував. Курсор блимає на наступному рядку без символу". Продовжуйте введення матриці по рядках, натискаючи наприкінці кожного рядка . Останній рядок завершіть закриває квадратної дужкою, виходить [2]:

1.1.2. Завантаження матриць з інших джерел

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

Рис. 1. Завантаження матриці з текстового документа

2. Доступ до елементів матриці

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

Елементи матриць можуть входити до складу виразів:

Розташування елементів матриці в памяті компютера визначає ще один спосіб звернення до них. Матриця розміру m n зберігається у вигляді вектора довжини mn, в якому елементи матриці розташовані один за одним по стовпцях

[А (1,1) А (2,1). А (m,1). А (1,n) А (2,n). А (m,n)].

Для доступу до елементів матриці можна використовувати один індекс задає порядковий номер елемента матриці у векторі [2].

Доступ до декількох елементів або відповідно певного рядка чи стовпця матриці відбувається наступним чином: Вибираємо 2-й рядок, та 3-й стовпець матриці B:

Для видалення відповідного рядка необхідно лиш прирівняти вибрану матрицю (адже будь який вектор довжиною m це матриця розміром m*1 або 1*m) до пустого масиву. Наприклад так ми видалимо третій стовпець матриці B:

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

Як бачимо ми замінили елемент на пересіченні 2-го рядка та 3-го стовпця на число ?.

Важливо також зазначити, що вираз diag (B) виокремлює головну діагональ матриці B:

3. Операції над матрицями (векторами)

3.1 Дії над векторами

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

3.1.1 Векторні дії над векторами

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

Транспонування вектора здійснюється застосуванням знака апострофа, що записується відразу за записом імені транспонованого вектора: Х?.

Множення вектора на число здійснюється в MATLAB за допомогою знака арифметичного множення (*) у такий спосіб: Z=X*r або Z=r*X, де r - деяке дійсне число. Множення двох векторів визначено в математиці тільки для векторів однакової довжини тоді, коли один з векторів-співмножників є рядком, а другий - стовпцем. Інакше кажучи, якщо вектори Х та Y є рядками, то математичний зміст мають тільки дві форми множення цих векторів: U=X?*Y і V=X*Y?. Причому в першому випадку результатом буде квадратна матриця (діада), а в другому - число. У MATLAB множення векторів здійснюється з використанням звичайного знака множення (*), що записується між співмножниками-векторами.

Для трикомпонентних векторів у MATLAB існує функція cross, що дозволяє знайти векторний добуток двох векторів. Якщо задані два трикомпонентних вектори v1 і v2, то для цього досить ввести оператор cross (v1,v2).

3.1.2 Дії з поелементного перетворення векторів

У мові MATLAB є ряд операцій, що перетворять заданий вектор в інший того ж розміру і типу, але вони не є математичними операціями з вектором як математичним обєктом. Ці операції перетворюють елементи вектора як елементи звичайного одновимірного масиву чисел. До таких операцій належать всі елементарні математичні функції, що залежать тільки від одного аргументу. У мові MATLAB запис виду Y=sin (X), де Х - деякий відомий вектор, приводить до формування нового вектора Y, що має той же тип і розмір, але елементи якого дорівнюють синусу відповідних елементів вектора-аргументу Х.

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

Додавання числа до кожного елемента вектора. Здійснюється за допомогою знака плюс ( ). Протилежна дія - віднімання числа від кожного елемента вектора (-).

Поелементне множення векторів. Виконується за допомогою сукупності знаків крапка та зірочка (. *), що записується між іменами векторів, які треба перемножити. Результатом буде вектор, кожен елемент якого є добутком відповідних елементів векторів-співмножників.

Поелементне ділення векторів. Здійснюється за допомогою сукупності знаків крапка та слеш (. /). Результат - вектор, кожен елемент якого є часткою від ділення відповідного елемента першого вектора на відповідний елемент другого вектора.

Поелементне ділення векторів у зворотному напрямку (справа наліво). Здійснюється за допомогою сукупності знаків крапка та зворотний слеш (. \). Результатом є вектор, кожен елемент якого є часткою від ділення відповідного елемента другого вектора на відповідний елемент першого вектора.

Поелементне піднесення до степеня. Здійснюється за допомогою сукупності знаків". ^”. Результат - вектор, кожен елемент якого є відповідним елементом першого вектора, піднесеним до степеня, показником якого є значення відповідного елемента другого вектора.

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

Наприклад, потрібно обчислити значення функції y=a*e-hx*sin (x) для значень аргументу х від 0 до 10 з кроком 1. Обчислення масиву значень цієї функції за такої умови можна здійснити за допомогою тільки двох простих операторів:

Рис.2. Обчислення значення функції

3.2 Дії над матрицями

3.2.1 Поелементне перетворення матриць

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

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

3.2.2 Матричні дії з матрицями

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

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

Умови, за яких ці операції можливі: 1) при додаванні або відніманні матриць вони повинні мати однакові розміри;

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

Невиконання цих умов приведе до появи в командному вікні повідомлення про помилку.

Функція обернення матриці - inv (A) - обчислює матрицю, обернену заданій матриці А. Вихідна матриця А повинна бути квадратною, і її визначник неповинен дорівнювати нулю.

Піднесення матриці до степеня позначається в MATLAB за допомогою комбінації знаків". ^" (наприклад, A. ^n). При цьому n повинне бути цілим (додатним або відємним) числом. Ця матрична операція еквівалентна множенню матриці А на себе n раз (якщо n - додатне) або множенню оберненої матриці на себе (в разі відємного n).

Оригінальними в мові MATLAB є дві нові, невідомі в математиці функції ділення матриць. При цьому вводяться поняття ділення матриць зліва направо і ділення матриць справа наліво. Перша операція записується за допомогою знака "/”, а друга - за допомогою знака "\”, що ставиться між іменами матриць, які діляться одна на одну.

Операція В/А еквівалентна такій послідовності дій: B*inv (A). Тут функція inv здійснює обернення матриці. Її зручно використовувати для розвязання матричного рівняння X*A=B. Аналогічно операція A\B рівнозначна сукупності операцій inv (A) *B, що є розвязанням матричного рівняння A*X=B [1]. Наприклад, треба знайти корені системи лінійних алгебраїчних рівнянь: 14

-15

-4

У системі MATLAB це можна зробити так:

Рис.3. Вирішення системи лінійних рівнянь

3.2.3 Матричні функції

Обчислення матричної експоненти (ЕА) робиться за допомогою функцій expm, expm1, expm2, expm3. Ці функції слід відрізняти від функції exp (A), що формує матрицю, кожен елемент якої дорівнює e в степені, показник якого дорівнює відповідному елементу матриці A.

Функція expm (A) є вбудованою функцією MATLAB. Функція expm1 (A) є m-файлом, що обчислює матричну експоненту шляхом використання розкладання Паде матриці А. Функція expm2 (A) обчислює матричну експоненту, використовуючи розкладання Тейлора матриці А. Функція expm3 (A) обчислює матричну експоненту, використовуючи спектральне розкладання А.

Функція logm (A) робить зворотну операцію - логарифмування матриці за натуральною основою.

Функція sqrtm (A) обчислює таку матрицю Y, що Y*Y = A [1].

4. Спеціальні функції, що генерують найпоширеніші матриці

MATLAB має кілька функцій, що дозволяють формувати вектори і матриці деякого визначеного вигляду. zeros (M,N) створює матрицю розміром (M*N) з нульовими елементами; ones (M,N) створює матрицю розміром (M*N) з одиничними елементами; eye (M,N) створює матрицю розміром (M*N) з одиницями на головній діагоналі й іншими нульовими елементами;

rand (M,N) створює матрицю розміром (M*N) з випадкових чисел, рівномірно розподілених у діапазоні від 0 до 1;

randn (M,N) створює матрицю розміром (M*N) з випадкових чисел, розподілених за нормальним законом з нульовим математичним сподіванням і стандартним (середньоквадратичним) відхилом, що дорівнює одиниці;

hadamard (N) створює матрицю Адамара розміром (N*N); hilb (N) створює матрицю Гільберта розміром (N*N);

invhilb (N) створює обернену матрицю Гільберта розміром (N*N); pascal (N) створює матрицю Паскаля розміром (N*N).

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

flipud (А) формує матрицю, переставляючи рядки заданої матриці А щодо горизонтальної осі;

rot90 (A) формує матрицю шляхом "повороту” заданої матриці А на 90 градусів проти годинникової стрілки;

reshape (A,m,n) утворює матрицю розміром (M*N) шляхом вибірки елементів заданої матриці А із стовпців і наступного розподілу цих елементів по n стовпцях, кожний з яких містить m елементів; при цьому число елементів матриці А повинно дорівнювати M*N;

tril (A) утворює нижню трикутну матрицю на основі матриці А шляхом обнулення її елементів, розташованих вище головної діагоналі;

triu (A) утворює верхню трикутну матрицю на основі матриці А шляхом обнулення її елементів, розташованих нижче головної діагоналі;

hankel (V) утворює квадратну матрицю Ганкеля, перший стовпець якої збігається із заданим вектором V [3].

Приклад

Для прикладу згенеруємо матрицю "око" та "віддзеркалимо" її:

Висновки

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

Список використаної літератури

1. MATLAB Simulink, Теоретичні та практичні основи роботи - Харківський Національний Автомобільно-дорожній Університет, 2005 рік.

2. Урок 6 - Матриці. Робота з матрицями в MATLAB. Приклади - http://life-prog.ru/ukr/view_zam. php? id=53&cat=5&page=1

3. Массивы, матрицы и операции с ними - http://www.exponenta.ru/soft/matlab/potemkin/book2/chapter5/contens. asp

4. Мультимедійні лекції з предмету Інформаційні технології НТУУ "КПІ".

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

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?