Системные переменные и константы устанавливаются системой при ее загрузке или автоматически формируются в процессе вычислений. Некоторые
из них приведены в табл. 3.8.
Таблица 3.8
| Имя
| Функция
|
| ans
| Результат выполнения последней операции
|
| computer
| Возвращает строку с информацией о типе компьютера, на котором установлена система Matlab
|
| i или j
| Мнимая единица (равная sqrt(–1)), которая используется для задания мнимой части комплексных чисел
|
| Inf
| Возвращает представление положительной бесконечности для машинной арифметики
|
| pi
| Число p (отношение длины окружности к ее диаметру), pi возвращает число с плавающей запятой, ближайшее к значению p
|
Существуют также функции для обработки множеств, побитовой логической обработки, даты и времени и т. д.
Специальные символы
Специальные символы предназначены для создания самых разнообразных объектов входного языка и языка программирования системы и придания им различных форм.
Таблица 3.9
| Обозначение
| Функция
|
| :
| Двоеточие: формирование подвекторов и подматриц из векторов и матриц. Оператор – один из наиболее часто используемых в системе Matlab
|
| ( )
| Круглые скобки: а) задание порядка выполнения операций в арифметических выражениях, б) указание последовательности аргументов функции, в) указание индексов элемента вектора или матрицы
|
| [ ]
| Квадратные скобки: формирование векторов и матриц
|
| { }
| Фигурные скобки: формирование массивов ячеек
|
| .
| Десятичная точка: отделение дробной части чисел от целой
|
| .
| Точка: выделение поля структуры
|
| ...
| Продолжение строки
|
| ,
| Запятая: а) разделение индексов элементов матрицы, б) разделение аргументов функции, в) разделение операторов языка Matlab
|
| ;
| Точка с запятой: а) внутри круглых скобок – разделение строк матриц,
б) в конце операторов – запрет вывода на экран результата вычислений
|
| %
| Комментарий
|
| =
| Присваивание
|
| '
| Транспонирование
|
| [,] и [;]
| Горизонтальная и вертикальная конкатенации соответственно
|
Некоторые специальные символы приведены в табл. 3.9.
Элементарные функции
1. Алгебраические и арифметические функции. В системе Matlab определены представленные в табл. 3.10 алгебраические и арифметические функции.
Таблица 3.10
| Наименование
| Назначение и возвращаемые значения
|
| abs(X)
| Абсолютная величина для каждого элемента вектора X
|
| ехр(Х)
| Экспонента для каждого элемента X
|
| log(X), log2(X), log10(X)
| Логарифмы элементов массива X: натуральный, по основаниям 2 и 10 соответственно
|
| sqrt(X)
| Квадратный корень каждого элемента массива X
|
| G=gcd(A, В)
| Массив, содержащий наибольшие общие делители соответствующих эле-ментов массивов целых чисел А и В
|
| lcm(A, B)
| Наименьшие общие кратные для соответствующих парных элементов массивов А и В. Массивы А и В должны содержать положительные целые числа и иметь одинаковую размерность (любой из них может быть скаляром)
|
| mod(A, B)
| Остаток от деления A на B
|
Таблица 3.11
| Матрица X
| Операции с X
| Результат выполнения
|
| »X = [1 –2 4.3 –5 7]
X =
1.00 –2.00 4.30 –5.00 7.00
| »abs(X)
| ans =
1.0000 2.0000 4.3000 5.0000 7.0000
|
| »exp(X)
| ans = 1.0e+003 *
0.0027 0.0001 0.0737 0.0000 1.0966
|
| »log(X)
| ans =
0 0.6931+3.1416i 1.4586 1.6094+3.1416i 1.9459
|
| »log2(X)
| ans =
0 1.0000+4.5324i 2.1043 2.3219+4.5324i 2.8074
|
| »log10(X)
| ans =
0 0.3010+1.3644i 0.6335 0.6990+1.3644i 0.8451
|
| »sqrt(X)
| ans =
1.0000 0+1.4142i 2.0736 0+2.2361i 2.6458
|
| Матрица A
| Матрица B
| Операция 1
| Операция 2
| Операция 3
|
| »A = [1 23 1 34]
A =
1 23 1 34
| »B =[5 12 1 1]
B =
5 12 1 1
| »G = gcd(A, B)
G =
1 1 1 1
| »lcm(A, B)
ans =
5 276 1 34
| »mod(A, B)
ans =
1 11 0 0
|
Пример 3.1. Использование функций иллюстрирует табл. 3.11.
2. Функции комплексного аргумента. Для работы с комплексными числами и данными в Matlab используются функции комплексного аргумента (табл. 3.12).
Таблица 3.12
| Наименование
| Назначение
|
| angle(Z)
| Возвращает аргумент комплексного числа в радианах для каждого элемента массива комплексных чисел Z. Углы находятся в диапазоне [–p; +p]. Для комплексного Z модуль и аргумент вычисляются следующим образом: R=abs(Z) – модуль, theta = angle(Z) – аргумент. При этом формула Z=R.*exp(i*theta) дает переход от показательной формы представления комплексного числа к алгебраической
|
| imag(Z)
| Возвращает мнимые части всех элементов массива Z
|
| real(Z)
| Возвращает вещественные части всех элементов комплексного массива Z
|
| conj(Z)
| Возвращает число, комплексно-сопряженное аргументу Z. Если Z комплексное, то conj(Z) = real(Z) – i*imag(Z)
|
Таблица 3.13
| Матрица
| Операция 1
| Операция 2
| Операция 3
|
| »Z = 5–i*3
Z =
5.0000 – 3.0000i
| »theta = angle(Z)
theta =
–0.5404
| »R = abs(Z)
R =
5.8310
| »Z = R .* exp(i*theta)
Z =
5.0000 – 3.0000i
|
| »Z = [2+i, 1+2i, 2+3i];
| »imag(Z)
ans =
1 2 3
| »real(Z)
ans =
2 1 2
| »conj(2+i)
ans =
2.0000 – 1.0000i
|
Пример 3.2. Работу с комплексными аргументами иллюстрирует табл. 3.13.
3. Тригонометрические и обратные им функции. Тригонометрические и обратные тригонометрические функции (табл. 3.14) вычисляются для каждого элемента массива. Входной массив допускает комплексные значения (все
углы в функциях задаются в радианах).
Таблица 3.14
| Наименование
| Назначение и возвращаемые значения
|
| acos(X)
| Арккосинус для каждого элемента X. Для действительных значений X из области [–1, 1] возвращает действительное значение из диапазона [0, p]; для действительных значений X вне области [–1, 1] – комплексное число
|
| acot(X)
| Арккотангенс для каждого элемента X
|
| acsc(X)
| Арккосеканс для каждого элемента X
|
| asec(X)
| Арксеканс для каждого элемента X
|
| asin(X)
| Арксинус для каждого элемента X
|
| atan(X)
| Арктангенс для каждого элемента X
|
| atan2(Y, X)
| Массив Р той же размерности, что X и Y, содержащий поэлементно арктангенсы отношения вещественных частей Y и X
|
| cos(X)
| Косинус для каждого элемента X
|
| cot(X)
| Котангенс для каждого элемента X
|
| csc(X)
| Косеканс для каждого элемента X
|
| sec(X)
| Массив той же размерности что и X, состоящий из секансов элементов X
|
| tan(X)
| Тангенс для каждого элемента X
|
Таблица 3.15
| Матрица
| Операция 1
| Операция 2
|
| »X = [–0.5 0 0.5]
X =
–0.5000 0 0.5000
| »Y = cos(X)
Y =
0.8776 1.0000 0.8776
| »Y = sin(X)
Y =
–0.4794 0 0.4794
|
Пример 3.3. Результаты применения тригонометрических функций представлены в табл. 3.15.
4. Гиперболические и обратные им функции. Гиперболические функции (табл. 3.16) вычисляются для каждого элемента массива. Входной массив до-
пускает комплексные значения.
Таблица 3.16
| Наимено-вание
| Назначение функции, выполняемой для каждого элемента X
| Наимено-вание
| Назначение функции, выполняемой для каждого элемента X
|
| acosh(X)
| Гиперболический арккосинус
| cosh(X)
| Гиперболический косинус
|
| acoth(X)
| Гиперболический арккотангенс
| coth(X)
| Гиперболический котангенс
|
| acsch(X)
| Гиперболический арккосеканс
| csch(X)
| Гиперболический косеканс
|
| asech(X)
| Гиперболический арксеканс
| sech(X)
| Гиперболический секанс
|
| asinh(X)
| Гиперболический арксинус
| sinh(X)
| Гиперболический синус
|
| atanh(X)
| Гиперболический арктангенс
| tanh(X)
| Гиперболический тангенс
|
Таблица 3.17
| Применение функций для скалярного значения
|
| »Y = acosh(0.7)
Y =
0 + 0.7954i
| »Y = acoth(0.1)
Y =
0.1003 + 1.5708i
| »Y = acsch(1)
Y =
0.8814
| »Y = asech(4)
Y =
0 + 1.3181i
| »Y = asinh(2.456)
Y =
1.6308
|
| Применение функций для вектора
|
| »Х = [0.84 0.16 1.39];
| »Х = [1 23];
|
| »atanh(X)
| ans =
1.2212 0.1614 0.9065 + 1.5708i
| »cosh(X)
| ans = 1.0e+009 *
0.0000 4.8724
|
| | | | | | |
Пример 3.4. Варианты задания аргументов для гиперболических функций и результаты их выполнения приведены в табл. 3.17.
5. Функции округления и знака. Ряд особых функций (табл. 3.18) служат для выполнения операций округления числовых данных и анализа их знака.
Таблица 3.18
| Наимено-вание
| Назначение
|
| fix(A)
| Массив А с элементами, округленными до ближайшего к нулю целого числа. Для комплексного А действительные и мнимые части округляются отдельно
|
| floor(A)
| Массив А с элементами, представляющими ближайшее меньшее или равное соответствующему элементу А целое число. Для комплексного А действительные и мнимые части преобразуются отдельно
|
| rem(X, Y)
| X – fix(X./Y).*Y, где fix(X./Y) – целая часть от частного X./Y
|
| ceil(A)
| Ближайшее большее или равное А целое число. Для комплексного А действительные и мнимые части округляются отдельно
|
| round(X)
| Округленные до ближайшего целого элементы массива X. Для комплексного X действительные и мнимые части округляются отдельно
|
| sign(X)
| Массив Y той же размерности, что и X, где каждый из элементов Y равен:
1, если соответствующий элемент X больше 0;
0, если соответствующий элемент X равен 0;
–1, если соответствующий элемент X меньше 0.
Для ненулевых действительных и комплексных X – sign(X)=X./abs(X)
|
Таблица 3.19
| Варианты матриц
| Результаты операций
|
| »А = [1/3 2/3; 4.99 5.01]
A =
0.3333 0.6667
4.9900 5.0100
| »fix(A)
ans =
0 0
4 5
| »floor(А)
ans =
0 0
4 5
| »ceil(A)
ans =
1 1
5 6
|
| »X = [1 23]
X =
1 23
| »Y = [–1.6308]
Y =
–1.6308
| »sign(X)
ans =
1 1
| »round(Y)
ans =
–2
| »rem(X, Y)
ans =
1.0000 0.1693
|
| | | | | |
Примеры операций приведены в табл. 3.19.
Матричные функции
Весьма представителен в Matlab набор матричных функций:
• expm(X) возвращает
от матрицы X (табл. 3.20). Комплексный результат получается, если X имеет неположительные собственные значения. Функция expm является встроенной и использует разложение Паде. Ее вариант располагается в виде m-файла «expm1.m». Второй метод вычисления матричной экспоненты использует разложение Тейлора и находится в файле «expm2.m». Реализация третьего способа вычисления матричной экспоненты находится в файле «expm3.m» и использует спектральное разложение матрицы А. Этот метод неудачен, если входная матрица не имеет полного набора
линейно независимых собственных векторов;
Таблица 3.20
| Матрица
| Операция
| Матрица
| Операция
|
| »X = [1 2; 4 5]
X =
1 2
4 5
| »expm(X)
ans =
136.1004 185.0578
370.1155 506.2159
| »X = [1 2;4 5]
X =
1 2
4 5
| »[Y, esterr] = funm(X, @sqrt)
Y =
0.5373 + 0.5373i 0.7339 – 0.1967i
1.4679 – 0.3933i 2.0052 + 0.1440i
esterr =
9.5688e–016
|
• funm(X, @function) возвращает любую функцию от квадратной матрицы X, если правильно ввести имя, составленное из латинских букв. Команды funm(X, @exp), funm(X, @sqrt), funm(X, @log), Hexpm(X), sqrtm(X), logm(X) вычисляют одинаковые функции, но используют соответственно разные алгоритмы. Однако предпочтительнее использовать ехрm(Х), sqrtm(X), logm(X). Операция [Y, esterr] = funm(X, @function) не выдает никакого сообщения, но кроме результата вычислений в матрице Y возвращает грубую оценку относительной погрешности результата вычислений funm в esterr (табл. 3.20). Если матрица X – действительная симметрическая или комплексная эрмитова, то ее форма Шура диагональна и полученный результат может иметь высокую точность;
• logm(X) возвращает логарифм матрицы (табл. 3.21). Результат получается комплексным, если X имеет отрицательные собственные значения; если матрица X – действительная симметрическая или комплексная эрмитова, то теми же свойствами обладает и logm(X). Операция [Y, esterr] = logm(X) не выдает какого-либо предупреждающего сообщения, но возвращает оценку погрешности в виде относительной невязки norm(expm(Y) – X) / norm(X);
Таблица 3.21
| Матрица X
| Операция
| Матрица X
| Операция
|
| »X = [1 2;4 5]
X =
1 2
4 5
| »Y = logm(X)
Y =
–0.2110+2.4777i 0.7603–0.9069i
1.5207–1.8138i 1.3097+0.6639i
| »X = [1 2;4 5]
X =
1 2
4 5
| »Y = sqrtm (X)
Y =
0.5373+0.5373i 0.7339–0.1967i
1.4679–0.3933i 2.0052+0.1440i
|
• sqrtm(X) возвращает квадратный корень из X, соответствующий неотрицательным действительным частям собственных значений X. Результат получается комплексным, если X имеет отрицательные собственные значения. Если X вырожденная, то выдает предупреждение об ошибке (табл. 3.21). Операция [Y, resnonii] = sqrtm(X) возвращает оценку погрешности в виде относительной невязки по нормам Фробениуса; [Y, alpha, condest] = sqrtm(X) – функция с тремя выходными аргументами, возвращающая помимо квадратного корня фактор стабильности и оценку числа обусловленности результирующей матрицы Y.