Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab / Matlab / Matlab - Lazarev.pdf
Скачиваний:
133
Добавлен:
18.05.2015
Размер:
5.67 Mб
Скачать

2.2. Создание М-файлов

96

заданному значению ее аргумента; n - желательное число частей разбиения указанного интервала. Если последнюю величину не задать, по умолчанию интервал разбивается на 25 частей. Несмотря на то, что количество частей "n" задано, число значений вектора "х" может быть значительно большим за счет того, что функция fplot проводит вычисления с дополнительным ограничением, чтобы приращение угла наклона графика функции на каждом шаге не превышало 10 градусов. Если же оно оказалось большим, осуществляется дробление шага изменения аргумента, но не больее чем в 20 раз. Последние два числа (10 и 20) могут быть изменены пользователем, для этого при обращении следует добавить эти новые значения в заголовок процедуры в указанном порядке.

Если обратиться к этойпроцедуре так:

[x, Y] = fplot (‘<имя функции>’, [<интервал>], n),

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

2.2. Создание М-файлов

2.2.1. Особенности создания М-файлов

Создание программы в среде MatLAB осуществляется с помощью либо собственного встроенного (начиная из версии MatLAB 5), либо стороннего текстового редактора, который автоматически вызовется, если его предварительно установить с помощью команды Preferences меню File командного окна MatLAB. Например, это может быть редактор Notepade среды Windows. Окно предварительно установленного редактора появляется на экране, если перед этим вызвана команда M-file из меню New или выбрано название одного из существующих М-файлов при вызове команды Open M-file из меню File командного окна. В первом случае окно текстового редактора будет пустым, во втором - в нем будет содержаться текст вызванного М-файла. В обоих случаях окно текстового редактора готово для ввода нового текста или корректировки существующего.

Программы на языке MatLAB имеют две разновидности - так называемые

Script-файлы (файлы-сценарии, или управляющие программы) и файлы-функции

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

2.2. Создание М-файлов

97

Главным внешним отличием текстов этих двух видов файлов является то,

что файл-функции имеют первую строку вида function <ПКВ> = <имя процедуры >(<ПВВ>),

где обозначен ПКВ - Перечень Конечных Величин, ПВВ - Перечень Входных Ве-

личин. Script-файлы такой строки не имеют.

Принципиальное же отличие состоит в совсем различном восприятии системой имен переменных в этих двух видах файлов.

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

ВScript-файлах все используемые переменные образуют так называемое рабочее пространство (Work Space). Значение и содержание их сохраняются не только на протяжении времени работы программы, но и на протяжении всего сеанса работы с системой, а, значит, и при переходе от выполнения одного Scriptфайла к другому. Иначе говоря, рабочее пространство является единым для всех Script-файлов, вызываемых в текущем сеансе работы с системой. Благодаря этому любой длинный Script-файл можно разбить на несколько фрагментов, оформить каждый из них в виде отдельного Script-файла, а в главном Script-файле вместо соответствующего фрагмента записать оператор вызова Script-файла, представляющего этот фрагмент. Этим обеспечивается компактное и наглядное представление даже довольно сложной программы.

За исключением указанных отличий, файл-функции и Script-файлы оформляются одинаково.

2.2.2.Основные особенности оформления М-файлов

Вдальнейшем под М-файлом будем понимать любой файл (файл-функцию или Script-файл), записанный на языке системы MatLAB.

Рассмотрим основные особенности записи текста программы (М-файла)

языком MatLAB.

1. Обычно каждый оператор записывается в отдельной строке текста программы. Признаком конца оператора является символ (он не появляется в окне) возврата каретки и перехода на следующую строку, который вводится в программу при нажатии клавиши <Enter>, т. е. при переходе на следующую строку.

2. Можно размещать несколько операторов в одной строке. Тогда предыдущий оператор этой строки должен заканчиваться символом ' ; ' или ' , '.

3. Можно длинный оператор записывать в несколько строк. При этом предыдущая строка оператора должна заканчиваться тремя точками (' ... ').

4. Если очередной оператор не заканчивается символом ' ; ', результат его действия при выполнении программы будет выведен в командное окно. Чтобы предотвратить вывод на экран результатов действия оператора программы, запись этого оператора в тексте программы должна заканчиваться символом ' ; '.

2.2. Создание М-файлов

98

5.Строка программы, начинающаяся с символа ' % ', не выполняется. Эта строка воспринимается системой MatLAB как комментарий. Таким образом, для ввода комментария в любое место текста программы достаточно начать соответствующую строку с символа ' % '.

6.Строки комментария, предшествующие первому выполняемому оператору программы, т. е. такому, который не является комментарием, воспринимаются системой MatLAB как описание программы. Именно эти строки выводятся в командное окно, если в нем набрана команда

