Встроенные функции. Функции, задаваемые пользователем
Основные элементарные математические функции приведены в табл. 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. Информацию из раздела можно получить, набрав в командной строке команду doc elfun. В этом разделе содержится полная информация о функциях комплексного аргумента real, angle, abs и т. д. (см. раздел 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-файлами. 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
Отметим, что можно также задавать собственные функции с двумя или более аргументами. Например:
>> g=inline(vectorize('1/(x^2+y^2)'),'x','y')
g =
Inline function:
g(x,y) = 1./(x.^2+y.^2)
Тогда выполнение выражения
>> g([1 2],[3 4])
ans =
0.1000 0.0500
дает значения функции в точках (1;2) и (3;4).
Дата добавления: 2015-03-14; просмотров: 1216;