logo
цос / Лаб_раб_ №1

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

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

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

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

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

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

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

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

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

function y = func(x),

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

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

y = f1( x) = d 3ctg (x) sqrt (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)

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

» 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"')

Третий пример - создание файл-функции, вычисляющей значения функции

y(t) = k1+k2*t+k3*sin(k4*t+k5).

В этом случае удобно объединить совокупность коэффициентов k в единый вектор К:

К = [k1 k2 k3 k4 k5]

и создать такой М-файл:

function y = dvob(x, K)

% Вычисление функции

% y = K(1)+K(2)*x+K(3)*sin(K(4)*x+K(5)),

% где К - вектор из пяты элементов

% Используется для определения текущих значений

% параметров движения подвижного объекта

y = K(1)+K(2)*x+K(3)*sin(K(4)*x+K(5));

Тогда расчет, например, 11-ти значений этой функции можно осуществить

так

» K = ones(1,5);

» t = 0:1:10;

» fi = dvob(t, K)

fi = 1. 8415 2. 9093 3. 1411 3. 2432 4. 0411 5. 7206 7. 6570 8. 9894 9. 4560 10. 0000

Рекомендуется оформлять М-файл процедуры-функции по такой схеме:

function [<Выход>] = <имя функции>(<Вход>)

% <Краткое пояснение назначения процедуры>

% Входные переменные

%<Детальное пояснение о назначении, типе и размерах

% каждой из переменных, перечисленных в перечне <Вход>

% Выходные переменные

% <Детальное пояснение о назначении, типе и размерах

% каждой из переменных перечня <Выход>

% и величин, используемых в процедуре как глобальные>

% Использование других функций и процедур

% <Раздел заполняется, если процедура содержит обращение

% к другим процедурам, кроме встроенных>

< П у с т а я с т р о к а >

% Автор : <Указывается автор процедуры, дата создания конечного варианта

% процедуры и организация, в которой созданная программа>

< Т е к с т и с п о л н я е м о й ч а с т и п р о ц е д у р ы >

Здесь обозначен: <Выход> - перечень выходных переменных процедуры,

<Вход> - перечень входных переменных, разделенных запятыми.

Примечание. При использовании команды help <имя процедуры> в командное окно выводятся строки комментария до первой пустой строки.

ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ

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

Сравните полученный результат с приведенным ответом у преподавателя.

Указание. В системе MatLAB несколько последних команд запоминаются. Повторный вызов этих команд в командное окно осуществляется нажатием клавиш < > и <↑ >. Используйте эту возможность для повторного обращения к набранной функции. Обратить внимание на форму записи внутренних математических функций. (Обратитесь к соответствующему разделу помощи HELP)

  1. Записать и вычислить арифметические выражения:

a=e2.5+90.5+81/3

b= sin(π/4) + cos(π/4)

с =ln(e4)+arctg(l)

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

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

  2. Вывести на экран отдельные значения элементов, созданных векторов и матриц.

  3. Ввести элементы векторов и матриц в виде арифметических выражений:

  1. Задать вектор-строку, используя, оператор «:»

  1. Ввести комплексные числа и вычислить действительные и мнимые части, а также абсолютные значения, используя встроенные функции IMAG, REAL, ABS

  1. Задать элемент матрицы Z(3,4)=5. Вывести матрицу Z, оценить ее размер и содержание.

  2. Построение семейства кривых. Построить семейство кривых (1-ехр(-x/(k/2))) для k от 1 до 10 и диапазона аргумента X от 0 до 5.0. Примечание:Использовать операторы сохранения и отключения хранения графической информации на экране hold on, hold off.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4