русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Встроенные функции. Функции, задаваемые пользователем


Дата добавления: 2015-06-12; просмотров: 522; Нарушение авторских прав


 

Основные элементарные математические функции приведены в табл. 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

Отметим, что можно также задавать собственные функции с двумя или более аргументами. Например:

>> 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).



<== предыдущая лекция | следующая лекция ==>
Векторы и матрицы | Устранение ошибки наиболее целесообразно не путем набора нового правильного выражения, а редактированием ошибочного.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.476 сек.