Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



Команды MatLab

End

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

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

function S = mysin(x)

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

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

S = 0;

k = 0;

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

S = S + (-1)^k*x.^(2*k+l)/factorial(2*k+l);

k =' k + 1;

End

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

Условие цикла while может содержать не только знак >. Для задания условия выполнения цикла допустимы также другие операции отношения, приведенные в табл. 1.

Таблица 1. Операции отношения

Обозначение Операция отношения
= Равенство
< Меньше
> Больше
<= Меньше или равно
>= Больше или равно
= Не равно

Задание более сложных условий производится с применением логических операторов. Например, условие -1 х<2 состоит в одновременном выполнении двух неравенств х -1и х< 2, и записывается при помощи логического оператора and

and(x >= -1, х < 2)

или эквивалентным образом с символом &

(х >= -1) & (х < 2)

Логические операторы и примеры их использования приведены в табл. 2.

Таблица 2. Логические операторы

Оператор Условие Запись в MatLab Эквивалентная запись
Логическое"И" х<3 и k = 4 and(x <3,k==4) (х < 3) & (k== 4)
Логическое "ИЛИ" х =1,2 Ог(х==1, х ==2) (х == 1) | (х== 2)
Отрицание "НЕ" а 1.9 not (a== 1.9) ~(а == 1.9)

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

while (abs(х.^(2*k+1)/factorial(2*k+1))>1.0e-10)&(k<=10000))

или в эквивалентной форме

while and(abs(х.^(2*k+l)/factorial(2*k+l))>1.0e-10), k<=10000)

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

2.5.3. Условный оператор if

Условный оператор if позволяет создать разветвляющийся алгоритм выполнения команд, в котором при выполнении, определенных условий работает соответствующий блок операторов или команд MatLab.

Оператор if может применяться в простом виде для выполнения блока команд при удовлетворении некоторого условия или в конструкции if-elseif-else для написания разветвляющихся алгоритмов.

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





Дата публикования: 2014-12-10; Прочитано: 299 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...