Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Начала прогаммирования в среде MatLab / Начала программирования в среде MatLab.pdf
Скачиваний:
254
Добавлен:
02.05.2014
Размер:
5.66 Mб
Скачать

1.3. Операции с векторами и матрицами

39

Warning: Divide by zero

 

 

 

-0. 5000

2. 0000

0. 7500

Inf

1. 0000

 

» disp(x. \y)

 

 

 

 

-2. 0000

0. 5000

1. 3333

0

1. 0000

 

» disp(x. ^y)

 

 

 

 

1

2

81

1

3125

 

Вышеуказанные операции позволяют очень просто вычислять (а затем - строить графики) сложные математические функции, не используя при этом операторы цикла, т. е. осуществлять построение графиков в режиме калькулятора. Для этого достаточно задать значение аргумента как арифметическую прогрессию так, как это было показано в п. 1.3.1, а потом записать нужную функцию, используя знаки поэлементного преобразования векторов.

Например, пусть нужно вычислить значения функции: y = a ehx sin x

при значениях аргумента х от 0 до 10 с шагом 1. Вычисление массива значений этой функции в указанных условиях можно осуществить с помощью лишь двух простых операторов :

» a = 3; h = 0.5; x = 0:10; » y = a * exp(-h*x) . * sin(x) y =

Columns 1 through 7

0 1.5311 1.0035 0.0945 -0.3073 -0.2361 -0.0417 Columns 8 through 11

0. 0595 0. 0544 0. 0137 -0. 0110

1.3.5. Поэлементное преобразование матриц

