Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Самостоятельный интерес представляет передача функции как параметра, т.е. задание одной функции в качестве входного параметра другой функции. Рассмотрим подробнее механизм такой передачи на примере 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-функции должны быть символьными строками, заключенными в апострофы.

 

 




Поделиться с друзьями:


Дата добавления: 2014-11-08; Просмотров: 745; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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