Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа3.doc
Скачиваний:
22
Добавлен:
16.04.2015
Размер:
324.1 Кб
Скачать

3.2.5.1 Файл-программы

Файл-программа была представлена выше (работа с примером). Все переменные, объявленные в файл-программе, становятся доступ­ными в рабочей среде после ее выполнения.

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

1. Из редактора М-файлов так, как описано выше.

2. Из командной строки или другой файл-программы, при этом в качестве команды используется имя М-файла.

Применение второго способа намного удобнее, особенно, если созданная файл-программа будет неоднократно использоваться впоследствии. Факти­чески, созданный М-файл становится командой, которую понимает MatLab. Закройте все графические окна и наберите в командной строке mydemo, по­является графическое окно, соответствующее командам файл-программы mydemo.m. После ввода команды mydemo MatLab производит следующие действия.

1. Проверяет, является ли введенная команда именем какой-либо из пере­менных, определенных в рабочей среде. Если введена переменная, то вы­водится ее значение.

2. Если введена не переменная, то MatLab ищет введенную команду среди встроенных функций. Если команда оказывается встроенной функцией, то происходит ее выполнение.

3. Если введена не переменная и не встроенная функция, то MatLab начи­нает поиск М-файла с названием команды и расширением m. Поиск на­чинается с текущего каталога (Current Directory), если М-файл в нем не найден, то MatLab просматривает каталоги, установленные в пути поиска (Path). Найденный М-файл выполняется в MatLab.

Если ни одно из вышеперечисленных действий не привело к успеху, то вы­водится сообщение в командное окно, например:

» mydem

??? Undefined function or variable 'mydem'.

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

Файл-функции

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

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

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

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

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, автоматически становится вектором нужного размера.