Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект.pdf
Скачиваний:
51
Добавлен:
23.07.2020
Размер:
2.68 Mб
Скачать

3. Также для формирования арифметической прогрессии можно использовать

функцию linspace:

linspace (<нач. значение>,<кон. значение>,<кол. значений>)

Например, >>B=linspace(0,pi,5) B =

0 0.7854 1.5708 2.3562 3.1416

Для доступа к элементу вектора необходимо указать его имя и в круглых скобках номер элемента. Например, D(3). Для обращения к последнему элементу вектора, если неизвестна его длина, можно записать: D(length(D)) или D(end).

length – функция, определяющая размер вектора.

Задание матриц

При задании матриц данные строк записываются через пробел или через за-

пятую. Элементы разных строк разделяются знаком точка с запятой (;) или

записываются каждая с новой строки.

Зададим матрицу:

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

A

 

 

 

=

 

 

 

1

2

 

3

4

5

 

6

7

8

 

9

ил

 

 

 

и

 

 

 

>> A=[1

2

3

 

4

5

6

 

7

8

9

 

 

 

]

A =

2

 

3

1

 

 

 

 

23

4

5

6

7

8

9

Как мы уже знаем, обращение к элементу матрицы будет иметь следующий

вид: <имя> (<индексы через запятую>), например, А(2,3).

Операции

Как уже говорилось, в ML можно не только выполнять обычные

арифметические операции над числами и вычислять значения функций, но и

производить операции над векторами и матрицами.

Для матриц Матлаб определяет операции: Сложение и вычитание матриц Умножение матрицы на число Умножение матрицы на матрицу Транспонирование, деление

Все арифметические операции являются “матричными” и

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

Результат операций – матрица. (В ML возможно как выполнять операции поэлементной обработки, так и использовать операции, соответствующие правилам матричного исчисления.)

Кроме уже известных +, -, *, / и ^, в ML существуют операции

транспонирования (ʹ) и обратного деления (\).

Зададим исходные матрицы:

>> A=[1 2 3; 4 5 6]

A =

 

 

1

2

3

4

5

6

>> B=[1 1 1; 1 1 1]

B =

 

 

1

1

1

1

1

1

Например, транспонирование

>> A'

24

ans =

14

25

36

>>C=B' C =

11

1

1

1

1

Если матрица содержит комплексные числа, то кроме транспонирования по

операции ʹ выполняется комплексное сопряжение элементов.

Сложение и вычитание (по правилам матричной алгебры – поэлементно)

>>

 

 

% Размеры матриц должны

E=A+B

 

совпадать

 

E =

 

 

 

 

2

3

4

 

 

5

6

7

 

 

Умножение (по правилам матричной алгебры)

Умножение матриц. При умножении С=A*B должно выполняться условие: число столбцов матрицы A равно числу строк матрицы B:

A(n, m) * B(m, k) → C(n, k)

Элементы результирующей матрицы вычисляются по правилу: каждый элемент строки матрицы A умножается на соответствующий элемент столбца матрицы B, затем произведения складываются и получается один элемент матрицы С:

При использовании операций над матрицами (и векторами) необходимо соблюдать правила согласования их размеров. Например, можно перемножить матрицу A размера 2х3 на матрицу C размера 3х2, т.к. они согласованы по размеру, и получить в результате матрицу размера 2*2.

>> Y=A*C %Размеры матриц должны согласовываться

Y =

6 6

15 15

Если попытаться перемножить две матрицы в наших примерах, матрицу A

(размер 2х3) и матрицу B (размер 2х3), то будет выведено сообщение об ошибке:

>> X=A*B %размеры не согласованы

25

??? Error using ==> *

Inner matrix dimensions must agree.

Возведение в степень. Если возвести матрицу A в квадрат, то выдается

сообщение об ошибке.

>> Z=A^2

% A^2=A*A

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

Матричное возведение в степень возможно только для квадратных мат-

риц.

Например,

>> Z=[1 2;3 4]

Z =

12

34

>>Z^2 ans =

710

15 22

Деление матрицы на матрицу невозможно.

При необходимости поэлементного выполнения операций над матрицами и векторами перед знаками операций ^, *, /, \ следует ставить точку: .^, .*, ./, .\

При поэлементном умножении матриц результат получается другой:

Например,

>> X=A.*B % Размеры матриц должны совпадать. У нас обе матрицы

одинакового размера 2х3.

X =

1 2 3

4 5 6

Поэлементное возведение в степень:

>> Z=A.^2

Z=

14 9

16 25 36

26

Транспонирование тоже бывает с точкой, тогда для комплексных чисел

оно выполняется без комплексного сопряжения.

Деление (правое и левое). В ML имеются две разновидности операции

деления матриц: правое (/) и левое (\).

Операция левого деления – это «обратное деление»

Правое (обычное) деление:

>> Z=A./B

Z =

1

2

3

4

5

6

Поэлементное обратное деление (.\) – деление 2-го операнда на первый.

Для наших матриц:

>> Z=B.\A

Z =

1 2 3

4 5 6

С помощью операции обратного деления решается система линейных

уравнений.

С векторами и матрицами – иначе. Пусть A – матрица, а Х – вектор. А * Х = В и Х * А= В – разные уравнения.

Для решения уравнения Х * А = В (вектор*матрица) используется обычное деление:

Х = B / A = В *А-1

Для решения уравнения А * Х = В (матрица*вектор) используется обратное деление:

Х = А \ В = А-1 * В

Операция обратного деления используется для решения системы линейных уравнений. Например:

2x1 + 3x2 = 11

3x1 – 4x2 = 8

A – матрица коэффициентов левой части. B – вектор правых частей. Решается уравнение вида A*X=B:

>>A=[2 3;3 -4];

>>B=[11 8 ];

27

Х=A\B' Х

=

4.0000

1.0000

Для проверки можно выполнить умножение A*X:

>> A*X ans =

11.0000

8.0000

В результате получили вектор правых частей, что доказывает правильность найденного решения.

Также возможно умножение и деление матрицы на число, результат –

матрица.

>> Z=2*A % Каждый элемент умножается на 2

Z =

 

 

2

4

6

8

10

12

Операции отношения используются для поэлементного сравнения двух операндов (чисел, матриц, векторов одинакового размера). Результатом операции отношения может быть соответственно число, матрица или вектор, состоящие из элементов, обозначающих «истина» или «ложь». В ML это 1 и 0 соответственно:

>>A=[1 0 3; -2 5 -6];

>>B=[8 -9 1; 7 2 2];

>>A>B

ans =

 

 

0

1

1

0

1

0

В результате получили матрицу, каждый элемент которой имеет значение

«истина» или «ложь»:

То же самое можно сказать о логических операциях. Логические операции могут использоваться для выполнения поэлементных логических операций над векторами и матрицами одинаковых размеров. К ним относятся логическое И (&),

логическое ИЛИ (|), логическое НЕ ( ).

28