21 Фев

Научное программирование для студентов (Scilab). Лекция 1

Слайд1 При выполнении научных исследований перед студентами, аспирантами или молодыми учеными часто встает вопрос о выборе среды моделирования и автоматизации для выполнения научных расчетов. Действительно, от выбора программного обеспечения зависит очень много.

Выбор визуальных специальных сред моделирования (Hysys, Ansys и др.), часто дорогостоящих и требующих лицензирования может содержать “подводные камни”. Завершение лицензии в этом случае означает прекращение работы. Использование же нелицензионного софта может привести к нежелательным вопросам о его происхождении при подаче статьи, описывающей его применение в редакцию какого-либо журнала…

И это еще не все “камни”. В визуальных средах моделирования студент использует модели типа “черный ящик”, т.е. “кубики конструктора”, зачастую, не имея представления о том , как они работают. В результате такой деятельности формируется красивая картинка модели, есть какие-то результаты, но часто нет понимания о работе узлов модели.

Нет возможности и работать самостоятельно, без компьютера с лицензированных ПО (рисунок).

Слайд28

Пример программы имитационного визуального моделирования

Третий “подводный камень” – возможность прекращения поддержки разработчиками сред моделирования. Прекратили разработчики выпускать свой софт и обновлять старые версии, т.е. поддерживать соответствие новым компьютерам и операционным системам – и что же делать специалистам, которые вместо изучения сути предмета заучивали последовательность нажатия на кнопки  интерфейса?

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

По этой причине хотелось бы обратить внимание студентов на модели, создаваемые в средах научного программирования. В качестве примеров последних можно привести 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.

Слайд4

Пример графиков и поверхностей в Scilab

Интересным прикладным применением Scilab является  моделирование речения жидкости в трубе с препятствием (рис.).

Слайд5

Распределение скоростей молекул жидкости в потоке с препятствием (с сайта Palabos.org)

Для установки Scilab на компьютер надо:

1)Скачать дистибутив с сайта Scilab.org (Windows, Macintosh);

2)…или набрать в командной строке Linux:

Слайд7

sudo apt-get install scilab

Для запуска программы Scilab в Windows надо щелкнуть левой кнопкой мыши соответствующий ярлык в меню «Пуск» – scilab:

Слайд81

Командное окно имеет боковые  панели:  «обозреватель файлов», «обозреватель переменных», «журнал команд». Мы для работы и ввода команд будем  использовать собственно командное окно. Также используется текстовый
редактор SciNotes, предназначенный для написания программ SciLab:

Слайд8

Командное окно и редактор Scinotes

Ввод команд Scilab осуществляется в командном окне, а написание программ – в редакторе кода. В случае, если после команды следует «;» вывод результата выполнения команды блокируется. Рисунок ниже демонстрирует ввод выражения в окне Scilab и вывод результата в виде служебной временной переменной ans, т.е. использование Scilab в качестве инженерного калькулятора:

Слайд9

Операторы Scilab:

+ сложение – вычитание * умножение
/ деление ^ степень \ деление (справа налево)
= присваивания < меньше > больше

Если мы хотим добавить поясняющий текст (он называется коментарием), то перед ним в Scilab пишут // (а в Matlab знак %). Такой код игнорируется интерпретатором:

Слайд10

Для хранения информации и совершения операций в Scilab используются переменные. Объявить переменные можно прямо в командном окне программы:

Fluid_density = 1.2; // читаемо
 
fluidDensity = 1.2 // “венгерская” запись
 
i=1; // переменная буква подойдет для временных  данных, счетчиков цикла и т.д.
 
word = 'User '; // данные типа String

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

  • переменные начинаются с латинских букв;
  • запрещены операторы;
  • символы пунктуации и пробелы;
  • case sensitive (символы в разном регистре – разные символы).

Цель при именовании переменных –хорошая читаемость кода человеком.

Удаление переменных необходимо для очистки оперативной памяти и ускорения работы программы. Для удаление переменных в командном окне Scilab используется команда

clear var_name, где var_name – переменная для удаления:

clear Fluid_density 	//удалил одну переменную 
 
clear fluidDensity  i word  	// удалил три переменных

Наряду с пользовательскими переменным существуют системные переменные Scilab, которые содержат часто используемые постоянные. Ввод системных переменных Scilab предваряется знаком «%»:

Слайд13

Кроме системных переменных Scilab содержит функции. Функция – последовательность действий над передаваемыми в скобках (переменными). Функции могут быть предустановленные системные и пользовательские (созданные пользователем с целью автоматизации). Поиск нужной функции и порядка ее вызова осуществляется в справке Scilab (клавиша F1).
Наиболее употребимые системные функции Scilab представлены:

Слайд14

Окно справки Scilab:

Слайд15

Применение Scilab для вычисления выражений

Наиболее простое применение Scilab для вычисления выражений реализуется в командной строке. Вычислим выражение:

z = \sqrt{\mid\sin{\frac{x}{y}}\mid} e^{x^{y}}

для x=1,2; y=0,3.

Стоит обратить внимание, что в Scilab разделитель целой и дробной части не  «,» , «.» независимо от системных настроек ОС.
Введем в командном окне построчно:

x=1.2;y=0.3;
z=sqrt(abs(sin(x/y)))*exp(x^y)

В результате Scilab выведет:

z =

2.5015073

В этом примере использованы предустановленные функции sqrt(), abs(); sin(), exp():

Слайд16

Кроме того, вычислить выражение возможно, объявив для этого пользовательскую функцию. Это можно сделать двумя способами – в командном окне и редакторе сценариев.

1-й способ. Объявление функций с помощью функции deff(), что означает “define function“ – объявить функцию. Синтаксис такой:

deff(’[имя1,…,имяN] = имя_функции(переменная_1,…,переменная_M)’, ’имя1=выражение1;…;имяN=выражениеN’).

Пример объявления:

deff(’z=fun1(x,y),’z=sqrt(abs(sin(x/y)))*exp(x^y));
x=1.2;y=0.3;z=fun1(x,y)

Можно также, после объявления, передать параметры функции fun1.

2й способ. Объявление в редакторе Scinotes. Необходимо создать файл сценария программы, это текстовый файл с расширением имени *.sce. SciNotes подсвечивает синтаксис, выделяет предполагаемые ошибки:

Создание функции в Scinotes

Пример кода:

function [z] =my_fun(x, y)
    z=sqrt(abs(sin(x/y)))*exp(x^y);
endfunction

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

my_fun(1.2,0.3)

В результате переменной ans будет присвоен ответ, который моментально будет выведен в командном окне.

-->ans = 2.5015073

Продолжение:

Лекция 2 по Matlab (Octave).

Где находятся программы?

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 с.

Добавить комментарий