`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Scilab: серьезная математика, доступная всем

0 
 

Пакет Scilab является свободно распространяемой (вместе с исходными кодами) системой компьютерной математики. До недавнего времени он разрабатывался исследовательскими институтами INRIA и ENPC (оба находятся во Франции), а с мая 2003 г. поддержку продукта взял на себя специально созданный для этой цели Scilab Consortium, с Web-узла которого можно загрузить последнюю версию программы и полный комплект документации (на момент подготовки материала была доступна версия 2.7.2). Scilab выпускается для операционных систем Windows (любая 32-разрядная версия), наиболее популярных Unix/Linux и не нуждается в больших системных ресурсах: инсталляционный модуль имеет размер до 20 MB, а для установки требуется немногим более 40 MB.

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

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


Основные функциональные возможности

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

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

Особенностью пакета является то, что он предназначен почти исключительно для реализации численных методов и по умолчанию оперирует с любыми значениями как с числами с плавающей точкой. Если мы введем какое-нибудь целочисленное выражение, скажем сумму 2 + 3, Scilab возвратит результат в виде числа с плавающей точкой. Для того чтобы система воспринимала подобные выражения как целые числа, необходимо использовать специальные команды. Также отметим, что, хотя приложение поддерживает отдельные символьно-аналитические операции, их круг крайне ограничен. Например, можно найти символьную сумму и произведение матриц, выполнить некоторые аналитические операции над алгебраическими многочленами, но отсутствует поддержка символьных операций анализа, общих алгебраических преобразований и иных аналитических вычислений, реализованных во многих других СКМ.

Как и Matlab, Scilab имеет развитые инструменты для создания и манипулирования массивами (векторами, матрицами и пр.), поддерживаются и другие сложные структуры (списки), объединяющие последовательности данных произвольного типа. Для операций с матрицами в Scilab используется преимущественно естественная математическая нотация, в соответствии с которой сумма матриц А и В записывается как А + В, произведение -- как А * В, транспонирование как Аи т. д. Такой способ делает общение с системой удобным и естественным. Есть операторы для генерирования матриц специального вида -- состоящих из единиц или нулей, заполненных элементами из случайной выборки, распределенной по равномерному или нормальному закону, и пр.

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

Функции системы, относящиеся к некоторым прикладным областям математики и техники, собраны в дополнительные пакеты расширений (так называемые toolboxes). Одни из них применяются достаточно широко (как, скажем, методы численного решения краевых задач для систем дифференциальных уравнений, линейное и квадратичное программирование), другие имеют узкую специфическую направленность. Из последних назовем пакеты для цифровой обработки сигналов, анализа динамических систем, оптимизации со специальными ограничениями.


Программирование в Scilab

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

В данной СКМ реализована исключительно гибкая концепция процедурного программирования -- процедурам (называемым в Scilab функциями) разрешается возвращать целые массивы результатов произвольного типа, а список аргументов даже не обязан быть фиксированным. Программировать можно непосредственно в рабочей среде -- вводя необходимые операторы прямо в командную строку, но более удобным способом является применение внешних файлов (обычно с расширениями *.sci или *.sce), которые загружаются в приложение специальной командой или с помощью меню. Такой файл создается в любом текстовом редакторе, но лучше использовать встроенный -- Scilab Pad, позволяющий немедленно загрузить код в систему. Процедуры также часто объединяются в библиотеки и сохраняются в компилированном бинарном формате (расширение *.bin) -- именно так хранятся стандартные функции этой СКМ.

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

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

Специальная, поставляемая с этой СКМ функция maple2scilab, позволяет преобразовать большинство объектов Maple в коды на языке Scilab для дальнейшего применения. Поддерживается также программный интерфейс между Scilab и Tk-Tcl -- интерпретируемым языком программирования, нередко используемым для научно-технических расчетов.


Графические функции

Без преувеличения можно сказать, что графика Scilab, несмотря на бесплатный статус пакета, выполнена на вполне профессиональном уровне. Основой ее реализации является концепция устройства, в которое выводится поток, создаваемый графическими функциями, -- это может быть экран или внешние файлы в форматах PostScript, Xfig, GIF или PMM. Для управления выводом имеется около десятка команд, инициализирующих устройство, осуществляющих вывод, закрывающих сессию и т. д. Если в качестве графического устройства используется окно Scilab, то многие из этих команд доступны прямо в меню.

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


Последние штрихи и краткие итоги

Scilab серьезная математика, доступная всем
Рис. 3
Из вспомогательных средств Scilab в первую очередь стоит отметить прекрасно оформленную справочную систему (рис. 3), в дополнение к которой имеется полный справочник по функциям в HTML-формате (на английском и французском языке). А разобраться с практическими нюансами поможет коллекция примеров, состоящая из двух частей: первая демонстрирует способы использования основных функций пакета и доступна через меню Demos, вторая иллюстрирует различные программно-интерфейсные возможности (файлы находятся в отдельной папке).

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

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

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

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT