Арифметические операции (АО) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Арифметические операции (АО)



К арифметическим операциям в ML относятся: cложение (+), вычитание (-), умножение (*), деление (/), обратное деление (\),возведение в степень(^ ), транспонирование (‘).

Приоритеты АО:

· возведение в степень, транспонирование;

· умножение, деление;

· сложение, вычитание.

Все арифметические операции являются “матричными” и осуществляются по правилам линейной алгебры.

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

 

>> X=[1 2 3 4];

>> X.^2

ans =

1 4 9 16

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

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

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

Каждой арифметической операции в ML соответствует определенная функция. Например, plus(x,y) – сложение массивов, times(x,y) – поэлементное умножение массивов, mtimes(x,y) – матричное умножение и т.д.:

 

>> 2+3

ans =

>> plus(2,3)

ans =

>> X=[1 2 3 4];

>> Y=[5 6 7 8];

>> times(X,Y)

ans =

5 12 21 32

>> X.*Y

ans =

5 12 21 32

 

Выполнение арифметических операций с матрицами будет подробно рассмотрено далее.

Операции отношения

К операциям отношения в ML относятся: равно (= =),не равно (~ =),меньше(<),меньше или равно (<=), больше (>), больше или равно (>=).

Операции отношения используются для поэлементного сравнения двух операндов (чисел, матриц, векторов одинакового размера). Результатом операции отношения может быть соответственно число, матрица или вектор, состоящие из элементов,
обозначающих «истина» или «ложь». В 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

 

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

 

>> x=1; y=2; z=3;

>> ((x+y)==z)+(y<z)+(x<=y)

ans =

 

Логические операции

 

В ML существует возможность представления логических выражений с помощью логических операторов и логических операций. Логические операции предназначены для выполнения поэлементных логических операций над векторами и матрицами одинаковых размеров. К логическим операциям относятся логическое
И(&), логическое ИЛИ (|), логическое НЕ (~).

Вместо логических операций можно пользоваться логическими операторами (функциями) and, or, not соответственно. Логические операторы определены над матрицами одинаковой размерности и выполняются над каждым из элементов.

В логических выражениях используются логические операции и операции отношения.

 

Приоритет операций в ML

 

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

1) логическая операция НЕ (~);

2) транспонирование(.’, ’),возведение в степень(.^, ^);

3) унарный плюс (+), унарный минус (-);

4) умножение и деление(.*,./,.\, *, /, \);

5) сложение и вычитание (+, -);

6) операции отношения (<, >, <=, >=, ==, ~=);

7) логическая операция И(&);

8) логическая операция ИЛИ(|).

Элементарные функции

 

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

Существуют встроенные тригонометрические и гиперболические функции: sin(x), cos(x), tan(x), cot(x), asin(x), acos(x), atan(x), acot(x), sinh(x) и т.д. Аргументы этих функций могут задаваться в радианах и градусах (в следующих версиях, начиная с версии 7.0). У функций в градусной мере после названия добавляется буква d. sin(x) – аргумент в радианах, а sind(x) – аргумент в градусах.

Некоторые часто используемые математические функции:

· exp(x)–экспонента числа x;

· log(x)– натуральный логарифм;

· log10(x)– десятичный логарифм;

· sqrt(x)– квадратный корень;

· abs(x)– абсолютное значение x;

· real(z)– вещественная часть комплексного числа;

· imag(z)– мнимой часть комплексного числа;

· mod(x, y)– остаток от целочисленного деления;

· round(x)– округление до ближайшего целого.

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

· calendar – выводит календарь на текущий месяц;

· date – выводит текущую дату.

Все элементарные функции, приведенные выше, можно применять к векторам и матрицам. Если введен вектор X, то, задав функцию Y =sin(X), получим вектор, элементами которого будут значения синусов элементов исходного вектора:

 

>> X=[1 2 3 4];

>> Y=sin(X)

Y =

0.8415 0.9093 0.1411 -0.7568

 

Информацию о любой функции ML можно получить, выполнив команду: help <имя функции>.

Особые матрицы

 

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

1. Матрица случайных чисел:

rand(n, m) –формирует матрицу из n строк и m столбцов, заполненную случайными равномерно распределенными числами в интервале от 0 до 1.

rand(n) – формирует квадратную матрицу случайных чисел.

 

>>A=rand(3)

A =

0.9501 0.4860 0.4565

0.2311 0.8913 0.0185

0.6068 0.7621 0.8214

 

Можно задавать размер матрицы, используя вектор из двух элементов, равных числу строк и столбцов. Например,

 

>> B=rand([3 4])

B =

0.9501 0.4860 0.4565 0.4447

0.2311 0.8913 0.0185 0.6154

0.6068 0.7621 0.8214 0.7919

 

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

 

>> rand(size(A))

ans =

0.4103 0.3529 0.1389

0.8936 0.8132 0.2028

0.0579 0.0099 0.1987

size(A) – функция, возвращающая размер матрицы А в виде вектора.

 

2. Магический квадрат (матрица, у которой суммы элементов в строках, столбцах и диагоналях одинаковы) – magic(n,m):

 

>> magic(3)

ans =

8 1 6

3 5 7

4 9 2

 

3. Единичная матрица – eye(n,m):

 

>> eye(3)

ans =

1 0 0

0 1 0

0 0 1

 

4. Матрица из 0 – zeros(n,m):

 

>> zeros(3)

ans =

0 0 0

0 0 0

0 0 0

 

5. Матрица из 1 – ones(n,m):

 

>> ones(3)

ans =

1 1 1

1 1 1

1 1 1

 

6. Диагональная матрица. Чтобы получить диагональную матрицу, необходимо задать вектор, количество элементов которого определит размерность матрицы. Значения вектора расположатся на главной диагонали:

 

>> V=[1 2 3 4 5];

>> diag(V)

ans =

1 0 0 0 0

0 2 0 0 0

0 0 3 0 0

0 0 0 4 0

0 0 0 0 5

 

7. Выделение диагонали из матрицы:

 

>> diag(A)

ans =

0.9501

0.8913

0.8214

 

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

Для увеличения быстродействия работы программы бывает полезно заранеезадать размерность матрицы, для этого создать матрицу с нулевыми элементами – zeros(n,m), а затем заполнять ее значениями.

 

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

 

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

 

Выполнение операций с векторами

 

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

 

>>A=[2 5 7];

>>B=[1 2 3];

>>C=A.*B

C=

2 10 21

Каждый элемент вектора А умножается на один соответствующий ему элемент вектора В, и таким образам получается каждый элемент вектора С.

Операторы поэлементного деления и возведения в степень записываются соответственно как (./), (.^).

Векторное исчисление предусматривает следующие операции над векторами: сложение и вычитание векторов одного размера и типа, транспонирование векторов, умножение вектора на вектор (при условии, что они одного размера и один из них является вектор-столбцом, а другой – вектор-строкой или наоборот).

В соответствии с правилами векторного исчисления, если первый вектор – строка, а второй – столбец, то результат умножения – число:

 

>>A=[1 2 3];

>>B=[1;2;3];

>>A*B

ans=

 

Если первый вектор – столбец, а второй – строка, то результат умножения – квадратная матрица:

 

>>B*A

ans=

2 6 10

4 12 20

6 18 30

 

Для обозначения операции транспонирования векторов применяется апостроф:

 

>>A=[1 2 3];

>>B=A’

B=

 

При транспонировании вектор-строка преобразуется в столбец и наоборот.

 



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 300; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.121.242 (0.043 с.)