Арифметические операции (АО)
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

К арифметическим операциям в M L относятся:

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 =

5

>> plus(2,3)

ans =

5

>> 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

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

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

К операциям отношения в M L относятся:

равно(= =), не равно( ~ =), меньше (<), меньше или равно(<=), больше (>), больше или равно (>=).

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

3

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

В 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. s in(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 можно не только задавать матрицы своими значениями или формировать их по формулам, но можно с помощью специальных функций получать особые матрицы:

· матрица случайных чисел

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) — функция, возвращающая размер матрицы А в виде вектора.

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

>> magic(3)

ans =

8 1 6

3 5 7

4 9 2

· единичная матрица - eye(n,m)

>> eye(3)

ans =

1 0 0

0 1 0

0 0 1

· матрица из 0 – zeros(n,m)

>> zeros(3)

ans =

0 0 0

0 0 0

0 0 0

· матрица из 1 – ones(n,m)

>> ones(3)

ans =

1 1 1

1 1 1

1 1 1

· диагональная матрица

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

>> 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

· выделение диагонали из матрицы

>> diag(A)

ans =

0.9501

0.8913

0.8214

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

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

Дата: 2019-02-02, просмотров: 282.