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

Вектора и матрицы можно использовать как аргументы элементарных математических функций. Например, sin(X). Результатом будет вектор или матрица, элементы которого будут равны значению sin соответствующего

элемента исходного вектора или матрицы. Элементарные функции от матриц

вычисляются поэлементно.

>> F=log(A)

F =

 

 

0

0.69

1.09

3186

>>E=2*sin(A.^2)

E =

1.6829 -1.5136 0.8242 -0.5758 -0.2647 -1.9836

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

Операции над векторами – то же самое

Поскольку вектор в Матлабе рассматривается как матрица из одной строки

или одного

столбца, то над векторами возможны те же операции,

что и над

матрицами,

и для их

выполнения также

необходимо

согласование

размеров

векторов.

 

 

 

 

 

 

 

 

 

 

 

 

 

Векторное исчисление

предусматривает следующие

операции над

 

 

 

 

 

 

векторами:

сложение

и вычитание

 

векторов

одинакового

размера,

транспонирование векторов, умножение и деление вектора на число, вектора на

вектор (одинакового размера, если один из них вектор–столбец, другой – вектор–

строка или наоборот), скалярное и векторное произведение векторов. (векторное

произведение выполняется для векторов длиной 3)

Операция + и - определена только для сложения/ вычитания одинаковых векторов (можно суммировать или вычитать вектор - строки или вектор –

столбцы одинаковой длины).

29

Зададим 2 вектора:

>>X=[1 2 3]; %Исходные данные

>>Y=[4 5 6];

>>X+Y

ans =

5 7 9

Транспонирование

>>X'

ans = 1 2 3

Умножение вектора на число осуществляется обычной операцией *

>>b=5;

>>X*b

ans =

5 10 15

>> b*X

ans =

5 10 15

Деление вектора на число производится операцией обычного деления (/).

Деление числа на вектор невозможно.

>> X/b

ans =

0.2000 0.4000 0.6000

При делении числа на векторошибка

>> b/X

??? Error using ==> mldivide Matrix dimensions must agree.

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

они имеют одинаковую длину. Если один вектор-строка, а другой вектор-

столбец, то результат – число;

Скалярное произведение

30

>> X*Y' % Скалярное произведение векторов - сумма произведений

элементов с одинаковыми номерами (X1*Y1+X2*Y2+…)

ans = 32

Для вычисления скалярного произведение векторов X и Y можно

воспользоваться функцией sum.

>> sum(X.*Y)

ans = 32

При умножении вектора-столбца на вектор-строку результат – матрица

>> X'*Y

ans =

 

 

4

5

6

8

10

12

12

15

18

Умножение вектора-строки на вектор-строку приводит к ошибке

>> X*Y

??? Error using ==> *

Inner matrix dimensions must agree.

Для векторов из 3-х элементов можно вычислить векторное произведение.

>> cross(X,Y)

ans =

-3 6 -3

Поэлементные операции

Все поэлементные операции выполняются только над векторами

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

Выполнение операции Х^2 невозможно, т.к. Х^2=Х*Х, а умножать можно только строку на столбец или столбец на строку.

Возведение в степень возможно только поэлементное Х.^2

>> X.^2

ans =

1 4 9

Результатом поэлементного умножения векторов является вектор из произведения соответствующих элементов исходных векторов.

31

>>A=[1 2 3];

>>B=[5 6 7];

>>A.*B

ans =

5 12 21

При попытке использовать обычное умножение – ошибка.

>> A*B

??? Error using ==> mtimes

Inner matrix dimensions must agree.

При умножении вектора на число:

>> A.*2 ans =

2 4 6

Деление (./)

>>A=[10 20 30];

>>B=[5 4 6];

>>A./B

ans =

2 5 5

Обратное деление (второго вектора на первый)

>>A=[10 20 30];

>>B=[5 4 6];

>>A.\B

ans =

0.5000 0.2000 0.2000

Возведение в степень

Возведем каждый элемент вектора в квадрат

>>B=[5 4 6];

>>B.^2

ans =

25 16 36

В данном случае каждый элемент исходного вектора возводится в квадрат. Выполнение команды B ^ 2 (без точки перед возведением в степень) невозможно,

так как это противоречит правилам матричной алгебры. На экране будет:

??? Error using ==> mpower

Inputs must be a scalar and a square matrix.

Сложение и вычитание Эти операции не требуют точки перед знаком операции.

>>B=[5 4 6];

>>B+2

ans =

7 6 8

>>B=[5 4 6];

>>A=[1 2 3];

>> B-A ans =

4 2 3

Пример. Получить таблицу значений функции 1-sin(x)^2 для x,

изменяющегося от -1 до 1 с шагом 0.5.

Для этого необходимо задать два вектора: вектор изменения значений

аргумента (создается вектор с нижней границей -1, шагом изменения значения 0.5

и верхней границей изменения 1) и вектор значений функции.

32

>>A=-1:0.5:1

 

 

 

>>B=1-sin(A).^2

 

 

 

A =

 

 

 

 

-1.0000

-0.5000

0

0.5000

1.0000

B =

 

 

 

 

0.2919

0.7702

1.0000

0.7702

0.2919

Остается организовать вывод в виде 2 столбцов.

Для красивого вывода в виде таблицы: disp(' A B')

for

i=1:length(A)

disp(sprintf('%5.2f %.4f',A(i),B(i)))

end

Получим

 

A

B

-1.00

0.2919

-0.50

0.7702

0.001.0000

0.500.7702

1.000.2919

Далее будет рассмотрен вариант построения таблицы с использованием

операций с векторами и матрицами (без циклов).

33