Научное программирование для студентов (Scilab). Лекция 1
При выполнении научных исследований перед студентами, аспирантами или молодыми учеными часто встает вопрос о выборе среды моделирования и автоматизации для выполнения научных расчетов. Действительно, от выбора программного обеспечения зависит очень много.
Выбор визуальных специальных сред моделирования (Hysys, Ansys и др.), часто дорогостоящих и требующих лицензирования может содержать «подводные камни». Завершение лицензии в этом случае означает прекращение работы. Использование же нелицензионного софта может привести к нежелательным вопросам о его происхождении при подаче статьи, описывающей его применение в редакцию какого-либо журнала…
И это еще не все «камни». В визуальных средах моделирования студент использует модели типа «черный ящик», т.е. «кубики конструктора», зачастую, не имея представления о том , как они работают. В результате такой деятельности формируется красивая картинка модели, есть какие-то результаты, но часто нет понимания о работе узлов модели.
Нет возможности и работать самостоятельно, без компьютера с лицензированных ПО (рисунок).
Пример программы имитационного визуального моделирования
Третий «подводный камень» — возможность прекращения поддержки разработчиками сред моделирования. Прекратили разработчики выпускать свой софт и обновлять старые версии, т.е. поддерживать соответствие новым компьютерам и операционным системам — и что же делать специалистам, которые вместо изучения сути предмета заучивали последовательность нажатия на кнопки интерфейса?
Таким образом, можно говорить, что программы визуального имитационного моделирования подойдут скорее производственникам, для экономии ресурсов при замене вещественных моделей виртуальными, нежели молодым ученым.
По этой причине хотелось бы обратить внимание студентов на модели, создаваемые в средах научного программирования. В качестве примеров последних можно привести Matlab, GNU Octave и Scilab. Matlab — платное приложение, разрабатываемое компанией Mathworks, однако две другие совершенно бесплатны. Язык программирования Matlab появился в 1970-х в университете Нью-Мексико. Бесплатная программа Octave практически нацело заимствует синтаксис Matlab, у Scilab есть некоторые отличия, но в целом они довольно похожи.
Достоинством приведенных сред является возможность сразу начать работу программиста, с небольшой подготовкой или без оной («по бразильской системе»), толерантность программ к погрешностям синтаксиса… Это среды-интерпретаторы. Они не требуют предварительной компиляции программ, т.е. формирования исполняемого приложения из исходников. Программа набирается в виде текстового файла (есть собственный редактор) и исполняется построчно. Но, впрочем, обо всем по порядку.
Логотип Scilab
Scilab (Сайлэб) — пакет прикладных математических программ, предоставляющий мощное открытое окружение для инженерных (технических) и научных расчётов. В отличие от многих аналогов бесплатен для коммерческого и некоммерческого использования.
Основные достоинства и недостатки Scilab для научного использования следующие.
Возможности программы: анализ данных, визуализация (построение графиков, диаграмм, поверхностей).
Преимущества перед программами своего класса (Matlab и подобные): бесплатность, небольшой размер дистибутива (100 Мб против 2 Гб у Matlab)
Перед другими средствами анализа данных (например, Statistica): высокая скорость работы, контроль выполнения программы не ограничен графическим интерфейсом. Scilab – язык-интерпретатор команд. Это значит, что программа на нем выполняется медленнее, чем в языках-компиляторах (Delphi, Pascal, Fortran).
Однако, реализованы отладка программы во время выполнения,
открытость кода, возможность работы там, где есть Scilab, возможность транслирования из Matlab в Scilab.
Пример графиков и поверхностей в Scilab
Интересным прикладным применением Scilab является моделирование речения жидкости в трубе с препятствием (рис.).
Распределение скоростей молекул жидкости в потоке с препятствием (с сайта Palabos.org)
Для установки Scilab на компьютер надо:
1)Скачать дистибутив с сайта Scilab.org (Windows, Macintosh);
2)…или набрать в командной строке Linux:
sudo apt-get install scilab
Для запуска программы Scilab в Windows надо щелкнуть левой кнопкой мыши соответствующий ярлык в меню «Пуск» – scilab:
Командное окно имеет боковые панели: «обозреватель файлов», «обозреватель переменных», «журнал команд». Мы для работы и ввода команд будем использовать собственно командное окно. Также используется текстовый
редактор SciNotes, предназначенный для написания программ SciLab:
Командное окно и редактор Scinotes
Ввод команд Scilab осуществляется в командном окне, а написание программ — в редакторе кода. В случае, если после команды следует «;» вывод результата выполнения команды блокируется. Рисунок ниже демонстрирует ввод выражения в окне Scilab и вывод результата в виде служебной временной переменной ans, т.е. использование Scilab в качестве инженерного калькулятора:
Операторы Scilab:
+ сложение | — вычитание | * умножение |
/ деление | ^ степень | \ деление (справа налево) |
= присваивания | < меньше | > больше |
Если мы хотим добавить поясняющий текст (он называется коментарием), то перед ним в Scilab пишут // (а в Matlab знак %). Такой код игнорируется интерпретатором:
Для хранения информации и совершения операций в Scilab используются переменные. Объявить переменные можно прямо в командном окне программы:
Fluid_density = 1.2; // читаемо
fluidDensity = 1.2 // “венгерская” запись
i=1; // переменная буква подойдет для временных данных, счетчиков цикла и т.д.
word = 'User '; // данные типа String
Однако нужно помнить о некоторых правилах объявления переменных:
- переменные начинаются с латинских букв;
- запрещены операторы;
- символы пунктуации и пробелы;
- case sensitive (символы в разном регистре — разные символы).
Цель при именовании переменных –хорошая читаемость кода человеком.
Удаление переменных необходимо для очистки оперативной памяти и ускорения работы программы. Для удаление переменных в командном окне Scilab используется команда
clear var_name, где var_name – переменная для удаления:
Наряду с пользовательскими переменным существуют системные переменные Scilab, которые содержат часто используемые постоянные. Ввод системных переменных Scilab предваряется знаком «%»:
Кроме системных переменных Scilab содержит функции. Функция – последовательность действий над передаваемыми в скобках (переменными). Функции могут быть предустановленные системные и пользовательские (созданные пользователем с целью автоматизации). Поиск нужной функции и порядка ее вызова осуществляется в справке Scilab (клавиша F1).
Наиболее употребимые системные функции Scilab представлены:
Окно справки Scilab:
Применение Scilab для вычисления выражений
Наиболее простое применение Scilab для вычисления выражений реализуется в командной строке. Вычислим выражение:
для x=1,2; y=0,3.
Стоит обратить внимание, что в Scilab разделитель целой и дробной части не «,» , «.» независимо от системных настроек ОС.
Введем в командном окне построчно:
В результате Scilab выведет:
z =
2.5015073
В этом примере использованы предустановленные функции sqrt(), abs(); sin(), exp():
Кроме того, вычислить выражение возможно, объявив для этого пользовательскую функцию. Это можно сделать двумя способами — в командном окне и редакторе сценариев.
1-й способ. Объявление функций с помощью функции deff(), что означает “define function“ — объявить функцию. Синтаксис такой:
deff(’[имя1,…,имяN] = имя_функции(переменная_1,…,переменная_M)’, ’имя1=выражение1;…;имяN=выражениеN’).
Пример объявления:
Можно также, после объявления, передать параметры функции fun1.
2—й способ. Объявление в редакторе Scinotes. Необходимо создать файл сценария программы, это текстовый файл с расширением имени *.sce. SciNotes подсвечивает синтаксис, выделяет предполагаемые ошибки:
Пример кода:
После сохранения и запуска этого файла функцию можно вызвать из командного окна с параметрами ввода:
my_fun(1.2,0.3)
В результате переменной ans будет присвоен ответ, который моментально будет выведен в командном окне.
-->ans = 2.5015073
Продолжение:
Где находятся программы?
Scilab http://goo.gl/bh5Gb8 Свободно распространяемое
Matlab https://goo.gl/unrrXF Запрос ознакомительной бесплатной версии для студентов
GNU Octave https://goo.gl/Wyp7pv Свободный аналог Matlab
Литература для самоподготовки
1.Алексеев Е.Р. Scilab: Решение инженерных и математических задач / Е.Р. Алексеев, О.В.Чеснокова, Е. А.Рудченко // М. : ALT Linux ; БИНОМ. Лаборатория знаний, 2008. 260 с.
2.Edward B. Magrab et al. An Engeneers guide to Matlab // 2011, 2005, 2000 Pearson Education, Inc., publishing as Prentice Hall, One Lake Street, Upper Saddle River, New Jersey 07458
3.Тропин И.С., Михайлова О.И., Михайлов А.В. Численные и технические расчеты в среде Scilab (ПО для решения задач численных и технических вычислений): Учебное пособие. — Москва: 2008. — 65 с.
4.Павлова М.И. — Руководство по работе с пакетом SciLab 2.6 – 2003
5.Бозиев С.Н. MATLAB 2006a в примерах. РГУ нефти и газа им. И.М. Губкина, 2006 – 150 с.
6.Алексеев Е.Р. Введение в Octave для инженеров и математиков: / Е. Р. Алексеев, О. В. Чеснокова // М.: ALT Linux, 2012. 368 с.