Циклы типа while...end
Программирование в MATLAB Создание М-файлов-функций и М-файлов-сценариев М-файлы-сценарии являются просто записью серии команд без входных и выходных параметров. Язык программирования MATLAB является типичным интерпретатором. Это означает, что каждая инструкция программы распознается и тут же исполняется, что облегчает обеспечение диалогового режима общения с системой. Этап компиляции всех инструкций, т. е. полной программы, отсутствует. Интерпретация означает, что MATLAB не создает исполняемых конечных программ. Они существуют лишь в виде m-файлов. Для выполнения программ необходима среда MATLAB.
Задание 1:Откройте текстовый редактор системы MATLAB. Составьте m-сценарий, в котором бы строился график функции y(x)=x+sin(x) на отрезке [0,5]. Проверьте работу программы.
М-файлы-функции начинаются с объявления function, после которого идет имя выходного параметра (например, var), имя функции (например, my_func) и список входных параметров, перечисленных через запятую. Функция возвращает свое значение и может использоваться в качестве параметров других функций системы MATLAB. Все внутренние переменные функций являются локальными.
Структура m-функции выглядит следующим образом:
function выходной параметр=имя функции(список входных параметров) % комментарии Тело функции выходной параметр=выражение;
Пример m-функции с одним параметром, вычисляющей значение функции : function var=func1(x) % вычисление функции y=1/(x^2+1) var=1./(x.^2+1);
Такую функцию можно вызвать либо в другом m-файле, либо в командном окне, например:
>> y=func1(3)
y =
0.1000
>> x=0:5; >> y=func1(x)
y =
1.0000 0.5000 0.2000 0.1000 0.0588 0.0385
M-функция может содержать несколько выходных параметров, тогда они перечисляются в квадратных скобках через запятую, например:
function [var1,var2]=my_func(x,y,z) % комментарии Тело функции var1=выражение1; var2=выражение2;
Пример m-функции с одним параметром, вычисляющей значения функций :
function [var1,var2]=func2(x) % вычисление функций y1=1.5x^2, y2=cos(pi*x) var1=1.5*x.^2; var2=cos(pi*x); Пример вызова данной функции: >> [a b]=func2(3)
a =
13.5000
b =
-1
Задание 2:Откройте текстовый редактор системы MATLAB. Составьте m-функцию, вычисляющую значение функции y(x)=log(x^2+2). Проверьте работу программы.
Управляющие структуры языка MATLAB Поскольку язык программирования системы MATLAB ориентирован на структурное программирование, в нем нет номеров строк и программных операторов безусловного перехода GO TO. Имеются лишь управляющие структуры следующих типов: условных выражений if... else...elseif...end, циклы for...end и while...end. С позиций теории структурного программирования этих средств достаточно для решения любых задач. В MATLAB имеются также операторы-переключатели типа case.
Для создания программ необходимы специальные управляющие структуры
Функции ввода-вывода Для ввода пользователем значений переменных служит функция input. При использовании данной функции в следующем виде:
d=input(’Введите значение переменной d=’);
переменной d присваивается значение, введенное пользователем после запроса ’введите значение переменной’. При выполнении этой функции она останавливает вычисления и ожидает ввода значения.
Для вывода на экран текста и значений переменных служит функция disp:
disp(’pi=’); disp(pi)
Условный оператор Условный оператор if в общем виде записывается следующим образом:
if Условие, Инструкции_1, elseif Условие, Инструкции_2, else Инструкции_3, end
Эта конструкция допускает несколько частных вариантов. Простейший:
if Условие Инструкции end
Пока Условие возвращает логическое значение 1 (то есть "истина"), выполняются Инструкции, составляющие тело структуры if...end. При этом оператор end указывает на конец перечня инструкций. Инструкции в списке разделяются оператором , (запятая) или ; (точка с запятой). Если Условие не выполняется (дает логическое значение 0, "ложь"), то Инструкции также не выполняются.
Еще одна конструкция
if Условие, Инструкции_1, else Инструкции_2, end
выполняет Инструкции_1, если выполняется Условие, или Инструкции_2 в противном случае.
Условия записываются в виде: Выражение_1 Оператор_отношения Выражение_2,
причем в качестве Операторов_отношения используются следующие операторы: == (равно), < (меньше), > (больше), <= (меньше либо равно), >= (больше либо равно), ~= (не равно).
Все эти операторы представляют собой пары символов без пробелов между ними.
Задание 3: Создайте m-файл и проверьте работоспособность программы: вычисление корней квадратного уравнения.
% Решение квадратного уравнения a=input(’Input coefficient a=’); b=input(’Input coefficient b=’); c=input(’Input coefficient c=’); % Вычисление дискриминанта d= b^2-4*a*c; if d>0 disp(’Корни вещественны’) disp(’x1=’), disp((-b+sqrt(d))/(2*a)) disp(’x2=’), disp((-b-sqrt(d))/(2*a)) elseif d==0 disp(’Кратные корни’) disp(’x1=x2=’), disp(-b/(2*a)) else disp(’Корни комплексные’) disp(’x1=’), disp((-b+sqrt(d))/(2*a)) disp(’x2=’), disp((-b-sqrt(d))/(2*a)) end %Конец программы
Циклы типа for...end Циклы типа for...end обычно используются для организации вычислений с заданным числом повторяющихся циклов. Конструкция такого цикла имеет следующий вид:
for vаr=Выражение, Инструкция, ..., Инструкция, end
Выражение чаще всего записывается в виде s:d:e, где s - начальное значение переменной цикла var, d - приращение этой переменной и е - конечное значение управляющей переменной, при достижении которого цикл завершается. Возможна и запись в виде s:е (в этом случае d=1). Список выполняемых в цикле инструкций завершается оператором end. Возможно создание вложенных циклов.
Задание 4: Создайте m-файл-функцию и проверьте работоспособность программы: вычисление факториала (m-файл должен иметь имя factorial.m).
function v=factorial(n) % Факториал if n==0 v=1; else v=1; for i=1:n, v= v*i; end, end
Циклы типа while...end Цикл типа while выполняется до тех пор, пока выполняется Условие:
while Условие, Инструкции End
Задание 5: Создайте m-файл и проверьте работоспособность программы: приближенное вычисление бесконечной суммы.
% Вычисление числа \pi=4*(1-1/3+1/5-1/7+…) % Из-за медленной сходимости ряда точность eps не рекомендуется брать меньше 0.0001
eps=input(’задайте точность’) s=0; k=0; while 1/(2*k+1)>eps s=s+(-1)^k/(2*k+1); k=k+1; end disp(’pi=’), disp(s*4)
Популярное: Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (229)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |