Руководства, Инструкции, Бланки

павлова м.и руководство по работе с пакетом Scilab img-1

павлова м.и руководство по работе с пакетом Scilab

Категория: Руководства

Описание

Павлова М

Павлова М.И. Руководство по работе с пакетом Scilab
  • Файл формата zip
  • размером 3,96 МБ
  • содержит документ формата pdf
  • Добавлен пользователем Anatol 24.02.2012 20:39
  • Отредактирован 24.02.2012 20:52
  • Скачан 58 пользователями

Цель пособия: помощь русскоязычному начинающему пользователю быстрее освоиться в этом пакете.
Естественно начинать освоение пакета Scilab c раздела Intro.pdf англоязычной документации. На основе этого раздела написано данное пособие, но оно не является его прямым переводом: в некоторых местах расширено, в некоторых местах сокращено. Пособие снабжено простыми примерами в текстовом виде. Для графических примеров приведен ожидаемый результат в формате .gif
Для простоты можно начать с версии пакета для Windows. Версии для операционных систем Windows и Linux имеют некоторые отличия в панели меню управления окна, но все команды пакета Scilab в обеих версиях идентичны.
Внимание!
Данное пособие первоначально было написано на основе версии Scilab 2.6.

  • Чтобы скачать этот файл зарегистрируйтесь и/или войдите на сайт используя форму сверху.

Другие статьи

Павлова м.и руководство по работе с пакетом scilab

/ Ерин_все_материалы / анализ / scilab_manual / index

Руководство по работе с пакетом SCILAB

Автор: Павлова М. И. e-mail: meri@csa.ru

В 2-3 декабря 2004 года состоялась первая международная конференция SCILAB2004. Программу и материалы статей можно посмотреть следующему адресу. От России членом программного комитета был профессор Г. М. Кобельков из МГУ им. Ломоносова.

Мне, к сожалению, пришлось отказаться от участия в конференции.

На конференции был выбран талисман продукта scilab - птица "puffin", свободная и благородная, что соответствует идеологии программного продукта с открытым источником.

По-русски, это, кажется, тупик.

Появилась новая версия Scilab 3.0 для Windows и Linux. Доступна на сайте www.scilab.org .

o Основные характеристики пакета o Обзор документации

o Часть I. Начальные сведения

o Часть II. Библиотеки

Система контроля уровня знаний

Замечание: Для просмотра документации в формате pdf следует установить программный продукт Adobe Acrobat Reader, распространяемый свободно с сайта www.adobe.com

Scilab - это язык высокого уровня для выполнения математических расчетов. Пакет включает в себя набор инструментов и интерактивную документацию. В первом приближении пакет является некоммерческим аналогом пакета Matlab. Об основных отличиях между ними можно прочитать на сайте разработчика Scilab. Для освоения пакета Scilab и использования данной документации знание Matlab не является обязательным.

Пакет разработан Scilab Group INRIA-Rocquencourt Metalau Project. Свободно распространяемую версию пакета вместе с полной документацией на английском языке в формате pdf можно получить по адресу http://www.scilab.org .

Продолжением пакета Scilab является пакет Scilab//. обеспечивающий возможность параллельных вычислений и интерфейс для использования параллельных библиотек PBLAS (Parallel Basic Linear Algebra Subprograms) и ScaLAPACK (Scalable Linear Algebra PACKage).

Основные характеристики пакета Scilab

o Распространение: Scilab свободно распространяется вместе с исходными кодами. Использование, копирование, изменение, распространение - свободные. Пакет защищен специальной лицензией, основное отличие которой от стандартной GNU лицензии, по утверждению авторов,

определяется стремлением избежать появления клонов.

o Платформы: UNIX (включая Linux), Windows. Включен в стандартную поставку SuSE. Исходные тексты, рабочая версия для Windows и документация доступны в локальной сети.

o Имеется интерфейс и система помощи. o Имеются алгоритмы базовой математики. o Имеется возможность программирования.

o Имеется возможность работать не только в численном виде, но и в формульном варианте.

o Имеется возможность работы с графикой.

o Интерфейс с прикладными программами: имеется возможность использовать откомпилированные функции языков Си и Фортран.

Scilab состоит из 3-х частей:

14. библиотека функций (Scilab-процедуры)

15. библиотека Fortran и С процедур

Обзор документации по пакету Scilab

Существует пакет документации на английском языке. Версия пакета документации 1.1. для Scilab 2.4. Документация получена c сервера ДВО РАН (Владивосток ).

Документация по пакету Scilab очень обширна и состоит из следующих файлов:

Освоить такой большой объем документации требует большого времени и знания английского языка. Цель пособия: помощь русскоязычному начинающему пользователю быстрее освоиться в этом пакете.

Естественно начинать освоение пакета Scilab c раздела Intro.pdf. На основе этого раздела написано данное пособие, но оно не является его прямым переводом: в некоторых местах расширено, в некоторых местах сокращено. Пособие снабжено простыми примерами в текстовом виде. Для графических примеров приведен ожидаемый результат в формате .gif

Общее количество определенных в Scilab служебных команд равно 1021. Полное описание команд дано в файле документации manual.pdf. Там же есть удобное оглавление по разделам. Этот документ полезен для опытного пользователя в качестве справочника. Практически он дублирует On line Help пакета.

2) Вышла книга: Б. Андриевский, А. Фрадков "Элементы математического моделирования в программных средах MATLAB 5 и Scilab" СПб. Наука, 2001. 286 с. (К сожалению, автору пособия не удалось ее даже подержать в руках.)

3) Книги, статьи и сообщения о Scilab (на английском языке)

Пакет обладает некоторыми на мой взгляд " избыточными" без которых вполне можно обойтись. Поэтому изучение всех возможных операций оставляется для

самостоятельного изучения любопытствующих и не является целью данного пособия..

Для простоты можно начать с версии пакета для Windows. Версии для операционных систем Windows и Linux имеют некоторые отличия в панели меню управления окна, но все команды пакета Scilab в обеих версиях идентичны.

Данное пособие первоначально было написано на основе версии Scilab 2.6. Теперь вышла новая версия Scilab 2.7. Последняя версия для операционной системы

Windows имеет версию 2.7.2.

Обнаруженные изменения в работе с недавно вышедшей версии 2.7 будут постоянно дополняться в руководство.

Дополнительные возможности в версии 2.7 по сравнению с 2.6.

В июле 2004 года стала доступна версия Scilab 3.0. Кроме того, в декабре 2004 года INRIA проводит первую международную конференцию по Scilab.

Начинаем работать в Scilab!

Последнее обновление 28.12.2004 WebMaster

Павлова м.и руководство по работе с пакетом scilab

Документация и учебники на русском

Есть документация на русском:

  • Cайт Scilab - теория и практика. ведётся сотрудниками Донецкого национального технического университета)
  • Руководство по работе с пакетом SCILAB. автор - Павлова М. И. (СПБ)
  • в России издана книга: Б. Андриевский, А. Фрадков "Элементы математического моделирования в программных средах MATLAB 5 и Scilab" СПб. Наука, 2001. 286 с.

С 1994 года распространяется в виде исходных кодов через интернет.

Поддерживается и развивается Scilab Сonsortium, созданном в 2003 году (сейчас 25 членов), в который входят ряд преимущественно французских университетов (в частности, Ecole Polytechnique) и крупных компаний (Dassault Aviation, Renault)

Возможности

Scilab имеет схожий с MATLAB язык программирования, в составе имеется утилита, позволяющая конвертировать документы Matlab > Scilab.

В состав пакета также входит Scicos — инструмент для редактирования блочных диаграмм и симуляции (аналог simulink в пакете MATLAB), Имеется возможность совместной работы Scilab с программой LabVIEW.

В системе доступно множество инструментов:

  • 2D и 3D графики, анимация
  • Линейная алгебра, разреженные матрицы (sparse matrices)
  • Полиномиальные и рациональные функции
  • Интерполяция, аппроксимация
  • Симуляция: решение ОДУ и ДУ
  • Дифференциальные и не дифференциальные оптимизации
  • Обработка сигналов
  • Статистика
  • Компьютерная алгебра
  • Интерфейс к Fortran, Tcl /Tk. C. C++. Java. LabVIEW

Scilab позволяет работать с элементарными и большим числом специальных функций (Бесселя, Неймана, интегральные функции), имеет мощные средства работы с матрицами, полиномами (в том числе и символьно), производить численные вычисления (например численное интегрирование) и решение задач линейной алгебры, оптимизации и симуляции, мощные статистические функции, а также стредство для построения и работы с графиками.

Распространение

Программа доступна для различных операционных систем, включая GNU/Linux и Microsoft Windows. Имеется возможность расширения возможностей программы внешними программами и модулями, написанными на разных языках программирования. Программа имеет открытый исходный код, но позволяет использование без особого разрешения INRIA её только в некоммерческих целях.

Отличительные особенности

