Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

1.4. Программы и функции на языке пакета MATLAB.




Язык пакета MATLAB располагает средствами для организации более сложных по сравнению с рассмотренными алгоритмов вы­числений с использованием условных операторов и операторов цикла.

Условный оператор может быть простой формы:

IF переменная, оператор, ..., оператор, END.

Операторы выполняются, если все элементы переменной от­личны от нуля. Переменная обычно является результатом выпол­нения операций отношения или логических операций & (И), | (ИЛИ), ~ (НЕ). В режиме диалога условный оператор начнет выполняться после того, как будет введен соответствующий ему оператор END.

Более сложная форма условного оператора может включать оператор ELSEIF, что означает " иначе, если" и оператор ELSE - " иначе" ( в слове ELSEIF не должно быть пробела между ELSE и IF). Оператор END закрывает всю конструкцию. Например:

IF i==j

A(i, j)=2;

ELSEIF ABS(i-j)==1

A(i, j)=-1; ELSE A(i, j)=0;

END

При выполнении условия в операторе IF или ELSEIF после­довательность операторов выполняется до тех пор, пока не встретится оператор ELSEIF, ELSE или END, относящийся к данному незавершенному условному оператору. Среди выполняе­мых операторов также могут быть условные операторы, которые должны заканчиваться своим оператором END.

Оператор цикла FOR имеет вид:

FOR переменная=выражение, оператор, ..., оператор, END.

В общем случае переменная - это вектор, а выражение - матрица, столбцы которой по одному присваиваются переменной, после чего выполняются операторы тела цикла, заканчивающего­ся оператором END. Если выражение - вектор-строка, то пере­менная - скаляр. Примеры операторов цикла:

1.             FOR i=1: n

FOR j=1: n

A(i, j)=1/(i+j-1);

END

END

2.       FOR s=1. 0: -0. 1: 0. 0, v=v+s^2; END

3.             FOR E=EYE(n), Y=Y+A*E; END.

В последнем примере EYE(n)- единичная матрица размером

n x n и переменной Е последовательно присваиваются значе­ния единичных векторов длины n.

Если в первом примере в качестве тела внутреннего цикла использовать приведенную выше последовательность с условными операторами, получим программу для определения трехдиаго­нальной матрицы A, элементы главной диагонали которой равны 2, соседних верхней и нижней диагоналей - -1, остальные эле­менты равны нулю.

Оператор цикла WHILE имеет вид:

WHILE переменная, оператор, ..., оператор, END.

Операторы тела цикла выполняются до тех пор, пока все элементы переменной отличны от нуля, например:

e=0; f=1; n=1; a=49;

WHILE ABS(f-e)> 1. 0E-3 e=f; f=f+SQRT(a/n^3); n=n+1;

END

Цикл не будет выполняться до тех пор, пока не введен оператор END. Каждый оператор END соответствует ближайшему незавершенному оператору IF, FOR или WHILE. Если среди операторов тела цикла имеется оператор BREAK (обычно в ус­ловном операторе) его выполнение приведет к выходу из цикла.

Все переменные, введенные в сеансе работы в среде MATLAB или полученные в процессе вычислений, образуют рабочее про­странство. Для выдачи на экран списка переменных рабочего пространства служит команда WHO. По команде WHOS выдается список переменных с указанием их размерностей и количества отведенной для каждой из них памяти, а также размер свобод­ной памяти. Для удаления переменных из рабочего пространства служит команда CLEAR < список переменных>, переменные в списке разделяются пробелами. При выполнении этой команды без параметров удаляются все переменные из рабочего прост­ранства. После выполнения команды PACK производится " сжатие" памяти, то есть, перепись переменных рабочего прос­транства в компактную область, в результате чего освобожда­ется память для новых переменных.

Последовательность операторов MATLAB, реализующая некото­рый алгоритм вычислений, может быть с помощью любого редак­тора записана во внешний файл (в каталог пользователя) с определенным именем, которому следует дать расширение 'M', например, SCRIPT. M. Это будет M-файл типа сценария, для ис­полнения которого в среде MATLAB достаточно ввести его имя, например, SCRIPT. Переменные, заданные до выполнения тако­го файла, доступны в нем, а полученные в процессе его выпол­нения, доступны после его завершения.

Другой тип М-файла - это функция, которая может иметь списки входных и выходных формальных аргументов. Первая строка такого файла должна иметь вид:

FUNCTION [список выходных] = < имя функции> (cписок входных) аргументов аргументов

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

Количества фактических и формальных входных или выходных аргументов могут не совпадать. Имеется возможность анализа внутри тела функции числа фактических входных и выходных аргументов при каждом конкретном вызове функции. Для этого служат переменные NARGIN для входных аргументов и NARGOUT для выходных. Предусматривая анализ этих переменных в алго­ритме вычисления функции, можно обеспечить более удобный для пользователя способ обращения к функции.

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

GLOBAL < список переменных>,

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...