Файл-функции с одним входным аргументом

 

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

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

 

function f = myfun(x)

f = exp(-x)*sqrt( (хл2+1) / (хл4+0. 1) ) ;

 

Слово function в первой строке определяет, что данный файл содержит файл-функцию. Первая строка является заголовком функции, в которой раз­мещается имя функции и списки входных и выходных аргументов. В приме­ре, приведенном в листинге 5.2, имя функции myfun, один входной аргумент х и один выходной — f . После заголовка следует тело функции (оно в дан­ном примере состоит из одной строки), где и вычисляется ее значение. Важно, что вычисленное значение записывается в f . He забудьте поставить точку с запятой для предотвращения вывода лишней информации на экран.

Теперь сохраните файл в рабочем каталоге. Обратите внимание, что выбор пункта Saveили Save asменю Fileприводит к появлению диалогового окна сохранения файла, в поле File nameкоторого уже содержится название myfun. He изменяйте его, сохраните файл-функцию в файле с предложен­ным именем!

Теперь созданную функцию можно использовать так же, как и встроенные sin, cos и другие, например из командной строки:

» у = myfun (1.3)

У =

0.2600

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

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

Файл-функция, приведенная выше, имеет один существенный не­достаток. Попытка вычисления значений функции от массива приводит к ошибке, а не к массиву значений так, как это происходит при вычислении встроенных функций.

» х = [1.3 7.2];

» у = myfun(x)

??? Error using ==> ^

Matrix must be square.

Error in ==> C:\MATLABRll\work\myfun.m

On line 2 ==> f = exp(-x)*sqrt((хЛ2+1)/(хЛ4+1));

 

Для устранения этого недостатка необходимо просто при вычислении значения функции использовать поэлементные операции.

Измените тело функции, как указано ниже (не забудьте сохранить изменения в файле myfun.m).

Файл-функция, работающая с массивом значений

function f = myfun(x)

f = exp(-x).*sqrt((х.л2+1)./(х.л4+1));

 

Теперь аргументом функции myfun может быть как число, так и вектор или матрица значений, например:

» х = [1.3 7.2];

» у = myfun(x)

У =

0.2600 0.0001

Переменная у, в которую записывается результат вызова функции myfun, автоматически становится вектором нужного размера.

 








Дата добавления: 2015-03-11; просмотров: 589;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.