Основные элементарные математические функции приведены в табл. 1.1.
Таблица 1.1. Основные элементарные функции
exp
Экспонента
abs
модуль
log
натуральный логарифм
asin
арксинус
log10
десятичный логарифм
acos
арккосинус
sqrt
квадратный корень
atan
арктангенс
sin
Синус
sinh
гиперболический синус
cos
Косинус
cosh
гиперболический косинус
tan
Тангенс
tanh
гиперболический тангенс
cot
Котангенс
asinh
гиперболический арксинус
cec
Секанс
acosh
гиперболический арккосинус
csc
Косеканс
atanh
гиперболический арктангенс
Аргументами элементарных функций могут быть действительные либо комплексные числа, а также массивы. Если в качестве аргумента функции задан массив, результат представляет собой массив, полученный поэлементным вычислением функции для соответствующих элементов исходного массива. Аргументы тригонометрических функций задаются в радианах. Обратные к ним функции возвращают результат также в радианах. Примеры:
>> acosh(2)
ans =
1.3170
>> sin(1+i)
ans =
1.2985 + 0.6350i
>> exp(0:3)
ans =
1.0000 2.7183 7.3891 20.0855
Справочная информация по встроенным элементарным функциям содержится в разделе elfun справочной системы MATLAB. Способы получения этой информации подробно рассмотрены в Приложении 1. В разделе elfun содержится информация о функциях комплексного аргумента real, angle, abs и т. д. (см. раздел 1.5). В раздел elfun включены также функции округления и остатка от деления: round (округление до ближайшего целого), fix(усечение дробной части числа), floor(округление до меньшего целого), ceil(округление до большего целого), mod (остаток от деления с учетом знака), rem (остаток в смысле модульной арифметики), sign (знак числа). В этих случаях о комплексных аргументах не может быть и речи. Примеры:
>> round(-4.7)
ans =
-5
>> mod(7,2)
ans =
В MATLAB предусмотрены встроенные функции, связанные с целочисленной арифметикой: factor (разложение числа на простые множители), isprime (истина, если число простое), primes (формирование списка простых чисел), rat (приближение числа в виде отношения двух небольших целых чисел), lcm (наименьшее общее кратное), gcd (наибольший общий делитель). Примеры:
>> factor(123456789)
ans =
3 3 3607 3803
>> isprime(7)
ans =
>> primes(50)
ans =
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
>> gcd(1236,175992)
ans =
Есть также функции, предназначенные для решения стандартных задач комбинаторики: функция perms вычисляет число перестановок, а функция nchoosek – число сочетаний. Например, C124 – число сочетаний из 12 по 4, легко находится вызовом функции nchoosek:
>> nchoosek(12,4)
ans =
Информация по функциям целочисленной арифметики содержится в разделе specfunсправочной системы MATLAB. В разделе specfun находится также информация по встроенным специальным математическим функциям (функциям Бесселя besselj, bessely, полиномам Лежандра legendre и др.).
MATLAB включает побитовые функции преобразования систем счисления: dec2bin (перевод десятичного числа в двоичное); bin2dec (перевод двоичного числа в десятичное); dec2hex (перевод десятичного числа в шестнадцатеричное); hex2dec (перевод шестнадцатеричного числа в десятичное). Примеры:
>> dec2bin(11)
ans =
>> bin2dec('1011')
ans =
>> dec2hex(350)
ans =
15E
>> hex2dec('15E')
ans =
Информация по этим функциям находится в разделе strfun справочной системы MATLAB.
И, наконец, есть функции для работы со значениями даты и времени. Чтобы отобразить календарь какого - либо года и месяца, нужно задать функцию calendar с двумя аргументами. Например, отобразим календарь на март 2008 года:
>> calendar(2008,3)
Mar 2008
S M Tu W Th F S
0 0 0 0 0 0 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 0 0 0 0 0
Функция calendar без аргументов выводит в командное окно календарь на текущий месяц.
Пара функций tic и toc позволяет вычислить время выполнения системой MATLAB той или иной операции. Если в командной строке набрать
>> tic, Fun, toc
где Fun – команда или набор команд, то будет отображен не только результат выполнения команды Fun, но и приблизительное время ее выполнения (в секундах), которое зависит от быстродействия данного компьютера. Это время может несколько отличаться при повторном замере. Поэтому делают несколько измерений, а в качестве итоговой оценки используют среднее арифметическое значение затраченного времени. Пример:
>> tic, A=1:100; B=0.01:0.01:1;C=A*B', toc
C =
3.3835e+003
elapsed_time =
0.0100
Информация о функциях даты и времени содержится в разделе timefun справочной системы MATLAB.
В MATLAB мы будем использовать как встроенные функции, так и свои собственные функции. Собственные функции можно задавать в отдельных файлах, которые называются M-файлами (см. Главу 3). M-файлы-функции полезны для задания функций, которые требуют несколько промежуточных команд для вычисления результата. Задание простых функций, которые можно выразить в одной строке, осуществляется с помощью команды inline.
В этом примере показано, как задается функция f(x) = с использованием команды inline:
>> f=inline('1/x^2','x')
f =
Inline function:
f(x) = 1/x^2
Вычислим эту функцию, например, при x = 2:
>> f(2)
ans =
0.2500
Как отмечалось ранее, большинство функций системы MATLAB могут оперировать как скалярами, так и массивами. Для того, чтобы заданная вами функция могла оперировать массивами, вставте точки перед математическими операторами <^>, <*>, </>. Векторизацию символьного выражения S осуществляет команда vectorize(S). Таким образом, чтобы получить векторизованную версию функции f(x) = , введем строку
>> f=inline(vectorize('1/x^2'),'x')
f =
Inline function:
f(x) = 1./x.^2
Теперь можно вычислить эту функцию для вектора:
>> f(1:5)
ans =
1.0000 0.2500 0.1111 0.0625 0.0400
Отметим, что можно также задавать собственные функции с двумя или более аргументами. Например: