8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 83 84 85 86 87 88 89 ... 365

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

Следующий пример демонстрирует создание в рабочей среде встраиваемой функции fun:

» fun = inline!sin(х) - х.Л2.*cos(x)) fun -

Inline function:

fun(x) = sin(x) - x.A2,*cos(x)

Inline-фунция fun может быть использована как любая другая функция MATLAB, например: » у = fun(0.5) У =

0.2600

Если функция зависит от нескольких переменных, то все они являются аргументами введенной inline-функции и располагаются в алфавитном порядке:

» funl = inline(sin(а*х) - х."2.*cos(Ь*х)) funl =

Inline function:

funl(a,b,x) = sin(a*x) - x.Л2.*cos(b*x)

Для изменения порядка аргументов их следует перечислить через запятые в списке после выражения, определяющего вид функции:

>> fun2 = inline(*sin(а*х) - х. Л2.*cos(b*x), х, а, Ь)

fun2 =

Inline function:

fun2(x, a, b) = sin(a*x) - x.Л2.*cos(b*x)

Если в списке случайно пропущен хотя бы один из аргументов, то inline-фуикцней воспользоваться не удастся:

» fun3 = inline(sin(а*х) - х.Л2.*cos(b*x), х, b) fun3 =

Inline function:

£un3(x,b) = sin(a*x) - x."2.*cos(b*x)

Даже при наличии переменной а в рабочей среде вызов функции fun3 приведет к сообщению о том, что аргумент а не задан:

» а = 1 ;

» fun3(5,0)


??? Error using ==> inlineeval

Error in inline expression ==> sin(a*x) - x.л2.*cos(b*x)

??? Error using ==> eval

Undefined function or variable 1 a.

Error in —> inline.subsref at 25

INLINE OUT = inlineeval(INLINE INPUTS , INLINE 0&J .inputExpr, INLINE OBJ .expr);

Этот пример демонстрирует, что при вычислении значения встраиваемой функции переменные рабочей среды недоступны. Все аргументы функции inline должны быть символьными строками, заключенными в апострофы, или строковыми переменными. В противном случае получается недопустимая конструкция. Работа со строковыми переменными описана далее в книге, а при чтении этой главы достаточно придерживаться простого правила — ставить апострофы в аргументах функции inline.

Альтернативный способ задания исследуемой функции состоит в объявлении анонимной функции с помощью оператора указателя (G):

Имя функции = @(список аргументов) формула

В отличие от inline-функции, и аргументы, и формула записываются в обычном виде, а не как текстовые строки в апострофах. Кроме того, анонимной функции доступны переменные рабочей среды, которые входят в формулу. Однако они являются константами, в качестве которых берутся значения этих переменных в момент создания анонимной функции, и последующее изменение их значений не будет учитываться при вычислении функции:

» а= 1;

» gun3 = @(х, b) (sin(a*x) - х.Л2.*cos(b*x)) дипЗ =

@(х, b) sin(a*x) - х.Л2.*соз(Ь*х) >> дипЗ(5, 0)

йПБ -

-25.9589 » а = 1000; » дипЗ<5, 0) ans =

-25.9589

По способу использования анонимная функция напоминает inline-функцию, но отличается тем, что создается указатель на функцию, который связан с


Решение уравнений

Для нахождения корней произвольных уравнений служит функция f zero, а для определения всех корней полиномов применяется roots.

Решение произвольных уравнений

Функция f zero позволяет приближенно вычислить корень уравнения на некотором интервале или ближайший к заданному начальному приближению. В простейшем варианте f zero вызывается с двумя входными и одним выходным аргументом х = f zero ( func name, x0), где func name — ИМЯ файл-функции, вычисляющей левую часть уравнения, хо — начальное приближение к корню, х — найденное приближенное значение корня. Решите,

например, на отрезке [-5, 5] уравнение:

sin х- х2 cosa = 0.

(6.1)

исполняемым кодом. Это хорошо видно либо в окне Workspace, либо при выводе информации о функциях с помощью whos:

> whos gun3

NameSizeBytes Class

дипЗlxl16 function handle array

Grand total is 1 element using 16 bytes

» whos £un3

NameSizeBytes Class

£un3lxl908 inline object

Grand total is 7 9 elements using 908 bytes

Информация о выделенной под функции памяти показывает, что для анонимной функции исполняемый код и указатель на нее отделены, а для inline-функции это единый объект.

Вышеописанные способы задания исследуемых математических функций (по имени М-файла, по ссылке, анонимная функция или inline-функция) допустимы во всех вычислительных алгоритмах MATLAB. о которых пойдет речь в следующих разделах. Мы будем использовать все эти возможности и ряд других. Подчеркнем, что для достаточно простых исследуемых функций удобнее всего определить соответствующую inline или анонимную функцию. В то же время, если функция задана громоздким выражением, лучше всего написать соответствующий М-файл. А в случае, когда функция вычисляется по сложному алгоритму, это оказывается просто необходимым.



0 ... 83 84 85 86 87 88 89 ... 365