Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекція MatLab_2

.doc
Скачиваний:
7
Добавлен:
23.12.2018
Размер:
145.92 Кб
Скачать

«Автоматизовані системи обробки інформації»

Лекція на тему: «Робота з матрицями і векторами в MATLAB . Діалоговий режим роботи»

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

При такому використання необхідно використовувати певні правила запису математичних функцій (див. таблицю 1).

Таблиця 1 Синтаксис математичних функцій і операцій.

Синтаксис математики

Синтаксис програми

sin(x), cos(x), tg(x), ctg(x), sec(x), csec(x); arcsin(x) і т.д.; sh(x) і т.д.; arcsh(x) і так далі

sin(x), cos(x), tan(x), ctan(x), sc(x), csc(x); asin(x) і т.д.; hsin(x) і т.д.; hasin(x) і так далі

ln(x), lg(x)

log(x), log10(x), exp(x), a^b

+ - * / ( )

+ - * / ( )

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

Ми розглянемо в даній частині лекції лише пару спеціальних математичних операцій:

  • Використання ділення зліва на право. Це ділення відрізняється записом похилої риси. Звичне нам ділення записується «/», а це ділення записується «\». Пояснимо на прикладі обчислення:

>> 8\2

ans =

0.2500

>> 8/2

ans =

4

Тобто в першому випадку якраз і використано ділення, про яке йде мова, записаний вираз еквівалентний нашим звичайним «двом восьмим», тобто чверті, що і показало обчислення.

Ще ми розглянемо основні функції роботи, що стосуються роботи з числами і виразами:

Таблиця 2 Числових функцій.

Функція і її синтаксис

Опис

format short

Формує все подальші видачі відповідей і чисел в скороченому форматі

format rat

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

format long

Формує видачу подальших результатів зі свідченням всіх цифр відповіді

sqrt(x)

Обчислює корінь квадратний

pow2(x)

Підносить двійку до ступеня х

pi

Видає число пі

round(x)

Округлює число до цілого по всіх правилах округлення

fix(x)

Відсікає дробову частину без округлення

floor(x)

Округлює до меншого цілого

ceil(x)

Округлює до великого цілого

mod(x,y)

rem(x,y)

sign(x)

Видає знак числа формуючи відповідь у вигляді 1 із знаком або нуля в разі х=0

factor(x)

Розкладає на прості співмножники

isprime(x)

Видає істину (1) якщо х просте число

primes(x)

Формує ряд простих чисел до числа х

rat(x)

Представляє число х у вигляді дробу або сукупності дробів

factorial(x)

Обчислює факторіал числа х

nchosek(n,m)

Обчислює число поєднань m з n

abs(x)

Обчислює модуль числа х (у тому числі і комплексних)

inf

Еквівалент нескінченності

NAN

Невизначеність вигляду 0/0 або ?/?

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

Найбільший інтерес для нас становить використання комплексної змінної і робота з комплексними числами. Приведемо синтаксис запису комплексного числа:

8+i*7

-9-j*1

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

Для початку роботи ми повинні розглянути найбільш часто вживані функції:

Таблиця 3 Функцій комплексного змінного.

Функція і її синтаксис

Опис

abs(x)

Обчислює модуль числа х

conj(x)

Повертає число комплексно-зв'язане х

imag(x)

Видає уявну частину числа

real(x)

Видає дійсну частину числа

angle(x)

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

isreal(x)

Перевіряє число на його приналежність до класу речових числі, повертає 1 (істину) якщо це так, інакше (х – комплексне число) повертає лож (0)

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

>> 5*exp(-j*pi/6)

ans =

4.3301 - 2.5000i

При записі операторів в середовищі можна використовувати спеціальні функції що пригнічують виведення результату вираження (обчислення) відразу ж. Цим спеціальним символом служить крапка з комою тобто «;». При записі декількох виразів в один рядок можна застосовувати окрім крапки з комою і кому.

Матриці і вектори

Введення матриці здійснюється використанням методу так званого об'єднання елементів. Це об'єднання записується так:

>> A=[1 1 1 2];

Тут ми сформували вектор (або матрицю стовпець, причому для системи не важлива її просторова орієнтація, тобто що розмірність 1хn, що nx1, все єдино). Елементи при такому формуванні розділяються пропусками або комами. Для формування матриці, виробляють відрядковий запис, відділяючи при цьому рядки один від одного крапкою з комою:

>> A=[1 2 8; 3 7 0; 7 9 5];

При цьому можна виробляти і складання матриці шляхом об'єднання матриць або векторів між собою (тут вектора A1 A2 були визначені заздалегідь):

>> Q=[A1;A2];

При цьому вектор A1 формуватиме перший рядок матриці, а вектор A2 другу.

Таблиця 4 Функцій матричних дій

Функція і її синтаксис

Опис

zeros(m, n)

Повертає нульову матрицю (що складається з одних нулів) розмірності mхn.

ones(m, n)