help <имя файла>

7.В программах на языке MatLAB отсутствует символ окончания текста программы.

8.В языке MatLAB переменные не описываются и не объявляются. Любое новое имя, появляющееся в тексте программы при ее выполнении, воспринимается системой MatLAB как имя матрицы. Размер этой матрицы устанавливается при предварительном вводе значений ее элементов либо определяется действиями по установлению значений ее элементов, описанными в предшествующих операторах или процедуре. Эта особенность делает язык MatLAB очень простым в употреблении и привлекательным. В языке МatLAB невозможно использование матрицы или переменной, в которой предварительно не введены или не вычислены значения ее элементов (а значит - и не определены размеры этой матрицы). В этом случае при выполнении программы MatLAB появится сообщение об ошибке - "Переменная не определена".

9.Имена переменных могут содержать лишь буквы латинского алфавита или цифры и должны начинаться из буквы. Общее число символов в имени может достигать 30. В именах переменных могут использоваться как прописные, так и строчные буквы. Особенностью языка MatLAB есть то, что строчные и пропис-

ные буквы в именах различаются системой. Например, символы "а" и "А" могут использоваться в одной программе для обозначения разных величин.

2.3. Создание файл-функций

99

2.3. Создание простейших файл-функций (процедур)

2.3.1. Общие требования к построению

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

function [<ПКВ>] = <имя процедуры>(<ПВВ>).

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

function <имя переменной> = <имя процедуры>(<ПВВ>).

Если же в результате выполнения файл-функции должны быть определены (вычислены) несколько объектов (матриц), такая файл-функция представляет собой уже более сложный объект, который в программировании обычно называется процедурой (в языке Паскаль), или подпрограммой. Общий вид первой строки в этом случае становится таким:

function [y1, y2, ... , y] = <имя процедуры>(<ПВВ>),

т. е. перечень выходных величин y1, y2, ... , y должен быть представлен как век- тор-строка с элементами y1, y2, ... , y (все они могут быть матрицами).

В простейшем случае функции одной переменной заголовок приобретет

вид:

function y = func(x),

где func - имя функции (М-файла).

В качестве примера рассмотрим составление М-файла для функции

y = f1( x ) = d 3 ctg( x ) sin4 ( x ) cos4 ( x ) .

Для этого следует активизировать меню File командного окна MatLAB и выбрать в нем сначала команду New, а затем команду M-file. На экране появится окно текстового редактора. В нем нужно набрать такой текст:

function y = F1(x,d)

%Процедура, которая вычисляет значение функции

%y = (d3)*ctg(x)*sqrt(sin(x)4-cos(x)4).

% Обращение y = F1(x,d).

y = (d^3)*cot(x). *sqrt(sin(x). ^4-cos(x). ^4);

После этого необходимо сохранить этот текст в файле под именем F1.m. Необходимый М-файл создан. Теперь можно пользоваться этой функцией при расчетах. Так, если ввести команду

» y = F1(1, 0.1)

то получим результат

y = 4. 1421e-004.

Следует заметить, что аналогично можно получить сразу вектор всех значений указанной функции при разных значениях аргумента, если последние собрать в некоторый вектор. Так, если сформировать вектор

2.3. Создание файл-функций

100

 

 

 

»zet= 0:0. 3:1. 8;

иобратиться в ту же процедуру

»my = F1(zet,1),

то получим:

Warning: Divide by zero

 

my =

 

 

Columns 1 through 4

 

Na + Infi 0 + 2. 9369i

0 + 0. 8799i 0. 3783

Columns 5 through 7

 

0. 3339

0. 0706

-0. 2209

Примечания.

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

2.Во избежание вывода на экран нежелательных промежуточных результа-

тов, необходимо в тексте процедуры все вычислительные операторы завершать символом " ; ".

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

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

Чтобы получить информацию о созданной процедуре, достаточно набрать в командном окне команду:

»help f1,

ив командном окне появится

Процедура, которая вычисляет значение функции y = (d3)*ctg(x)*sqrt(sin(x)4-cos(x)4).

Обращение y = F1(x,d).

Другой пример. Построим график двух функций: y1 = 200 sin(x)/x; y2 = x2.

Для этого создадим М-файл, который вычисляет значения этих функций: function y = myfun(x)

% Вычисление двух функций

% y(1) = 200 sin(x)/x, y(2) = x2. y(:,1) = 200*sin(x) . / x;

y(:,2) = x . 2;

Теперь построим графіки этих функций:

»fplot('myfun', [-20 20], 50, 2), grid

»set(gcf,'color','white'); title('Графік функции "MYFUN"')

Результат изображен на рис. 2.1.

Соседние файлы в папке Matlab