ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ
ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ М. Е. ЕВСЕВЬЕВА»
Физико-математический факультет
Кафедра информатики и вычислительной техники
РЕФЕРАТ
«Проведение вычислительных экспериментов в системе Scilab»
Автор работы студент 5 курса группы МДМ-217 очной формы обучения____________________________________________ Д. В. Деганова |
Направление подготовки 44.03.05 Педагогическое образование. Профиль Математика. Информатика |
Руководитель работы канд. физ.-мат. наук, доцент________________________Т. В. Кормилицына |
Саранск 2021
Содержание
Содержание3
Введение4
1 Программирование в Scilab5
2 Основные операторы sci-языка5
2.1 Функции ввода-вывода в Scilab5
2.4 Оператор альтернативного выбора10
2.5 Оператор while11
2.6 Оператор for12
Заключение20
Список использованной литературы22
Введение3
1Программирование в Scilab4
2 Основные операторы sci-языка5
2.1 Функции ввода-вывода в Scilab5
2.4 Оператор альтернативного выбора11
2.5 Оператор while12
2.6 Оператор for13
3 Обработка результатов натурного электротехнического эксперимента в среде системы компьютерной математикиSCILAB………………………………………..14
Заключение21
Список использованной литературы22
Введение
Актуальность темы состоит в том, что линия алгоритмизации программирования реализуется в школьном курсе в недостаточном объеме. Обычно в школах изучают алгоритмические языки высокого уровня, а на примере мощных систем MaximaиScilabможно показать важность программирования непосредственно для пользователей, так как разработчики этих систем сочли необходимым оставить инструменты программирования пользователям для реализации всех базовых алгоритмов. Эти системы предоставляются для свободного использования в сфере образования, что делает их привлекательными для применения в образовательных учреждениях.
Scilab – это кроссплатформенная система компьютерной алгебры (СКА), обладающая сходным с Matlab синтаксисом встроенного языка. Разработка системы Scilab ведется сотрудниками французского Национального института информатики и автоматизации (INRIA – Institut National de Rechercheen Informatiqueet Automatique) с 80-х годов прошлого века.
Изначально это был коммерческий проект под названием Blaise, а затем Basile. С 2003 года продукт получил новое имя Scilab и стал бесплатным. В настоящее время он распространяется по свободной лицензии CeCILL.
Сама система Scilab, как и Matlab, предназначена прежде всего для численных расчетов и работы с матрицами. Кроме того, она обладает развитыми средствами программирования (включая отладчик скриптов), так что ее в какой-то мере можно рассматривать как систему разработки высокотехнологичных приложений.
1 Программирование в Scilab
В Scilab встроен мощный язык программирования с поддержкой объектов.
Работа в Scilab может осуществляться не только в режиме командной строки, но и в так называемом программном режиме.
Для создания программы (программу в Scilab иногда называют сценарием) необходимо:
1. Вызвать команду Editor из меню (см. рис. 1).
2. В окне редактора Scipad набрать текст программы.
3. Сохранить текст программы с помощью команды File – Save в виде файла с расширением sce , например, file.sce .
4. После этого программу можно будет вызвать, набрав в командной строке exec, например, exec("file.sce"). Другие способы вызова — воспользоваться командой меню File – Exec. . . или, находясь в окне Scipad, выполнить команду Execute – LoadintoScilab (Ctrl+L ).
Программный режим достаточно удобен, так как он позволяет сохранить разработанный вычислительный алгоритм в виде файла и повторять его при других исходных данных в других сессиях. Кроме обращений к функциям и операторов присваивания, в программных файлах могут использоваться операторы языка программирования Scilab (язык программирования Scilab будем называть sci-языком).
Рис. 1 Окно Scipad с программой решения кубического уравнения.
2 Основные операторы sci-языка
2.1 Функции ввода-вывода в Scilab
Для организации простейшего ввода в Scilab можно воспользоваться функциями
x=input(’title’);
или
x=x_dialog(’title’, ’stroka’);
Функция input выводит в командной строке Scilab подсказку title и ждет, пока пользователь введет значение, которое в качестве результата возвращается в переменную х. Функция x_dialog выводит на экран диалоговое окно с именем title, после чего пользователь может щелкнуть OK, и тогда stroka вернется в качестве результата в переменную x, либо ввести
новое значение вместо stroka, которое и вернется в качестве результата в переменную x. На рисунке 2 представлено диалоговое окно, которое формируется строкой x=x_dialog(’Input X’,’5’).
Рис. 2 Окно ввода
Функция input преобразовывает введенное значение к числовому типу данных, а функция x_dialog возвращает строковое значение. Поэтому при использовании функции x_dialog для ввода числовых значений возвращаемую ею строку следует преобразовать в число с помощью функции evstr. Можно предложить следующую форму использования функции x_dialog для ввода числовых значений:
x=evstr(x_dialog(’title’,’stroka’));
Для вывода в текстовом режиме можно использовать функцию disp следующей структуры:
disp(b)
Здесь b — имя переменной или заключенный в кавычки текст.
2.2 Оператор присваивания
Оператор присваивания имеет следующую структуру
a=b
здесь a — имя переменной или элемента массива, b — значение или выражение.
В результате выполнения оператора присваивания переменной a присваивается значение выражения b.
2.3 Условный оператор
Одним из основных операторов, реализующих ветвление в большинстве языков программирования, является условный оператор if. Существует обычная и расширенная формы оператора if в Scilab. Обычный if имеет вид
if условие
операторы1
else
операторы2
end
Здесь условие — логическое выражение, операторы1, операторы2 — операторы языка Scilab или встроенные функции. Оператор if работает по следующему алгоритму: если условие истинно, то выполняются операторы1, если ложно — операторы2.
В Scilab для построения логических выражений могут использоваться условные операторы: &, and (логическое и), |, or (логическое или), ˜, not (логическое отрицание) и операторы отношения: < (меньше), > (больше), == (равно), ˜=, <> (не равно), <= (меньше или равно), >= (больше или равно).
Зачастую при решении практических задач недостаточно выбора выполнения или невыполнения одного условия. В этом случае можно, конечно, по ветке else написать новый оператор if, но лучше воспользоваться расширенной формой оператора if.
if условие1
операторы1
else
if условие2
операторы2
else
if условие 3
операторы3
...
Else
if условие n
операторы n
else
операторы
end
В этом случае оператор if работает так: если условие1 истинно, то выполняются операторы1, иначе проверяется условие2, если оно истинно, то выполняются операторы2, иначе проверяется условие3 и т. д. Если ни одно из условий по веткам else и elseif не выполняется, то выполняются операторы по ветке else.
Задача 1.
В качестве примера программирования разветвляющегося процесса рассмотрим решение биквадратного уравнения ax4 + bx2 + c = 0.
Для решения биквадратного уравнения необходимо заменой y = x^2 привести его к квадратному и решить это уравнение. После этого для нахождения корней биквадратного уравнения необходимо будет извлечь корни из найденных значений y. Входными данными этой задачи являются коэффициенты биквадратного уравнения a, b, c. Выходными данными являются корни уравнения x1, x2, x3, x4 или сообщение о том, что действительных корней нет.
Алгоритм состоит из следующих этапов:
1. Ввод коэффициентов уравнения a, b и c;
2. Вычисление дискриминанта уравнения d;
3. Если d < 0, определяются y1 и y2, в противном случае выводится сообщение «Корней нет».
4. Если y1 < 0 и y2 < 0 , то вывод сообщения «Корней нет».
5. Если y1 > 0 и y2 > 0, то вычисляются четыре корня по формулам ±√y1, ±√y2 и выводятся значения корней.
6. Если условия 4) и 5) не выполняются, то необходимо проверить знак y1.
7. Если y1 неотрицательно, то вычисляются два корня по формуле ±√y1, иначе оба корня вычисляются по формуле ±√y2.
Программа решения биквадратного уравнения на sci-языке приведена на рисунках3-4, ее вызов и результаты — на рисунке 5.
Рис. 3 Программа решения биквадратного уравнения
Рис. 4 Программа решения биквадратного уравнения
Рис. 5 Результат выполнения программы
2.4 Оператор альтернативного выбора
Еще одним способом организации разветвлений является оператор альтернативного выбора select следующей структуры:
select параметр
case значение1 then операторы1
case значение2 then операторы2
...
else операторы
end
Оператор select работает следующим образом: если значение параметра равно значениию1, то выполняются операторы1, иначе, если параметр равен значениию2, то выполняются операторы2. В противном случае, если значение параметра совпадает со значением3, то выполняются операторы3 и т. д. Если значение параметра не совпадает ни с одним из значений в группах case, то выполняются операторы, которые идут после служебного слова else.
Конечно, любой алгоритм можно запрограммировать без использования select, используя только if, но использование оператора альтернативного выбора select делает программу более компактной.
Рассмотрим использование оператора select на примере решения следующей задачи.
Задача 2
Вывести на печать название дня недели, соответствующее заданному числу D, при условии, что в месяце 31 день и 1-е число — понедельник.
Для решения задачи воспользуемся условием, что 1-е число — понедельник. Если в результате остаток от деления заданного числа D на семь будет равен единице, то это понедельник, двойке — вторник, тройке — среда и так далее. Вычислить остаток от деления числа x на k можно по формуле x − int(x/k) ∗ x. Следовательно, при построении алгоритма необходимо использовать семь условных операторов.
Решение задачи станет значительно проще, если при написании программы воспользоваться оператором варианта (см. рис. 6). Вызов программы представлен на рис. 7.
Рис. 6 Решение задачи 2
Рис. 7 Вызов функции для решения задачи 2
Рассмотрим операторы цикла в Scilab. В sci-языке есть два вида цикла: оператор цикла с предусловием while и оператор for.
2.5 Оператор while
Оператор цикла while имеет вид
while условие
операторы
end
Здесь условие — логическое выражение; операторы будут выполняться циклически, пока логическое условие истинно.
Оператор цикла while обладает значительной гибкостью, но не слишком удобен для организации «строгих» циклов, которые должны быть выполнены заданное число раз. Оператор цикла for используется именно в этих случаях.
2.6 Оператор for
Оператор цикла for имеет вид
for x=xn:hx:xk
операторы
end
Здесь x — имя скалярной переменной — параметра цикла, xn — начальное значение параметра цикла, xk — конечное значение параметра цикла, hx — шаг цикла. Если шаг цикла равен 1, то hx можно опустить, и в этом случае оператор for будет таким.
for x=xn:xk
операторы
end
Выполнение цикла начинается с присвоения параметру стартового значения (x = xn). Затем следует проверка, не превосходит ли параметр конечное значение (x > xk). Если x > xk, то цикл считается завершенным, и управление передается следующему за телом цикла оператору. Если же x 6 xk, то выполняются операторы в цикле (тело цикла). Далее параметр цикла увеличивает свое значение на hx (x = x + hx). После чего снова производится проверка значения параметра цикла, и алгоритм повторяется.
3.Обработка результатов натурного электротехнического эксперимента в среде системы компьютерной математики SCILAB
Scilab – свободно распространяемый программный пакет компьютерной математики, предназначенный для выполнения инженерных и научных вычислений. Язык программирования пакета Scilab достаточно близок к естественному математическому языку, поэтому пакет достаточно прост в освоении. Эти достоинства пакета делают целесообразным его широкое применение для выполнения вычислительного и обработки результатов натурного электротехнического эксперимента.
Проиллюстрируем возможности пакета Scilab для обработки результатов натурного электротехнического эксперимента. В качестве примера рассмотрим процесс компьютерных Scilab-вычислений и графического представления результатов натурного исследования работы линейного активного двухполюсника на переменную нагрузку. Схема для выполнениянатурного эксперимента приведена на рис. 1.
Рис. 1
По результатам натурного эксперимента получена следующая таблица результатов измерений
Таблица 1
Загрузим Scilab, откроем окно интегрированного в Scilab блокнота
и введем экспериментальные данные следующим образом:
1. Постоянное в нашем эксперименте входное напряжение – ЭДС эквивалентного генератора, присвоим переменной
U1 = 112;
2. Числовое значение тока короткого замыкания присвоим переменной
Ikz = 3.25;
Обратите внимание на следующий нюанс: дробная и целая части
числа разделены точкой;
3. Массив из 11 экспериментальных числовых значений тока нагрузки
присвоим переменной с именем In следующим образом:
In=[0 0.725 0.87 1.1 1.385 1.55 1.65 1.725 2.1 2.6 3.25];
Обратите внимание на синтаксис: элементы строки массива разделены просто пробелами.
4. Аналогично объявим массив числовых значений напряжений
на нагрузке: Un = [112 86 81 73 67 59 55 50 38 21 0];
5. Массив числовых значений мощности, потребляемой нагрузкой:
Pn=[0 65 70 80 82.5 90 90 87.5 80 60 0];
6. Задаем уравнение для вычисления массива значений мощности, генерируемой эквивалентным генератором в различных режимах его
работы:
Peg = U1*In;
Обратите внимание на синтаксис этого выражения, в котором константа U1 умножается на каждый элемент массива In.
7. Аналогично задаем уравнение для вычисления массива значений потерь мощности на внутреннем сопротивлении генератора
deltaPeg=Peg-Pn;
8. Массив значений КПД генератора вычисляем по формуле
KPD=100*Un./U1;
Обратите внимание на синтаксис: чтобы каждый элемент массива Un
делить только на соответствующий элемент массива U1, в числителе
выражения элемент Un присутствует с точкой.
9. Формируем шапку таблицы, в виде символьного массива Т:
T=[' In' ' Un' ' Pn' ' Peg' ' deltaP' ' KPD '];
10. Формируем таблицу Т1, вписывая в нее массивы значений рассчитанных ранее параметров, в порядке, который мы задали символьной таблицей Т:
T1=[matrix(In,11,1) matrix(Un,11,1) matrix(Pn,11,1) matrix(Peg,11,1)
matrix(deltaPeg,11,1) matrix(KPD,11,1)];
Обратите внимание на то, что каждый элемент массива Т1, представленный ранее одномерным массивом, состоящим из одной строки элементов, мы транспонируем в одностолбцовый массив с помощью команды matrix(). Например, одностроковый массив KPD транспонируем в11-строковый одностолбцовый массив с помощью команды
matrix(KPD,11,1)];
11. Объявив последовательно, через запятую имена массивов
T, T1
задаем их вывод на экран в виде таблицы
12. Командой plot( ), в параметрах которой поочередно перечисляем через
запятую абсциссу и ординату каждого графика, объявляем вывод в графическое окно всех необходимых нам графиков:
plot(In,Peg, In,Pn, In,deltaPeg, In,KPD, In,Un);
13. Командой legend( ), в параметрах которой поочередно перечисляем в
апострофах имя каждого графика, объявляем вывод в графическое окно
легенду – название графика и цвет линии, который Scilab задал для вывода этого графика:
legend('Peg', 'Pn', 'deltaPeg', 'KPD', 'Un' , 2 , %f);
14. Командой xgrid( ), задаем вывод координатной сетки в графическое окно
Ниже приводим листинг описанной Scilab-программы (рис. 2), копию таблицы, полученной в командном окне после исполнения программы и копию графического окна (рис. 3) с результатами исполнения программы (рис. 4).
Рис.2. Листинг Scilab-программы
Рис.3. Вид командного окна после исполнения программы
Рис.4. Вид графического окна
По умолчанию, в настройках графического окна установлена толщина линий 1 пиксел. График, приведенный на рис. 4 имеет толщину линий 4
пиксела. Для увеличения толщины линий в меню графического окна
«Правка», см. рис. 4, нужно выбрать пункт меню «Свойства графического
окна». В открывшемся окне редактора настроек свойств графического окна (рис. 5), на его левой панели, нужно развернуть вкладку Axes(1)
Рис.5. Вид окна редактора настроек свойств графического окна
Выделяя поочередно элементы Polyline(1), затем Polyline(2) и т.д.
(рис. 6), задаем требуемые нам значения параметров Line: вид линии и ее
толщину. На рис. 6 показана настройка параметров Line для графика
Polyline(6): вид линии графика задан solid (сплошная), толщина линии – 4
пиксела.
Рис.5. Настройка параметров Line для графика Polyline(6)
Заключение
Система Scilab предназначена для численных расчетов и работы с матрицами. Кроме того, она обладает развитыми средствами программирования (включая отладчик скриптов), так что ее можно рассматривать и как систему разработки высокотехнологичных приложений. В Scilab встроен мощный язык программирования с поддержкой объектов. Работа в Scilab может осуществляться в режиме командной строки и в программном режиме. Особенностью пакета является то, что он предназначен исключительно для реализации численных методов и по умолчанию оперирует с любыми значениями как с числами с плавающей точкой. В этой программе очень хорошо реализована линейная алгебра, матричное исчисление, работа со статистическими функциями, а также графика и симуляция различных процессов.
Начиная с 2000 годов и чуть ранее, учебные учреждения европейских стран, конечно в первую очередь университеты Франции, используют пакет прикладных программ (ППП) Scilab в университетском образовании. Это ПО используется и во многих промышленных организациях Европы практически в каждой ветви научных и технических вычислений.
Подчеркнем основные преимущества этого вычислительного комплекса для использования в учебном процессе (особенно для применения её в лабораторных практикумах по физике):
– наличие внутреннего высокоуровневого языка программирования и взаимозаменяемость с Matlab;
– есть среда моделирования Xcos для имитации данных в инженерии;
– имеется высокоуровневая оболочка для работы с файлами, текстами и данными;
– есть средство интерактивных документов, содержащих тексты, анимационную графику, активные формулы и публикации в web.
Более одного десятилетия сотрудники и преподаватели Европы (и всего мира) используют эту систему повсеместно: от объяснения простых понятий на занятиях до проведения серьезных исследовательских расчетов. Система Scilab это инструмент, позволяющий преподавателям разных предметов проводить интерактивные занятия с целью углубить понимание предмета студентами для их высокопрофессиональной подготовки. В результате проведенного нами исследования стало понятно, что в перспективном плане ПО Scilab обязательно должна быть применена на университетском уровне для проведения лабораторных работ по физике – это обязательно поднимет общий образовательный и научный уровень студентов.
Список использованной литературы
1. Дьяконов, В. П. Справочник по применению системы PC MATLAB. - М.: «Физматлит», 1993. - С. 112.
2. Дьяконов, В. П. Компьютерная математика. Теория и практика. - СПб: «Питер», 1999, 2001. - С. 1296.
3. Дьяконов, В. П. MATLAB 5 - система символьной математики. - М.: «Нолидж», 1999. - С. 640.
4. Дьяконов, В.П., Абраменкова И.В. MATLAB. Обработка сигналов и изображений. Специальный справочник. - СПб.: «Питер», 2002. - С. 608.
5. Алексеев, Е. Р. Scilab. Решение инженерных и математических задач. - Москва ALT Linux; БИНОМ. Лаборатория знаний 2008.
6. Говорухин В., Цибулин В. Компьютер в математическом исследовании. Учебный курс. – СПб.: Питер, 2001. – 624 с.
7. Капитанов Д.В., Капитанова О.В. Введение в MatLab: Лабораторный
практикум. - Нижний Новгород: Нижегородский госуниверситет, 2016.– 65 с.
8. Квасов, Б.И. Численные методы анализа и линейной алгебры. Использование Matlab и Scilab [Электронный ресурс]: учебное пособие / Б.И. Квасов. — Электрон. дан. — Санкт-Петербург: Лань, 2016. — 328 с. — Режим доступа: https://e.lanbook.com/book/71713.
9. Решение инженерных задач в среде Scilab [Электронный ресурс]: учебное пособие / А.Б. Андриевский [и др.]. — Электрон. дан. — Санкт-Петербург: НИУ ИТМО, 2013. — 97 с. — Режим доступа: https://e.lanbook.com/book/71062.
10.SciLabDocumentation // http://www.scilab.org [Режим доступа: свободный, 09.11.2021]