4.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) ⋅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)
Записать и вычислить арифметические выражения:
a=e2.5+90.5+81/3
b= sin(π/4) + cos(π/4)
с =ln(e4)+arctg(l)
Вычислить значения функций в заданных диапазонах изменения аргументов, используя матричную запись. Определить, какие виды операций применимы к данным выражениям - обычные матричные или унарные.
у = sin(x) для х=[0÷ 2π] с шагом π/8
x = (a-2b)/(2a2+4b2) для а = [1÷4],b= [1÷4] с шагом 1
s = (-1)n/п для n = [0 ÷ 10] с шагом 1
Сформировать ряд произвольных векторов и матриц, используя различные способы записи.
Вывести на экран отдельные значения элементов, созданных векторов и матриц.
Ввести элементы векторов и матриц в виде арифметических выражений:
у = [2+2/(3+4); ехр(5); sqrt(10)]
k = 3
mm= [1 k k2 k3; 1 1/k 1/k2 1/k3 ]
Сформировать самостоятельно несколько подобных векторов и матриц.
Задать вектор-строку, используя, оператор «:»
Целочисленный вектор-строка V1 от 1 до 10 с шагом 1,
Вещественный вектор-строка V2 от 0 до 2 с шагом 0.1,
Записать вектор-строку из целых чисел в убывающем порядке.
Оценить результаты операции VS=5:1
Ввести комплексные числа и вычислить действительные и мнимые части, а также абсолютные значения, используя встроенные функции IMAG, REAL, ABS
cl=3+2*i
c2=5+2*sqrt(-1)
сЗ=10
Сформировать самостоятельно несколько подобных чисел и произвести с ними простые арифметические действия.
Задать элемент матрицы Z(3,4)=5. Вывести матрицу Z, оценить ее размер и содержание.
Построение семейства кривых. Построить семейство кривых (1-ехр(-x/(k/2))) для k от 1 до 10 и диапазона аргумента X от 0 до 5.0. Примечание:Использовать операторы сохранения и отключения хранения графической информации на экране hold on, hold off.
Yandex.RTB R-A-252273-3
- Лабораторная работа № 1 основы программирования в пакете прикладных программ matlab
- 1. Использование matlab в качестве научного калькулятора
- 1.1. Операции с числами
- 1.1.1. Ввод действительных чисел
- 1.1.2. Простейшие арифметические действия
- 1.1.3. Ввод комплексных чисел
- 1.1.4. Элементарные математические функции
- 1.1.5. Специальные математические функции
- 1.1.6. Элементарные действия с комплексными числами
- 1.1.7. Функции комплексного аргумента
- 1.2 Простейшие операции с векторами и матрицами
- 1.2.1. Ввод векторов и матриц
- 1.2.2. Формирование векторов и матриц
- 1.2.3 Действия над векторами
- 1.2.4 Поэлементное преобразование матриц
- 1.2.5 Матричные действия над матрицами
- 1.3 Функции прикладной численной математики
- 1.3.1. Операции с полиномами
- 2. Программирование в среде MatLab
- 2.1 Операторы цикла и условные операторы
- If условие
- If условие
- 2.2 Ввод исходных данных и вывод результатов
- 3. Графика
- 4. Создание м-файлов
- 4.1. Особенности создания м-файлов
- 4.2. Основные особенности оформления м-файлов
- 4.3 Создание функциональных файлов
- 4.3.1 Общие требования к построению