ние угла в радианах. Для тригонометрических вычислений с углами, задан-
ными в градусах, можно применять функции SIND, COSD, TAND, ASIND,
ACOSD, ATAND.
ATAN2(Y, X) – функция вычисления четырехквадрантного арктангенса, т. е. угла поворота от оси Ox на плоскости до точки с координатами X, Y.
Значение функции лежит в диапазоне [ ; ].
SINH(X), COSH(X), TANH(X) – гиперболические функции синус, косинус и тангенс соответственно.
LOG(X), LOG10(X), LOG2(X) – логарифмические функции: соответственно, натуральный, десятичный логарифм и логарифм по основанию 2.
EXP(X) – экспонента – функция, обратная натуральному логарифму.
POWER(X, Y) – показательная функция, вычисляющая f x, y xy . Ес-
ли X – вектор, операция вычисления степени осуществляется поэлементно.
POW2(X) |
или POW2(Y, X) – показательная функция, вычисляющая |
f x 2x или |
f y, x y2x. |
SQRT(X) – функция поэлементного вычисления квадратного корня. Для нахождения квадратного корня матрицы, т. е. решения матричного уравнения X * X A, нужно применять функцию SQRTM(A).
ABS(X) – вычисление модуля аргумента.
Комплексные числа. MATLAB поддерживает операции над комплекс-
ными числами. Для комплексных чисел используются следующие функции: COMPLEX(X, Y) – формирование комплексного числа или вектора чисел.
Вместо функции можно использовать запись в виде X + iY или X + jY.
REAL(X), IMAG(X) – функции, возвращающие вещественную и мнимую части комплексного числа.
ABS(X), PHASE(X) – функции, возвращающие модуль и фазу (в радианах) комплексного числа. В поздних версиях MATLAB для вычисления фазы нужно использовать функцию ANGLE(X).
Приоритет операций. Для вычислений можно использовать не только функции, но и обычные операторы математики и логики. Следует отметить, что система MATLAB поддерживает двойственность использования функций и операторов, т. е. каждый оператор языка MATLAB может быть реализован посредством вызова функции. Например, операцию сложения можно реали-
зовать либо с использованием оператора: X + Y, либо с использованием функции: PLUS(X, Y).
11
При формировании сложных математических выражений с использова-
нием различных операторов необходимо соблюдать приоритет операций.
1. Самый низкий приоритет имеет оператор логического ИЛИ с упроще-
нием (||). Упрощение состоит в следующем: если левый операнд логического ИЛИ имеет значение (true), то правый не вычисляется. Данный оператор можно применять только со скалярными логическими операндами.
2. Следующий по приоритету – оператор логического И с упрощением
(&&). Если левый операнд имеет значение false, то правый не вычисляется. Данный оператор также требует скалярных логических операндов.
3.Поэлементный оператор логического ИЛИ (|) может быть использован
сматричными или векторными операндами. Матрицы (векторы) должны быть одинакового размера либо один из операндов должен быть скаляром. Оператор ИЛИ также может быть реализован через вызов функции OR(X, Y).
4.Поэлементный оператор логического И (&) функционирует по аналогии с предыдущим. Он может быть реализован через вызов функции
AND(X, Y).
5. Операторы сравнения (см. таблицу) имеют одинаковый приоритет в отличие от языка программирования C/C++, где операторы равенства и неравенства имеют более низкий приоритет, чем прочие. Операторы сравнения могут быть заменены функциями, приведенными в таблице. Если в выражении есть несколько операторов, равных по приоритету, они будут выпол-
няться слева направо, за малым исключением.
6. Оператор перечисления (:) подробно описан в предыдущем разделе.
Выражения X1:X2 или X1:h:X2 могут быть заменены соответственно вызовом функций COLON(X1, X2) и COLON(X1, h, X2).
7.Следующие по приоритету – аддитивные операторы: сложения (+) и вычитания (–). Соответствующие им функции – PLUS(X, Y), MINUS(X, Y).
8.Мультипликативные операторы – умножение (*), правое (/) и левое (\) деление, выполняемые над матрицами. Поэлементные операторы имеют обо-
значение (.*, ./, .\). Операторы матричного деления служат для решения систем линейных алгебраических уравнений (СЛАУ). Функции, соответствую-
щие мультипликативным операторам, приведены в таблице.
9. Унарные операторы: плюс (+), минус (–), логическое отрицание (~).
Унарные операторы имеют только один операнд, справа от знака оператора. 10. Операторы степени с унарным плюсом (^+), минусом (^–) и допол-
нением (^~) для матриц и соответственно (.^+, .^–, .^~) – для элементов мат-
12
риц. Эти операторы имеют нестандартный порядок выполнения – от второго
справа операторы выполняются справа налево, самый правый выполняется последним.
11.Следующий приоритет имеют операции транспонирования (сопряженного и несопряженного) и возведения в степень матрицы (^) и элементов матрицы или вектора (.^). Соответствующие операторам функции приведены
втаблице.
12.Самый высокий приоритет имеет оператор (). С помощью круглых скобок можно устанавливать в сложных выражениях желаемую последова-
тельность выполнения действий.
Оператор |
Функция |
Описание |
< |
LT(X, Y) |
Строго меньше (X < Y) |
|
|
|
> |
GT(X, Y) |
Строго больше (X > Y) |
<= |
LE(X, Y) |
Меньше либо равно (X ≤ Y) |
|
|
|
>= |
GE(X, Y) |
Больше либо равно (X ≥ Y) |
|
|
|
== |
EQ(X, Y) |
Равенство |
~= |
NE(X, Y) |
Неравенство |
|
|
|
* |
mtimes(A, B) |
Матричное произведение |
.* |
times(A, B) |
Поэлементное произведение |
\ |
mldivide(A, B) |
Решение СЛАУ вида Ax B |
.\ |
ldivide(A, B) |
Поэлементное левое деление |
/ |
mrdivide(A, B) |
Решение СЛАУ вида xA B |
./ |
rdivide(A, B) |
Поэлементное правое деление |
' |
ctranspose(A) |
Сопряженное транспонирование |
. ' |
transpose(A) |
Несопряженное транспонирование |
^ |
mpower(A, B) |
Матричное возведение в степень |
.^ |
power(A, B) |
Поэлементное возведение в степень |
Графика в системе MATLAB. Одно из достоинств системы MATLAB –
большое количество графических средств, начиная от команд построения простых графиков функций одной переменной и кончая комбинированными и презентационными графиками с элементами анимации. Для начала рассматривается построение простейших графиков.
Вывод графика на экран в декартовой системе осуществляется командой plot. Эта команда может использоваться в нескольких вариантах.
13
При вызове функции с двумя аргументами plot(X, Y), где X, Y – векторы одинакового размера, будет построен график зависимости Y(X) в отдельном окне, именуемом figure. Если один из параметров X, Y – вектор размером n 1, а другой – матрица размером n m, в графическое окно одновременно будут выведено m графиков.
Вызов функции с несколькими параметрами в виде plot(x1, y1, x2, y2, …) приведет к построению нескольких графиков в одних декартовых осях, каж-
дый из которых задан вектором аргументов и вектором значений.
Когда в графическое окно одновременно выводится несколько графиков,
они различаются по цветам согласно принятой по умолчанию последовательности: синий – зеленый – красный и т. д. Общий формат функции plot(x1, y1, S1, x2, y2, S2…) позволяет управлять типом линии, ее цветом и типом маркера за счет символьной константы S. Возможные значения константы можно посмотреть в таблице с помощью команды help plot. Пример использования функции plot для управления графиком приведен ниже.
x1 = 0:0.01:10;
x2 = 0:10;
y1 = sin(x1);
y2 = sin(x2);
plot (x1,y1, 'r--', x2, y2, 'ko'), grid
14
В примере первый график построен красным цветом и штриховой лини-
ей, второй выводится в виде изолированных черных кружков. Далее рассмотрим ряд вспомогательных графических функций:
GRID (GRID ON| OFF) – координатная сетка (см. рисунок);
FIGURE (n) – смена текущего графического окна, n – номер окна. Также данная функция может применяться для создания новых графических окон.
SUBPLOT(KLM) – разбиение графического окна для отрисовки графиков в его части. Индексы K, L указывают на размеры матрицы осей, индекс M – на порядковый номер осей в окне.
HOLD (HOLD ON| OFF) – наложение графиков в осях текущего графического окна. Наложение будет производиться до тех пор, пока не встретится ко-
манда HOLD OFF или пока пользователь не смениттекущее графическое окно. TITLE(‘текст’) – добавление заголовка к графику.
XLABEL(‘текст’), YLABEL(‘текст’) – добавление подписей к осям.
В случае, когда одна из координат функции, выводимой на экран, меня-
ется в большом диапазоне, для построения лучше использовать логарифмический или полулогарифмический масштаб. При этом имеет смысл задавать вектор аргумента в виде логарифмической, а не равномерно возрастающей последовательности. Это выполняется командой LOGSPACE(X1, X2, N), где искомый вектор меняется в диапазоне от 10 x1 до 10 x2 и содержит N точек.
Построение графиков в полулогарифмических осях обеспечивается функциями SEMILOGX(X, Y), SEMILOGY(X, Y). Функции используются вме-
сто PLOT по аналогичным правилам. Для построения графика в логарифмических осях предназначена функция LOGLOG(X, Y). Однако при использова-
нии функций с логарифмической шкалой необходимо учитывать, что значения координат должны быть положительны.
Методика выполнения работы
1. Написать программу для расчета значений двух функций и построения графиков согласно табл. П1 по номеру варианта, указанному преподава-
телем. В таблице через A и обозначены модуль и фаза функции комплексной переменной.
2. Диапазон изменения переменной x для первой функции выбрать само-
стоятельно; выбранный диапазон должен обеспечить плавное построение функции.
15