- •Лабораторная работа №3
- •3.2.2 Построение графиков функции одной переменной
- •3.2.3 Графики функций двух переменных
- •3.2.4 Поворот графика, изменение точки обзора
- •3.2.5 М-файлы
- •Работа в редакторе м-файлов
- •3.2.5.1 Файл-программы
- •Файл-функции
- •3.2.5.2 Файл-функции с одним входным аргументом
- •3.3. Порядок выполнения работы
- •3.4 Контрольные вопросы
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, автоматически становится вектором нужного размера.