Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МетодичкаИПлб.doc
Скачиваний:
39
Добавлен:
08.05.2019
Размер:
6.96 Mб
Скачать

4. Параметры-функции

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

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

fplot(@graf,[0 0.2])

Указатель на функцию (function handle) обеспечивает возможность доступа ко всей информации, необходимой для вычисления значений этой функции. В фирменных руководствах утверждается, что использование указателей несколько повышает производительность интерпретатора при многократных обращениях к функции. Это современная нотация, применение которой делает программирование стильным (более объектно-ориентированным), при этом повышаются скорость, точность и надежность численных методов.

Во-вторых, файл-функцию можно передавать по имени файла, в котором она хранится

fplot('graf',[0 0.2])

Имя m-файла с описанием функции , график которой строится, заключается в апострофы. Этот вариант уступает предыдущему, т.к. ограничивает использование в качестве параметров-функций пользовательских подфункций и вложенных функций.

В-третьих, если исследуемая функция задается достаточно простой и короткой формулой, то необязательно составлять файл-функцию. Можно ввести (определить) встраиваемую функцию. Встраиваемая функция определяется при помощи конструктора inline-объекта следующим образом:

имя_функции=inline('формула', список_аргументов);

Здесь список_аргументов – список входных аргументов функции (является необязательным); формула – текстовая строка, задающая выражение для вычисления функции . Например

graf2=inline('exp(-x).*(sin(x)+0.1*sin(100*pi*x))');

Inline-функция может быть использована как и любая другая функция Matlab. Например, обращение

y=graf2(0.5)

вернет значение y = 0,2908. Можно в качестве входного фактического параметра задать вектор и получить в результате вектор соответствующих значений функции

x=0:0.01:0.2;

y=graf2(x);

Для построения графика с помощью fplot в этом варианте необходимо записать

fplot(graf2, [0, 0.2])

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

>>graf3=inline('exp(-x).*(A*sin(x)+B*sin(100*pi*x))')

graf3 =

Inline function:

graf3(A,B,x) = exp(-x).*(A*sin(x)+B*sin(100*pi*x))

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

>> graf3=inline('exp(-x).*(A*sin(x)+B*sin(100*pi*x))','x','A','B')

graf3 =

Inline function:

graf3(x,A,B) = exp(-x).*(A*sin(x)+B*sin(100*pi*x))

Теперь первым у graf3 является параметр х. Для построения графика с помощью fplot в этом варианте необходимо записать

fplot(graf3,[0 0.2],[],[],'b-',5,0.5)

х будет изменяться от 0 до 0,2, формальные параметры А и В получат значения, равные 5 и 0,5 соответственно.

Внимание: 1. При вычислении значения встраиваемой функции переменные, расположенные в рабочем пространстве Workspace, не доступны! 2. Все формальные параметры inline-функции должны быть символьными строками, заключенными в апострофы.