Для поэлементного преобразования матрицы пригодны все указанные ранее в п. 1.2.4 алгебраические функции. Каждая такая функция формирует матрицу того же размера, что и заданная, каждый элемент которой вычисляется как указанная функция от соответствующего элемента заданной матрицы. Кроме этого, в MatLAB определены операции поэлементного умножения матриц одинакового размера (совокупностью знаков ' .* ', записываемой между именами перемножае-

мых матриц), поэлементного деления (совокупности './ ' и '.\'), поэлементного возведения в степень (совокупность '.^' ), когда каждый элемент первой матрицы возводится в степень, равную значению соответствующего элемента второй матрицы.

Приведем несколько примеров:

» A = [1,2,3,4,5; -2, 3, 1, 4, 0]

A =

1 2 3 4 5 -2 3 1 4 0

» B = [-1,3,5,-2,1; 1,8,-3,-1,2]

B =

 

 

 

 

-1

3

5

-2

1

1

8

-3

-1

2

» sin(A)

ans =

 

 

 

 

0. 8415

0. 9093

0. 1411

-0. 7568

-0. 9589

-0. 9093

0. 1411

0. 8415

-0. 7568

0

1.3. Операции с векторами и матрицами

40

» A . * B

 

 

 

 

 

 

ans =

 

 

 

 

 

 

 

-1

6

15

-8

5

 

 

 

-2

24

-3

-4

0

 

 

 

» A . / B

 

 

 

 

 

 

ans =

 

 

 

 

 

 

 

-1. 0000

0. 6667

0. 6000

-2. 0000

5. 0000

 

-2. 0000

0. 3750

-0. 3333

-4. 0000

0

 

» A . \ B

 

 

 

 

 

 

Warning: Divide by zero

 

 

 

ans =

 

 

 

 

 

 

 

-1. 0000

1. 5000

1. 6667

-0. 5000

0. 2000

 

-0. 5000

2. 6667

-3. 0000

-0. 2500

Inf

 

» A . ^ B

 

 

 

 

 

 

ans =

 

 

 

 

 

 

 

1. 0e+003 *

 

 

 

 

 

0. 0010

0. 0080

0. 2430

0. 0001

0. 0050

 

-0. 0020

6. 5610

0. 0010

0. 0002

0

 

Оригинальной в языке MatLAB является операция прибавления к матрице числа. Она записывается следующим образом: A + x, или х + A (А - матрица, а x - число). Такой операции нет в математике. В MatLAB она эквивалентна совокупности операций

А + х * Е, где Е - обозначение матрицы, которая состоит только из единиц, тех же размеров, что и матрица А. Например:

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

A =

 

 

 

 

1

2

3

4

5

6

7

8

9

11

» A + 2

ans =

 

 

 

 

3

4

5

6

7

8

9

10

11

13

» 2 + A ans =

3 4 5 6 7

89 10 11 13

1.3.6.Матричные действия над матрицами

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

Базовые действия с матрицами - сложение, вычитание, транспонирова-

ние, умножение матрицы на число, умножение матрицы на матрицу, возве-

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

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

ры;

при умножении матриц количество столбцов первой матрицы должно совпадать с количеством строк второй матрицы.

1.3. Операции с векторами и матрицами

41

Невыполнение этих условий приведет к появлению в командном окне сообщения об ошибке. Приведем несколько примеров.

Пример сложения и вычитания:

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

A =

1 2 3 4 5

6 7 8 9 11

» B = [ 0 -1 -2 -3 -4; 5 6 7 8 9 ]

B =

 

 

 

 

0

-1

-2

-3

-4

5

6

7

8

9

» A + B ans =

1 1 1 1 1

11 13 15 17 20

» A - B ans =

1 3 5 7 9

1 1 1 1 2.

Пример умножения на число:

» 5*A ans =

5 10 15 20 25

30 35 40 45 55

» A*5 ans =

5 10 15 20 25

30 35 40 45 55.

Пример транспонирования матрицы:

» A' ans =

16

27

38

49

511.

Пример умножения матрицы на матрицу:

» A' * B

ans =

 

 

 

 

30

35

40

45

50

35

40

45

50

55

40

45

50

55

60

45

50

55

60

65

55

61

67

73

79

» С = A * B'

С = -40 115

-94 299.

Функция обращения матрицы - inv(A) - вычисляет матрицу, обратную заданной матрице А. Исходная матрица А должна быть квадратной, а ее определитель не должен равняться нулю.

Приведем пример:

» inv(C) ans =

-2. 6000e-001 1. 0000e-001

1.3. Операции с векторами и матрицами

42

-8. 1739e-002 3. 4783e-002

Проверим правильность выполнения операции обращения, применяя ее еще раз к полученному результату:

» inv(ans) ans =

-4. 0000e+001 1. 1500e+002 -9. 4000e+001 2. 9900e+002

Как видим, мы получили исходную матрицу С, что является признаком правильности выполнения обращения матрицы.

Возведение матрицы в целую степень осуществляется в MatLAB с помо-

щью знака "^": А^n. При этом матрица должна быть квадратной, а n - целым (положительным или отрицательным) числом. Это матричное действие эквивалентно умножению матрицы А на себя n раз (если n - положительно) или умножению обратной матрицы на себя (при n отрицательно).

Приведем пример:

» A^2 ans =

8 -3 -10 -5 10 16 -2 4 9

» A^(-2) ans =

1.5385e-001 -7.6923e-002 3.0769e-001 7. 6923e-002 3. 0769e-001 -4. 6154e-001 2. 1328e-018 -1. 5385e-001 3. 8462e-001

Оригинальными в языке MatLAB являются две новые, неопределяемые в математике функции деления матриц. При этом вводятся понятие деления матриц слева направо и деление матриц справа налево. Первая операция записывается с помощью знака ' / ' , а вторая - ' \ '.

Операция В / A эквивалентна последовательности действий B * inv(A), где функция inv осуществляет обращение матрицы. Ее удобно использовать для решения матричного уравнения:

Х * А = В.

Аналогично операция A\B равносильна совокупности операций inv(A)*B, которая представляет собой решение матричного уравнения:

А * Х = В.

Для примера рассмотрим задачу отыскания корней системы линейных алгебраических уравнений:

x1 + 2x2 + 3x3 = 14 2x1 - x2 - 5x3 = -15 x1 - x2 - x3 = -4

Всреде MatLAB это можно сделать таким образом:

»A = [ 1 2 3; 2 -1 -5; 1 -1 -1]

A =

 

 

1

2

3

2

-1

-5

1

-1

-1

» B = [ 14;-15;-4]

B =