Повертає матрицю що складається з одних одиниць розмірності mхn.

eye(m, n)

Створює одиничну матрицю розмірності mхn.

rand(m, n)

Повертає матрицю випадкових чисел рівномірно розподілених в діапазоні від 0 до 1, матриця має розмірність mхn.

randn(m, n)

Повертає матрицю розмірності mхn, що складаються з випадкових чисел в діапазоні від 0 до 1 і що мають гаусовское розподіл (що мають нормальний закон розподілу).

hadamard(n)

Повертає матрицю Адамара розмірності nхn.

hild(n)

Повертає матрицю Гільберта розмірності nхn.

invhild(n)

Повертає зворотну матрицю Гільберта розмірності nхn.

reshape(A, n, m)

Функція утворює матрицю розмірності nхm шляхом вибірки елементів заданої матриці А по стовпцях і подальшому розподілі цих елементів по m стовпцях кожен з яких містить n елементів, при цьому матриця А повинна мати розмірність nхm.

tril(A)

Вибирає нижню трикутну матрицю з матриці А

triu(A)

Вибирає верхню трикутну матрицю з матриці А

diag(A, n)

Функція створює діагональну матрицю з вектора А, при цьому другий параметр необов'язковий. Якщо другий параметр присутній, то створюється матриця в якій вектор А поміщається в іншу діагональ, при цьому якщо n>0, то вектор поміщається вище за головну діагональ, якщо n <0 те нижче, якщо n=0 те на головну діагональ.

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

’ (апостроф)

Оператор виробляє транспонування матриці

+ - * / \ ^

Математичні дії над матрицями. Застосовні як до вираження вигляду «матриця-скаляр», так і «матриця-матриця» (за винятком піднесення до ступеня, він застосовна лише до вираження «матриця-скаляр»). У всіх операціях необхідно стежити за розмірністю матриць.

inv(A)

Повертає зворотну матрицю по відношенню до матриці А

det(A)

Підрахунок визначника (детерминанта) матриці

cross(A, B)

Векторний твір векторів

.* ./ .\ .^

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

lu(A)

Виробляє LU-разложение матриці А і видає матриці в наступному порядку [L U P] (подобнае запис обов'язковий), при цьому виконується наступне співвідношення P*A=L*U.

size(A)

Повертає масим сосотоящий з числа сторок (перший елемент) і чисел стовпців (другий елемент).

sum(A)

Повертає суму всіх елементів по стовпцю

mean(A)

Повертає середнє значення стовпця матриці

std(A)

Повертає среднеквадротическое відхилення стовпця матриці

min(A) max(A)

Повертає мінімум і максимум відповідно, по стовпцю матриці

sort(A)

Сортує стовпець матриці за збільшенням

prod(A)

Обчислює твір всіх елементів стовпців

При зверненні до елементу мариці роблять запис вигляду A(1,8), при цьому сталося звернення до елементу першого рядка восьмого стовпця. Таким дорогою можна не лише прочитувати значення елемента але і міняти його значення. Якщо необхідно виробити звернення не до одного елементу а до декількох або точніше виділити із загальної матриці підматрицю те поступають так A(1:5,6:8), при цьому відбулося виділення підматриці починаючи з 1 рядка і кінчаючи 5 і виділили стовпці з 6 по 8. якщо необхідно виділити весь стовпець (рядок), то вмето вказівки конкретних номерів можна просто поставити порожню двокрапку (A(:,6:8)).

Якщо потрібно сформувати вектор, елементи якого розташовані в арифметичній прогресії, то найпростіше це зробити так:

x=xn:h:xk

xn – початкове значення;

xk – кінцеве значення;

h – крок зміни.

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

Багатовимірні матриці

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

Мал. 2.1 Тривимірна матриця

Для ілюстрації цього передбачимо, що є прилад, який формує щодня нову матрицю що містить в собі набір значень декількох фізичних величин, розкиданих в часі. До кінця місяця, апарат буде вимушений зберігати 30 матриць, які займатимуть значний об'єм пам'яті (включаючи інформацію про параметрах, датах і тому подібне, тобто «зайву інформацію», яку можна прибрати при архівації). За витратами пам’яті, зручніше звести ці 30 матриць в одну (див. мал. 2.1), тобто отримати тривимірну матрицю фізичних величин що міряють за один місяць. При цьому наша матриця матиме наступну структуру: час міститиметься в площинах паралельних площині ху і розташовуватися в стовпцях; фізичні величини утворюють там же рядки; значення величин утворюють там же вічка; матричні дні, що містять, розташовуються в площині zx; причому в початок координат поміщена матриця що міряє в перший день місяця.

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

При формуванні таких масивів, необхідно пам'ятати, що вони утворюються не простим набором елементів, а створюються з матриць розмірності на одиницю меншою, ніж масив, що утворюється. При цьому використовується функція cat(n, A1,A2.,An), де n – розмірність уздовж якої відбувається об'єднання масивів A1 . An.

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

5