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

0 ... 89 90 91 92 93 94 95 ... 365

том числе fzero, fminbnd и fminsearch, написаны на языке программирования MATLAB. Они имеют открытый код и расположены в подкаталоге Uoolbox\matlab\funfun основного каталога MATLAB.

Более подробно о fplot

Мы уже отмечали, что fplot учитывает поведение функции за счет адаптивного выбора шага, что приводит к графикам, достаточно точно отображающим поведение исследуемой функции. Уделим теперь более пристальное внимание тем способам вызова fplot, которые позволяют настраивать адаптивный выбор шага, получать вместо графика таблицу значений функции и работать с математическими функциями, зависящими от одного или нескольких параметров.

До сих пор при использовании fplot мы задавали во входных аргументах имя файл-функции (указатель на нее, inline или анонимную функцию), пределы независимой переменной и свойства линии. Самый общий способ вызова fplot таков:

[x, y] = fplot(@pfun, limits, tol, n, LineSpec, PI, P2,...)

Следует учесть, что при указании необязательных выходных аргументов в х заносятся значения независимой переменной, by — соответствующие значения функции, а сам график не выводится. Таким образом, fplot позволяет получить таблицу значений функции, для визуализации которой достаточно выполнить plot(x,y).

Длина списка входных аргументов должна быть больше или равна двум, т.е. функция, вычисляющая значения математической функций, и вектор с пределами для построения графика задаются всегда. Отметим, что вектор limits может содержать как два элемента — пределы по оси абсцисс, так и четыре— пределы по оси абсцисс и ординат, например, fplot {@sin, E-2*pi 2*pi -0.5 0.5]). Алгоритм fplot адаптивно подбирает шаг, измельчая его вблизи участков быстрого роста или убывания функции так, чтобы обеспечить относительную точность 2»10-3. При необходимости, точность можно задать в третьем входном аргументе tol (она должна быть меньше единицы). Сравните графики функции sin(l/x) на отрезке

[0.01 1], построенные с точностью 2» 10-3 по умолчанию и с точностью Ю-4.

»fun = inline(sinfl/x))

»subplot(2, 1, 1)

»fplotffun. [0.01 11)

»subplot(2, 1, 2)

»fplottfun, [0.01 1], 1.0e-4)


Другой способ управления алгоритмом fplot состоит в задании минимального числа разбиений исходного отрезка n (1 по умолчанию), причем п должно быть больше либо равно единице.

Пятый параметр LineSpec предназначен для определения типа линии, цвета

и маркера. Поскольку точность toi может быть только меньше единицы,

минимальное число разбиений л больше единицы, a LineSpec не является

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

входными аргументами

» fplot(@pfun, limits, tol)

» fplot(@pfun, limits, n)

» fplot(@pfun, limits, LineSpec)

и сама выбирает нужную последовательность действий.

Разберем теперь назначение входных аргументов, которые указываются, начиная с шестой позиции списка после LineSpec. Исследуемая математическая функция может зависеть от нескольких параметров, например:

y(x) = tP}X - p2s\nx. Требуется построить графики функций для следующих пар значений: р1 =0.1, Р2 = 2; р,=0.2, р2 = 2.5; /7, =0.3, р2 =3.7. Разумеется, можно написать три функции для вычисления у{х), или каждый раз

вносить изменения в одну и ту же функцию. Гораздо эффективнее запрограммировать функцию с тремя входными аргументами, первый из которых — независимая переменная, а остальные — параметры функции (листинг 6.3).

Листинг 6.3. Файл-функция для функции, зависящей от параметровI

function f = pfun(x, pi, p2) f = exp(pl*x) - p2*sin(x);

Теперь при вызове fplot следует указать текущие значения параметров в списке входных аргументов, начиная с шестой позиции. Для этого необходимо задать пять предыдущих аргументов, причем в качестве tol, п или LineSpec можно взять пустой массив — будут использоваться установленные по умолчанию значения. Удовлетворимся стандартной точностью и минимальным числом разбиений, определим только тип линии для каждой пары параметров:

» fplot(@pfun, [-3 3], [1, [ ],0.1, 2);

» hold on

» fplot(@pfun, [-3 3], [],[], —, 0.2, 2.5); » fplot(@pfun, [-3 3], [],[],0.3 ,3.7);


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

Исследование функций, зависящих от параметров

Функции fzero, fminbnd и fminsearch поддерживают работу с математическими функциями, зависящими от параметров. Заметим, что версия MATLAB 7.0 унаследовала от предыдущей тот же подход, что остался в fplot, хотя его описание исключено из справочной системы. Значения параметров последовательно задаются в списке входных аргументов после управляющей структуры options. Заполнение самой структуры не обязательно, если при решении уравнения или минимизации функции достаточно определенных по умолчанию значений Display, MaxFunEvals, Maxlter, ToiFun", TolX. Как и в случае с fplot допускается указание пустого массива вместо неинтересующей нас управляющей структуры, например

» [xl, fl] = fzero(@pfun, 0, [ ], 0.1, 2) xl =

0.5570

fl =

с

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

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

» pi = 0.1;

» р2 =2;

» [xl, fl] = fzero{@(x) exp(pl*x) - p2*sin(x), 0)

xl =

0.5570

fl =



0 ... 89 90 91 92 93 94 95 ... 365