8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 122 123 124 125 126 127 128 ... 365

Примечание

Операторы not, and и or являются функциями, возвращающими значения "истина" (логическая единица) или "ложь" (логический ноль). Такие же значения принимает любое логическое выражение.

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

(abs(u) > 1.0е-10 ) & ( k <= 100000) или в эквивалентной форме:

and(abs(u) > 1.0е-10, k <= 100000)

Примечание

Для задания порядка выполнения логических операций следует использовать круглые скобки (подробнее про логические операторы и логические операции и про возможность применения их к массивам написано в разд. "Логические выражения с массивами и числами" данной главы).

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

Операторы ветвления

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

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

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


Проверка входных аргументов

Начнем с простейшего примера — создайте файл-функцию для вычисления

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

if условие

команды MATLAB

Если условие верно, то выполняются команды MATLAB, размещенные между if и end, а если условие неверно, то происходит переход к командам, расположенным после end. Условие является логическим выражением и записывается по правилам, описанным в предыдущем разделе.

Файл-функция, проверяющая значение аргумента, приведена в листинге 7.8. В нем мы использовали функцию warning, которая служит для вывода предупреждения в командное окно.

! Листинг 7.8. Файл-функция Rf un, проверяющая значение аргумента

function f - Rfun(x);

% вычисляет sqrt{x"2 - 1)

% выводит предупреждение, если результат комплексный % использование у = Rfun(x)

% проверка аргумента if abs{x) < 1

warning("результат комплексный) end

% вычисление функции f = sqrt<x"2 - 1);

end


Теперь вызов Rfun от аргумента, меньшего единицы по модулю, приведет к выводу в командное окно предупреждения:

» у = Rfun(0.2) результат комплексный У =

0 + 0.97979589711327i

Файл-функция Rfun только предупреждает о том, что ее значение комплексное, все вычисления с ней продолжаются. Если же комплексный результат означает ошибку вычислений, то следует прекратить выполнение функции, используя error вместо warning.

Примечание

В отличие от warning, выполнение error приводит к останову программы.

Напишите файл-функцию root2, которая по коэффициентам квадратного уравнения находит только вещественные его корни, а для комплексных выдает ошибку. Текст файл-функции root2 приведен в листинге 7.9.

Листинг 7.9. Файл-функция root2, находящая вещественные корни

...................................................................-.................

function [xl, х2] = root2(a, b, с) % возвращает вещественные корни квадратного % уравнения ахл2 + Ьх + с = 0

% если корни комплексные, то выдается сообщение об ошибке % использование [xl, х2) = root2(а, Ь, с)

D = Ьл2 - 4*а*с; % вычисление дискриминанта % проверка на наличие вещественных корней if D < 0

error(1комплексные корни)

end

% вычисление корней xl = (-Ь + sqrt(D))12; Х2 = (-b - sqrt(D))/2;



0 ... 122 123 124 125 126 127 128 ... 365