Программирование. Операторы цикла. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программирование. Операторы цикла.



 

    Цель работы: научиться использовать операторы цикла

 

 

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 

Выполнение схожих повторяющихся действий в MatLab осуществляется при помощи операторов циклов for и while. Цикл for предназначен для выполнения заданного числа повторяющихся действий, а while – для действий, число которых заранее неизвестно, но известно условие продолжения цикла.

Самое простое использование for осуществляется следующим образом:

 

for count = start: step: final

команды MatLab

end

 

Здесь count – переменная цикла, start – ee начальное значение, final

конечное значение, а step – шаг, на который увеличивается count – при каж-

дом следующем заходе в цикл. Цикл заканчивается как только значение count

становится больше final. Переменная цикла может принимать не только целые, но и вещественные значения любого знака.

    Пусть требуется вывести семейство кривых для х ∈ [0;2 π], которое

задано функцией, зависящей от параметра у(х,а)=е-axsinx, для значений параметра от –0.1 до 0.1. Можно, конечно, последовательно вычислять у(х,а) и строить ее графики для различных значений а от –0.1 до 0.1, но гораздо удобнее использовать цикл for. Наберите текст файл-процедуры в редакторе М-файлов:

figure

x = [0: pi / 30: 2*pi];

for a = –0.1: 0.02: 0.1

y = exp (-a*x).* sin(x);

hold on

plot(x, y)

end

 

Сохраните файл и запустите его на выполнение (или из редактора М-файлов, или из командной строки, набрав в ней команду имя сохраненного файла  и нажав < Enter >).

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

Напишите файл-программу для вычисления суммы: S=

Алгоритм вычисления суммы использует накопление результата, то есть сначала сумма равна нулю, затем в переменную k заносится единица, вычисляется 1/k! (то есть 1/1!), добавляется к S и результат снова заносится в S. Далее k увеличивается на единицу, и процесс продолжается пока последним слагаемым не станет 1/10!

 

Файл-программа вычисляет искомую сумму:

% ФАЙЛ-ПРОГРАММА ДЛЯ ВЫЧИСЛЕНИЯ СУММЫ

% 1/1! + 1/2! + … + 1/10!

% обнуление S для накопления суммы

S = 0;

% накопление суммы в цикле

for  k = 1: 10

S = S + 1 / factorial (k);

end

% вывод результата в командное окно

s

Если шаг цикла равен 1, то его можно не указывать.

Наберите файл-программу в редакторе М-файлов, сохраните в текущем каталоге и выполните ее. Результат отображается в командном окне, т.к. в последней строке файл-программы содержится S без точки с запятой для вывода значения переменной S:

 

S =

1.7183

 

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

Первые две строки с комментариями не случайно отделены пустой строкой от остального текста программы. Именно они выводятся на экран, когда пользователь при помощи команды help из командной строки получает информацию о том, что делает записанный файл.

Цикл for оказывается полезным при выполнении повторяющихся похожих действий в том случае, когда их число заранее определено. Обойти это ограничение позволяет более гибкий цикл while.

Требуется найти сумму для заданного x (разложение в ряд sin x):

 

S(x)= .

 

Конечно, до бесконечности суммировать не удастся, но можно накапливать сумму, пока слагаемые являются не слишком маленькими, скажем больше 10-10 (по модулю). Циклом for здесь не обойтись, т.к. заранее неизвестно значение k, обеспечивающее малость текущего слагаемого. Выход состоит в применении цикла while, который работает, пока выполняется условие цикла:

while условие цикла

команды MatLab

end

В данном примере условием цикла является то, что текущее слагаемое xm/m! больше 10 -10. Для записи условия в формате, понятной MatLab, следует использовать знак больше (>).

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

 

function s = mysin (x)

% Вычисление синуса разложением в ряд

% Использование: y = mysin (x), –pi<x<pi

s = 0;

k = 0;

while abs (x.^ (2*k+1) / factorial (2*k+1)) > 1.0e–10

s = s + (–1) ^k*x. ^ (2*k+1) / factorial (2*k+1);

k = k + 1;

end

 

Обратите внимание, что у цикла while, в отличие от for, нет переменной цикла, поэтому пришлось до начала цикла k присвоить ноль, а внутри цикла увеличивать k на единицу.

 

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Задание 1. 1. Напишите файл-программу построения серии кривых, на интервале х [0;2 , для параметра, меняющегося от 1 до 1,2 функции у(х,а)=e2ax cosx,

Задание 2. Напишите файл-программу для вычисления выражения

S=

 

ТРЕБОВАНИЯ К ОТЧЕТУ

 

Отчет должен быть оформлен согласно ГОСТ 7.32-2001 и содержать 1.Титульный лист

2. Цель работы

3. Краткие теоретические сведения

4. Результаты выполнения заданий.

5. Выводы по работе.

 

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1. Для чего предназначен оператор циклов for?

2. Когда применяется оператор циклов while?

 

ЛАБОРАТОРНАЯ РАБОТА № 9



Поделиться:


Последнее изменение этой страницы: 2021-08-16; просмотров: 92; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.70.157 (0.009 с.)