Отличия от некоторых коммерческих программ:

  • Бесплатность
  • Маленький размер (13Мб против более чем двухгигабайтного пакета MATLAB )
  • Возможность запуска в консоли без использования графического интерфейса. Это позволяет производить автоматизированные вычисления.
Простые вычисления

Код, задающий матрицу и считающий определитель:

Построение простого графика функции

Быстрое построение 3D-графики в SciLab

Простейшее, но красивое школьное построение графиков в декартовых координатах обеспечивается функциями:

  • mesh(x,y,z) - «каркасная модель»
  • surf(x,y,z) - каркасная модель с «раскраской» по значению z

Графики строятся по наборам значений (x,y,z) для каждой точки.

Первый шаг: подготовка набора точек (x,y)

Сначала нужно задать (или рассчитать) набор точек в области определения – участока плоскости (x,y). Задать можно вручную, но для наших целей лучше всего воспользоваться функцией meshgrid(), автоматически рассчитывающей набор точек (x,y) для заданного интервала. Например, x от -4 до 4, y от -4 до 4:

По умолчанию задаются значения с шагом 1, получаем массив [x y], значения которого отображаются в окне программы:

Чтобы значения не отображались (они запоминаются), достаточно в конце строки добавить «;» - вот так:

Если надо задать меньший шаг, то между максимальным и минимальным значениями переменных задаём шаг:

Второй шаг: задаём функцию z=f(x,y)

Задаём функцию z=f(x,y) в виде z= НЕКАЯ_ФУНКЦИЯ(x,y). Например, зададим плоскость:

Третий шаг: рисуем график: Если желаем нарисовать каркасную модель, выполняем команду:

Чтобы очистить окно отображения графика используется функция clf() - она очищает свойства текущего окна графики и устанавливает их в значения по умолчанию.

В случае, если нужно нарисовать график-«каркас» с «раскраской» по значению z, выполняем команду:

Вопрос: а что будет, если набрать surf(x,2*x,sin(x)) ? (вспомнить о подготовленном наборе точек (x,y)!)

Поверхности вращения

Простейшая фигура вращения – конус – получается простейшей функцией , т.е. в нашем случае:

Построенный график появляется в новом окне.

Более интересный пример – круговые «волны на воде» от брошенного камня. «Правильные» волны – это, как говорят в физике, гармонические колебания, описываемые функцией . Волны на воде распространяются по кругу от точки падения, т.е. описываются функцией .

В SciLab (с учётом теоремы Пифагора) это:

Запускаем построение графика:

И получаем чёрно-белый график. Его можно вращать (Tools=>2D/3D Rotation в меню окна графика) и раскрашивать (Edit=>Figure Properties) и выбор объекта Fac3d в появляющемся окне редактирования свойств, получив, например, такой график.

Графики в полярных координатах

Как обычно, следует задать независимую переменную, её область определения и шаг, например, от 0 до с шагом 0.1:

Или некие более сложные фигуры:

Поверхности Функция graypolarplot

Takes a 2D plot of the surface given by z on a polar coordinate grid defined by rho and theta. Each grid region if filled with a gray or color level depending on the average value of z on the corners of the grid.

SCILAB: Часть 1

SCILAB: Часть 1.Основы программирования в Scilab Обозначения

