Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Команды 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!