Самоучитель Matlab
зуется инструкция Re=input('Действительная часть Re='). В результате ее выполнения в командной строке выводится текстовое сообщение Действительная часть Re=, после чего пользователь должен ввести числовое значение для действительной части возводимого в степень комплексного числа и нажать клавишу <Enter>. В результате введенное пользователем значение считывается и возвращается в качестве результата выполнения инструкции inp ut('Действительная часть Re='). Этот результат, всоответствии с командой Re=input('Действительная часть Re='), записывается в переменную Re. Аналогично с помощью команд Im=input('Мнимая часть Im=')
иn=input('Целочисленная степень n=') считываются значения для мнимой части комплексного числа и степени (соответственно, переменные Im
иn). Командой z=(Re+1i*Im)^n формируется результат и записывается в переменную z (которая указана в заголовке функции как переменная результата). При этом мнимая единица в коде реализована в виде 1i.
Результат вычисления с помощью созданной функции выражения (2 − 3i)4 = −119 +120i показан на рис. 3.16.
Рис. 3.16. Вычисление степени комплексного числа
В приведенном далее коде жирным шрифтом выделен ввод пользователя:
>> ComplPower()
Действительная часть Re=2 Мнимая часть Im=-3 Целочисленная степень n=4 ans =
-1.1900e+002 +1.2000e+002i
На заметку
После ввода инструкции ComplPower() для вычисления соответствующей функции последовательно выводятся текстовые сообщения, после которых необходимо ввести нужное значение. Каждое следующее сообщение появляется после ввода числа и нажатия клавиши <Enter>.
116
Глава 3. Элементы программирования
Вывод сообщений в процессе выполнения функции обычно осуществляется с помощью функции disp(). Функция предназначена для вывода на экран значений массива, переданного аргументом функции, или текстовой строки. Особенность функции связана с тем, что выводятся только значения, без имени массива (если речь идет об аргументе-массиве). На рис. 3.17 показано окно редактора m-файлов с кодом функции, в которой использована встроенная функция disp() для вывода сообщений.
Рис. 3.17. Функция с командами вывода на экран сообщений
Программный код функции mCos() приведен ниже:
function mCos(x)
disp('Вычисление функции f(x)=(1-cos(x))/x^2'); disp(['Аргумент x=',num2str(x)]); z=(1-cos(x))/x^2;
disp(['Значение функции f(x)=',num2str(z)]); end
Функцией по аргументу x вычисляется выражение 1 − cos(x) , но как x2
результат это значение не возвращается, а только отображается. Интерес представляют команды, содержащие вызов функции disp(). В первом случае аргументом функции disp() передается текстовая строка 'Вычисление функции f(x)=(1-cos(x))/x^2'. Во втором случае аргументом функции disp() передается массив из двух элементов ['Аргумент x=',num2str(x)]. Первый элемент массива – текст 'Аргумент x='. Второй элемент тоже текстовый. Он получается преобразованием числового значения x (аргумент функции mCos()) в текст. Делается это с помощью встроенной функции num2str(). Аналогичная ситуация имеет место при вызове команды disp(['Значение функции f(x)=',num2str(z)]), только в этом случае к текстовому формату преобразуется значение переменной z, которой предварительно присвоено нужное значение. На рис. 3.18 приведен пример вызова функции mCos().
117
Самоучитель Matlab
Рис. 3.18. Результат вызова функции
После выполнения команды mCos(1) на экран выводятся следующие сообщения:
Вычисление функции f(x)=(1-cos(x))/x^2 Аргумент x=1
Значение функции f(x)=0.4597
Кроме функции disp(), для вывода специальных сообщений используются функции warning() и error(). В наиболее простом варианте аргументом функции warning() передается текстовый аргумент, который и выводится на экран. При этом в текст сообщения автоматически добавляется слово Warning. Выполнение функции, в которой выводится сообщение, при этом не прекращается. В отличие от функции warning(), функция error() не только выводит сообщение (текст, переданный аргументом функции), но и завершает работу кода, в котором вызвана функция error(). Пример использования функций warning() и error() приведен в следующем коде:
function ShowFunc
disp('Начало работы функции!'); warning('Предупреждение!'); error('Сообщение об ошибке!');
disp('Эта строка на экране не появится!'); end
Окно редактора m-файлов с кодом показано на рис. 3.19.
Рис. 3.19. Окно редактора m-файлов с кодом функции, выводящей сообщения на экран
118
Глава 3. Элементы программирования
Код функции фактически состоит из четырех инструкций по выводу на экран сообщений. Первое сообщение выводится функцией disp(). Второе сообщение выводится с помощью функции warning(). Третье сообщение выводится функцией error(). Наконец, в коде использована еще одна функция disp(), однако сообщение этой функцией выводиться не будет, поскольку после выполнения инструкции с функцией error() выполнение кода функции ShowFunc() будет прекращено. Результат вызова функции ShowFunc() представлен на рис. 3.20.
Рис. 3.20. Результат вызова функции, выводящей сообщения на экран
На заметку
Обращаем внимание, что при выводе сообщений с помощью функций warning() и error() не только добавляются дополнительные инструкции, но еще и указывается (через гиперссылку) та строка кода, которая вызвала соответствующее сообщение.
Управляющие инструкции
Полковник, забудьте про дворцовый этикет. Все новости докладывать немедленно!
К/ф "Клуб самоубийц, или Приключения титулованной особы"
Далее остановимся на управляющих инструкциях, которые могут использоваться в программных кодах Matlab. Речь в первую очередь пойдет об условных операторах и операторах цикла.
К условным операторам относят операторы if и оператор перебора switch. Оба они используются для создания точек ветвления в программном коде, когда в зависимости от выполнения некоторого условия (или условий) выполняются разные фрагменты кода.
В наиболее простом варианте синтаксис вызова условного оператора if имеет следующий вид:
119
Самоучитель Matlab
if условие команды end
После ключевого слова if указывается условие – выражение логического типа. Обычно условия строятся на основе операций отношения. Особенности реализации логического типа данных в Matlab (в том числе и логические операторы) описываются далее в этой главе. Так вот, если условие истинно, то выполняются команды после этого условия до ключевого слова end. Эта инструкция является идентификатором окончания условного оператора. После этого управление передается оператору, следующему после условного. Если условие истинным не является, управление сразу передается оператору, указанному после условного. Другими словами, при ложном условии команды после условия и до ключевого слова end не выполняются.
Кроме рассмотренных выше инструкций, в условном операторе могут использоваться ключевые слова else и elseif. Если синтаксис вызова условного оператора имеет вид
if условие команды_1 else
команды_2 end
то при истинном условии выполняются команды между условием и ключевым словом else (то есть блок команды_1). Если условие ложно, выполняются команды между ключевым словом else и инструкцией окончания условного оператора end. Допускается и более сложный формат вызова условного оператора:
if условие_1 команды_1
elseif условие_2 команды_2
elseif условие_3
команды_3
...
elseif условие_N команды_N
else
команды_N+1 end
В этом случае сначала проверяется первое условие (условие_1 после ключевого слова if). Если условие_1 истинно, выполняются команды после этого условия и до первого ключевого слова elseif. Если условие ложно, проверяется условие_2 после первого ключевого слова elseif. При ис-
120