Обзор

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

Простейший синтаксис вызова функции выглядит следующим образом:

outvar  = myfunction   (   invar )

Значение каждого из трех элементов вызова функции приведено в списке:

  • myfunction представляет собой наименование вызываемой функции,
  • invar обозначает входные аргументы,
  • outvar соответствует выходным аргументам.

Значения входных аргументов, в отличие от выходных, функция изменить не может.

Мы уже имели дело со многими функциями на протяжении данного руковод­ства. Например, функция sin в составе команды y=sin(x) принимает входной аргумент х и помещает результат вычисления в переменную у. В соответствии с терминологией Scilab входные аргументы называются правосторонними, а выходные - левосторонними.

Количество входных и выходных аргументов функции не ограничено. Син­таксис функции с фиксированным числом аргументов таков:

[ol ,   . . . ,   on]   =  myfunction   (  il ,   . . . ,   in )

Входные и выходные аргументы разделяются запятыми " ,". Отметим, что спи­сок входных аргументов ограничивается круглыми скобками, а выходных -квадратными.

Следующий фрагмент демонстрирует выполнение LU-разложения матри­цы Гильберта. Для начала матрица генерируется с использованием функции testmatrix, принимающей два входных аргумента (тип матрицы и ее поря­док). Созданную матрицу мы передаем функции lu, которая возвращает две или три матрицы в зависимости от заданного пользователем количества вы­ходных аргументов. Если аргументов три, в качестве последнего возвращается матрица перестановок Р.

-->А =  testmatrix("hilb", 2)

А =

4.         - 6.

-6.        12.

-->[L,  U]   = lu(A)

U =

6.         12.

 0.        2.

L =

-0.6666667 1.

Таблица 16: Инструкции Scilab, использующиеся при работе с функциями.

 

function

начинает определение функции

endfunction

завершает определение функции

argn

количество входных и выходных аргументов в данном вызове функции

varargin

вектор, представляющий переменное число входных

аргументов функции

varargout

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

fun2string

генерирует текстовое определение (исходный код)

функции

get_function_path

getd

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

head_comments

отображает комментарии к функции

listfunctions

отображает свойства функций, которые были вызваны ранее

macrovar

возвращает списки входных и выходных параметров функции, используемых в теле функции внешних переменных, вызовов других функций и локальных переменных

 

 

 

 

 

 

 

 

1.                          0.

-->[L,U,Р] =1u(А)

Р =                

0.    1.

1.    0.

u =

- 6. 12.

  0. 2.

L =                

1.                                0.

         -0.6663667        1.

Заметим, что поведение функции lu зависит от числа выходных аргументов: во втором случае строки матрицы L меняются местами. Конкретнее, при двух выходных аргументах выполняется разложение А = LU (команда A-L*U позво­ляет проверить корректность результата), а при трех - разложение РА = LU с матрицей перестановок Р (в чем можно убедиться, выполнив команду P*A-L*U). Таким образом, функция lu выбирает соответствующий алгоритм в зависимо­сти от количества переданных ей параметров. Возможность определения функ­ции с переменным числом аргументов не рассматривается в данном руковод­стве, однако следует иметь в виду, что такая возможность доступна в Scilab.

Инструкции Scilab, предназначенные для работы с функциями, приведены в табл. 16. В последующих разделах наиболее часто используемые из них будут рассмотрены подробно.

© vse-o-scilab

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