|
ОбзорВыделение группы операций в отдельную функцию, пригодную для повторного использования, является одной из наиболее распространенных задач при работе со Scilab. Простейший синтаксис вызова функции выглядит следующим образом: outvar = myfunction ( invar ) Значение каждого из трех элементов вызова функции приведено в списке:
Значения входных аргументов, в отличие от выходных, функция изменить не может. Мы уже имели дело со многими функциями на протяжении данного руководства. Например, функция 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, использующиеся при работе с функциями.
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 |