К арифметическим операциям в 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, просмотров: 321.