Раздел: Документация
0 ... 126 127 128 129 130 131 132 ... 365 Листинг 7.15. Файл-функция myplot3D function myplot3D(xmin, xmax, ymin, ymax, vis) % строит график поверхности функции % -х*у2 % е* sin(pi*x) * cos(pi*x ) % на области xmin <— х <= xmax ymin <= у <= ymax % использование: myplot3D(xmin, xmax, ymin, ymax, vis) % vis = 1 — каркасная поверхность % vis - 2 — залитая поверхность % vis = 3 — линии уровня % vis = 4 — освещенная поверхность % проверяем числа входных аргументов, % если число входных аргументов не равно пяти, то выходим по ошибке if nargin ~= 5 error)Задайте xmin, xmax, ymin, ymax, vis) end % проверяем число выходных аргументов, если файл-функция вызвана 4 с выходными аргументами, то выходим по ошибке if nargout > О error(Функция myplot3D не имеет выходных аргументов) end % находим максимальный из размеров входных аргументов К = max([size(xmin) size(xmax) size(ymin) size(ymax) size(vis)]); % если хотя бы один из размеров входных аргументов не равен единице, % то выходим по ошибке if М ~= 1 error(входные аргументы должны быть числами) end % проверяем границы построения, если нижняя граница больше или равна %. верхней, то выходим по ошибке if (xmin >= xmax) (ymin >= ymax) error(нижняя граница должна быть меньше верхней) end I вычисление шагов по х и у для построения графика поверхности dx - (xmax - xmin) /40; dy = (ymax - ymin) /40; % генерация сетки [X, Y] = meshgrid(xmin:dx:xmax, ymin:dy:ymax); % вычисление функции Z = exp(-abs(X.*Y)-*sin(pi*X).*cos(pi*X. 2)); % определение способа построения в зависимости от vis switch vis case 1 % каркасная поверхность figure mesh(X, У, Z) case 2 % залитая поверхность figure surf(X, Y, Z) case 3 % линии уровня функции figure contour(X, У, Z) case 4 % освещенная поверхность figure surfKX, Y, Z) colormap{copper) shading interp otherwise % непредусмотренная ситуация disp(vis может быть 1, 2, 3 или 4) end Оператор switch удобно применять тогда, когда есть соответствие между дискретными значениями некоторой переменной и последующими действиями. Для определения ветви программы в зависимости от выполнения более сложных условий, например а > о, приходится использовать оператор i f. Выход из файл-функции, оператор return Файл-функция всегда прекращает свою работу после выполнения последнего оператора. Если алгоритм файл-функции предполагает ветвление, то это часто приводит к необходимости завершить функцию в каждой ветви. Применение условного оператора приводит к достаточно сложной структуре if-elseif-else, которая может быть упрощена за счет задействования оператора return. При достижении этого оператора выполнение файл-функции прекращается и происходит возврат в точку вызова— командное окно, другую файл-функцию или файл-программу. В качестве примера мы рассмотрим вычисление кусочно-заданной функции, которое было организовано с использованием конструкции if-eiseif-eise в файл-функции pwfun (см. листинг 7.12). Оператор return позволяет запрограммировать файл-функцию без ветвления так, как показано в листинге 7.16. Листинг 7.16. Файл-функция pwf un3 с досрочным завершением работы по return ;<к • S;....... ...............!,,:.:,............. ................................ function у = pwfun3(х) % вычисляет кусочно-линейную функцию %sin(x) - 1, если х < -pi % у{х) =x/pi, если -pi <= х < pi %-cos{x), если х >= pi % использование у = pwfun3(х), х - число; if х < -pi у = sin(x) - 1; return end % злесь x >= -pi if x < pi у = x/pi; return end % здесь x >= pi у = -cos(x) ; Прерывание и продолжение циклов Циклическое выполнение блока операторов в ряде случаев может потребовать либо прерывания цикла, т. е. досрочного выхода из него, либо перехода к следующему шагу цикла без выполнения части оставшихся операторов. При организации циклических вычислений операторами while или for следует позаботиться о том, чтобы внутри цикла не возникало ошибок или нежелательных действий. Например, пусть дан вектор х, состоящий из целых чисел, и требуется сформировать новый вектор у по правилу 0 ... 126 127 128 129 130 131 132 ... 365
|