|
Создание собственной функцииДля определения новой функции используются ключевые слова function и endfunction, В следующем примере мы создаем функцию myfunction, которая принимает единственный параметр х, умножает его значение на 2 и возвращает результат в качестве выходного параметра у. function у = myfunction ( х ) у = 2 * х endfunction В Scilab существует, по меньшей мере, три способа определить эту функцию: • Во-первых, можно ввести тело функции непосредственно в консоли Scilab, инструкция за инструкцией. Встретив запись наподобие function у = myfunction ( х ), интерпретатор переходит в режим ожидания тела функции. Завершается ввод командой endfunction, после чего Scilab возвращается в обычный режим, • Более удобным вариантом является определение функции в отдельном файле. Этот способ применяется в большинстве случаев. Для того чтобы загрузить заданную таким образом функцию, можно скопировать содержимое файла в консоль (удобно если определение функции содержит всего несколько строк) либо воспользоваться командой Load into Scilab в меню Scilab. • Также для загрузки функции можно использовать команду exec. Предположим, что определение функции размещается в файле "C:\myscripts\examples-functions.sce". Для загрузки применяется команда exec, как показано в следующем фрагменте: -->ехес("С:\mys сгipts\examples - functions.see") -->function у = myfunction ( x ) --> у = 2 * x -->endfunction Функция exec предназначена для исполнения инструкций, содержащихся в некотором файле, так как если бы они вводились непосредственно в консоли Scilab. При этом в консоли отображается каждая инструкция скрипта. Если файл содержит большое число команд, отображение каждой из них может оказаться избыточным. Чтобы этого избежать, после инструкции exec необходимо поставить “;”. Того же результата можно добиться, выбрав пункт меню Execute file into Scilab. -->exec("С:\mys cript s\examples - functions.see" );
После того как функция создана, ее можно использовать подобно любой другой инструкции Scilab: -->ехес("С:\mys сгipts\examples - functions.see"); -->y = myfunction ( 3 ) y = 6. Заметим, что присвоение выходному аргументу у значения (в данном случае у=2*х) является обязательным. Для того чтобы убедиться в этом, рассмотрим следующий пример, где значение присваивается переменной z, а не выходному параметру у: function у = myfunction ( х ) z = 2 * х endfunction Попытаемся теперь вызвать эту функцию, передав ей значение 1: -->myfunction ( 1 ) !-- error 4 Undefined variable: у at line 4 of function myfunction called by : myfunction ( 1 ) Интерпретатор Scilab сообщает нам об ошибке, поскольку переменная у не была инициализирована в теле функции. При решении некоторой задачи часто возникает потребность в определении более чем одной функции. Например, при оптимизации системы посредством функции optim нам, во-первых, требуется задать целевую функцию в соответствии с форматом, которого ожидает optim, а во-вторых - определить функцию-исполнитель, которая будет вызывать optim с требуемыми параметрами, В данном случае требуется всего две функции, однако на практике для решения задачи может потребоваться и несколько десятков функций, В этом случае будет разумным объединить функции в библиотеку, как показано в следующем разделе. |
|
© vse-o-scilab |