Во всем цикле при описании общего вида конструкций используются следующие обозначения:

  • код из консоли Scilab или для редактора скриптов Scipad записывается
  • жирным шрифтом указываются ключевые слова ;
  • в угловых скобках указываются <названия элементов>. которые вводятся или определяются пользователем. При этом в настоящем коде угловые скобки не вводятся.
  • Что такое Scilab

    Scilab – это кроссплатформенная система компьютерной алгебры (СКА), обладающая сходным с Matlab синтаксисом встроенного языка. Разработка системы Scilab ведется сотрудниками французского Национального института информатики и автоматизации (INRIA – Institut National de Recherche en Informatique et Automatique) с 80-х годов прошлого века.

    Изначально это был коммерческий проект под названием Blaise, а затем Basile. С 2003 года продукт получил новое имя Scilab и стал бесплатным. В настоящее время он распространяется по свободной лицензии CeCILL.

    Сама система Scilab, как и Matlab, предназначена прежде всего для численных расчетов и работы с матрицами. Кроме того, она обладает развитыми средствами программирования (включая отладчик скриптов), так что ее в какой-то мере можно рассматривать как систему разработки высокотехнологичных приложений.

    Для системы имеется достаточно большое число пакетов расширений, которые можно найти на официальном сайте в разделе Toolbox center. Однако чем больше будет хороших пакетов, тем более полезной станет система. Поэтому мы предлагаем вам ознакомиться с программированием в Scilab и способами создания для данной СКА пакетов расширений.

    Редактор SciPad

    В данном цикле статей мы не будем останавливаться на выполнении вычислений в Scilab, не будем также рассматривать встроенные функции и их параметры. Эту информацию можно найти в Интернете (см. раздел «Ресурсы»), а также в справочных материалах самой системы. Мы займемся изучением непосредственно программирования в Scilab.

    Для удобства написания скриптов (функций) в Scilab имеется встроенный редактор – Scipad. Он позволяет редактировать тексты функций, выполнять их в режиме отладки, содержит функцию автодополнения кода, а также средства непосредственной передачи текста программы в среду Scilab на выполнение.

    Открыть редактор можно двумя способами:

    • подать в консоли Scilab команду scipad
    • выбрать в главном окне последовательно пункты меню Инструменты > Редактор.
    Рисунок 1. Внешний вид редактора SciPad

    В моей системе установлена Scilab 5.1, в которой присутствует редактор Scipad 7.18. Внешний вид редактора показан на рисунке 1. Как видно, интерфейс достаточно прост. Кратко рассмотрим пункты меню:

    File – здесь находятся стандартные команды для работы с файлами: открыть (Open), закрыть (Close file), сохранить (Save) и т. д. а также команды импорта файлов функций из формата Matlab и формирования справочных материалов.

    Edit – содержит стандартные для пункта меню Правка операции: копировать (Copy), вставить (Paste), вырезать (Cut), выделить все (Select All) и т. д.

    Search – здесь находятся функции поиска по тексту.

    Execute – содержит пункты, позволяющие передать содержимое редактора в среду Scilab на выполнение или выполнить только выделенную часть.

    Debug – содержит команды для организации и выполнения отладки, такие как включение точек останова (breakpoint), добавление переменных в список наблюдения (watch), настройка запуска функции и т. д. К сожалению, в Scilab 5.1 данный режим недоступен вследствие наличия неустраненной ошибки.

    Scheme – команды управления подсветкой синтаксиса.

    Option – здесь находится довольно много пунктов, которые позволяют настроить внешний вид и поведение редактора от типа шрифта до горячих клавиш. Например, можно выбрать комбинацию клавиш, которая будет использоваться для вызова функции автодополнения кода.

    Window – команды управления рабочим окном. Позволяют разбить окно на части по вертикали и горизонтали, а также упорядочить размещение частей окна.

    Мы будем использовать этот редактор во всех уроках серии для создания новых функций и их тестирования.

    Сохранение, загрузка и выполнение скриптов пользователя

    Сохранить созданный скрипт можно при помощи пунктов меню File:

    • File > Save – сохранить скрипт;
    • File > Save as – сохранить скрипт под другим именем;
    • File > Save all – сохранить все открытые скрипты.

    Для открытия файла скрипта необходимо выполнить File > Open, а затем перейти в каталог с необходимым файлом, выбрать его и нажать кнопку Open. Кроме того, в самом меню File имеется список последних открывавшихся файлов.

    Чтобы протестировать функцию, ее необходимо передать в основное окно Scilab (консоль). Для этого необходимо воспользоваться меню Execute, в котором присутствуют три пункта:

    • Load into Scilab – загрузить в Scilab текущий скрипт;
    • Load all into Scilab – загрузить в Scilab все открытые скрипты;
    • Evaluate selection – выполнить в консоли Scilab только выделенные строки.
    Стандартные конструкции встроенного языка

    Встроенный язык Scilab – это язык структурного программирования не имеющий, в отличие от Matlab, средств для работы с объектами. Весь выполняемый код размещается в функциях. В одном файле может быть несколько функций. Однако при разработке пакетов расширений принято хранить каждую функцию в отдельном файле.

    Переменные не описываются, а создаются путем присвоения им начального значения, например так:

    Переменные в Scilab не имеют строгой типизации, т. е. если в переменной хранился текст, то можно на следующем шаге записать в нее число, а затем логическое значение. Scilab следит за соответствием типов только при вычислении значений выражений.

    Вследствие Unix-корней системы, важен регистр букв в имени переменных, например:

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

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

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

    Линейный процесс вычислений

    Создадим стандартную, для начинающих программировать, функцию, которая будет приветствовать всех по имени:

    Вот пример выполнения этой функции:

    Теперь укажем в качестве входного параметра не одно значение, а массив значений:

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

    В пользовательских скриптах можно использовать любые сторонние функции, входящие в состав самой системы Scilab или ее пакетов-расширений. При этом используются следующие знаки действий: + (сложение), – (вычитание), * (умножение), / (деление), ^ (возведение в степень), ' (транспонирование). Изначально эти операции служат для выполнения матричных действий по правилам матричной алгебры. Например:

    Здесь сделана попытка перемножить две строки, но по правилам матричной алгебры это нельзя сделать. Одну из из строк необходимо транспонировать, чтобы получился столбец. Кроме того, согласно правилам матричной алгебры, важен порядок множителей:

    Для выполнения поэлементного умножения двух массивов необходимо использовать признак поэлементного действия, т. е. поставить перед знаком действия точку (точка и знак действия пишутся слитно, без пробела):

    То же самое относится и ко всем остальным действиям кроме операции транспонирования.

    Операторы ветвления

    Создадим теперь функцию для расчета логарифма числа по произвольному основанию:

    Однако, как известно, логарифм числа a по основанию b имеет смысл только при выполнении условий: a,b > 0, a ? 1. Наложим дополнительное условие: входные параметры должны быть скалярными величинами, т. е. не векторами или матрицами. Для того чтобы функция не приводила к выводу сообщения об ошибке или краху системы, входные данные следует проверять на корректность. Сделать это можно при помощи условного оператора, общий вид которого показан ниже:

    Запишем новый вид функции с проверкой входных данных на корректность:

    В приведенном фрагменте кода используется функция or([массив условий]), возвращающая результат применения логической операции ИЛИ ко всем, перечисленным в квадратных скобках, условиям. Сходна с ней и функция and([список условий]), возвращающая результат применения логической функции И ко всем элементам списка условий. Однако можно использовать и стандартные операции C++, т. е. & – И, | – ИЛИ.

    Также нуждается в пояснении функция error(<сообщение>). Эта функция останавливает вычисления и сообщает пользователю о том, что произошла ошибка и указывает имя и строку функции, в которой эта ошибка возникла. Более мягким решением может быть использование предупреждений (warning), которые позволяют вывести сообщение о возникших проблемах, но вычисления при этом не останавливаются. Способ использования прост:

    Иногда возникает необходимость выполнить те или иные действия в зависимости от значения некоторой переменной. Если тип этой переменной является перечислимым, т. е. переменная может принимать конечное количество значений, то можно воспользоваться оператором множественного выбора. Общий вид этого оператора показан ниже:

    Иными словами, в заголовке оператора множественного выбора указывается переменная перечислимого типа, затем указывается один из вариантов (case) значения переменной и выполняется соответствующее данному значению действие. Следует отметить, что служебное слово then должно находиться на одной строке со словом case.

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

    Для организации повторяющихся вычислений в Scilab присутствует два стандартных типа циклов: счетный (for) и условный (while). Первый используется в тех случаях, когда заранее известно количество повторений тела цикла, второй – в обратном случае.

    Общий вид оператора счетного цикла следующий:

    В качестве выражения может выступать все что угодно. Если в качестве выражения указывается вектор (матрица), то переменная-счетчик последовательно принимает все значения этого вектора (матрицы). Если вспомнить, как в Scilab создаются массивы значений, то можно привести эту конструкцию к стандартному виду для цикла for во всех языках программирования:

    Рассмотрим описанную нами функцию edIzm. Если на вход ей будет подано не одно значение, а несколько, то, вне зависимости от количества элементов, будет выведен единственный и абсолютно неверный результат:

    Дело в том, что Scilab пытается перевести в строку весь массив сразу. Поэтому длина строки получается очень большой. Следовательно, необходимо рассмотреть каждый из элементов. В этом может помочь счетный оператор цикла:

    Кроме использования оператора цикла for, в коде функции появилась переменная i для нумерации элементов результата и переменная-результат заключена в квадратные скобки, чтобы показать, что в результате получится массив. Возможен и такой вариант начала функции:

    Однако и на данном этапе функция еще не совершенна, поскольку в строку число переводится в том же виде, что и отображается, а это максимум девять позиций, и результат 'Много' мы никогда не получим. Поэтому лучше будет просто посчитать количество разрядов в числе. В этом нам поможет цикл while. Общий вид этого оператора:

    Пока результат вычисления выражения равен True, цикл выполняется. Чтобы отделить выражение-условие от тела цикла, можно использовать ключевые слова then или do, но они должны находиться на той же строке, что и while. Кроме того, перед end можно вставить блок else, инструкции которого будут выполнены после того, как выражение-условие станет ложью (False).

    Итак, вместо строк

    можно вставить следующее:

    Окончательную версию функции вы можете загрузить по ссылке в разделе «Загрузка».

    Заключение

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