Создание собственной функции

Для определения новой функции используются ключевые слова 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

Сделать бесплатный сайт с uCoz