Компьютерное моделирование и вычислительный эксперимент в программах
свободного программного обеспечения
Т.В. Кормилицына (kortv58@mail.ru)
Мордовский государственный педагогический институт им. М.Е. Евсевьева, г. Саранск
При обучении в вузе студентам для приобретения профессиональных навыков работы необходимо использовать большой спектр программ различного назначения. Одной из главных проблем изучения программ является лицензионная чистота, что предполагает приобретение лицензионного обеспечения. Для большинства вузов это означает значительные материальные затраты. Возникает вопрос использования альтернативных бесплатных программ «FreeSoft». Английский термин «freesoft» обозначает свободный или бесплатный софт, т.е. freesoft - это программы, которыми можно пользоваться совершенно бесплатно в некоммерческих целях. Среди программ такого статуса присутствуют программы разного назначения.
В настоящее время в силу различных причин особое внимание начинают уделять свободно распространяемым программа с возможностями выполнения аналитических (символьных) вычислений. К системам такого класса относятся и системы компьютерной (символьной) математики. Ранее бесспорными лидерами в среде математиков и других исследователей являлись системы Mathematica, Maple, MathCad. Для численных расчетов широко использовали систему MatLab.
При работе с исследовательской группой студентов в рамках подготовки ими курсовых работ мы решили обнаружить возможности лицензионного программного обеспечения (Mathematica, Maple, MathCad, MatLab) у свободно распространяемых программ. Первой системой такого класса для нас была система для решения за -дач теории групп Gap. Однако для студентов нематематиков ее неординарные возможности оказались сложными для восприятия, хотя на основании изучения свойств системы была подготовлена одна дипломная работа. Основной трудностью было отсутствие адаптированной учебной литературы. Кроме замечательных методических рекомендаций, составленных А.Б. Коноваловым [2], нам ничего не удалось найти.
В качестве альтернативы для пакета MatLab можно использовать систему Scilab. Как показала практика изучения учебной литературы для системы MatLab, для реализации многих задач в Scilab оказалось достаточным лишь незначительно переработать примеры. Более серьезными стали психологические проблемы - все же переход к другой системе всегда приводит к некоторому дискомфорту, который легко преодолевается после приобретения определенного опыта работы с новой системой.
На деле студенты вполне осваиваются в работе с системой, изучая найденную учебную литературу [1, 3]. Пока количество пользователей системы Scilab значительно уступает классу приверженцев MatLab, но у свободного пакета большое будущее, и есть смысл применять его и при изучении математики и физики в школе: во-первых, пакет доступен для свободного скачивания на сайте www.scilab.org, во-вторых, его графические возможности настолько просты в применении, что по силам даже среднестатистическому школьнику. В качестве иллюстрации утверждения приведем алгоритм построения фигур Лиссажу - графического изображения сложения двух взаимно перпендикулярных колебаний с различными амплитудами, частотами и разностями фаз между ними.
Уравнение колебаний вдоль осей х и y приведем в виде x = a1*cos(w1*t); y = a2*cos(w2*t + fi). Одно из решений, полученной по приведенной ниже программе, приведено на рисунке 1.
Рис. 1. Фигуры Лиссажу в системе SciLab
82
ИТО Марий Эл - 2009
Листинг программы в SciLab: -->a1=200; -->a2=80; -->w1=3; -->w2=6.1; —>fi=1.4; —>t=0:0.009:10; —>x=a 1*cos(w1*t); -->y=a2*cos(w2 *t+fi); -->plot(x,y).
Далее нас заинтересовала система компьютерной математики Maxima, доступная для свободного скачивания на сайтах http://maxima.sourceforge.net/ или http://wxmaxima.sourceforge.net/
Приведем, например, алгоритм моделирования самого известного явления в физике - броуновского движения. Для моделирования физических реальностей применяются различные программные средства. В системе Maxima программа для реализации модели проста, а графический результат наглядный. (%i1) load(«distrib»); (%i2)x:0$ y:0$ xy:[[0,0]]$ m:0$ s:1$;
(%i3) Nmax:5000$ for i:1 thru Nmax do (x:x+random_normal(m,s), y:y +random_normal (m,s), xy:append (xy, [[x,y]]));]]))));
(%i4)plot2d([discrete,xy]).
Здесь первая команда - загрузка пакета расширений для получения доступа с функцией генерирования случайных чисел. Вторая - описание массивов координат случайно выбранных точек. Третья команда - реализация самого процесса генерирования нормально распределенной случайной величины и добавление ее дискретных значений в массив координат.
Как видим, возможности системы значительно упрощают проведение компьютерного эксперимента. При программировании на алгоритмических языках высокого уровня текст программы, выдающей аналогичные результаты, занял бы далеко не пять строк. В нашем случае можно выполнять эксперимент произвольное число раз и заниматься анализом результатов для самого физического явления, и не составлять программы и добиваться их исполнения с нужными результатами.
Траектория частиц, соответствующих генерируемым случайным значениям, изображается в отдельном графическом окне, приведенном на рисунке 2.
Рис. 2. Модель броуновского движения в системе Maxima
И, наконец, чтоб окончательно убедить студентов в наличии у рассматриваемых систем мощных вычислительных возможностей, мы провели вычислительный эксперимент по расчету значения факториала во всех системах. Обычно именно факториалы позволяют обнаружить «слабые» алгоритмические моменты систем. Для вычисления факториала в системе Maxima мы использовали встроенную функцию.
При поиске максимального аргумента, для которого значение функции вычисляется системой, применяли метод дихотомии. Начальный отрезок натурального ряда был выбран в виде [0, 50000]. Одновременно оценивали время вычисления системой выбранного значения. Как было установлено в результате эксперимента, максимальный аргумент, воспринимаемой системой, равен 13512. При этом система затрачивает на вычисления 0,03 секунды (расчеты проводились с процессором типа Pentium-4). Система давала количество цифр в значении факториала - 49889. Отклик системы в случае отказа вычислений занимал от 0,08 секунды (для числа 13513, следующего за максимально вычисляемым аргументом) до 0,19 секунды (для числа 50000) выдавался в виде сообщения об отказе.
Далее эксперимент провели в системе Gap, хотя особых результатов для нее не ожидали, ведь основное назначение системы - решение задач теории групп. Система и материалы по ее изучению (в основном англоязычные) доступны по адресу http://www.gap-system.org. Несмотря на направленность системы на конкретный класс математических задач, функция для вычисления факториала Factorial(N) является встроенной в ядро системы. Как показал эксперимент, максимальный аргумент для этой функции равен 1712, при этом система выводит результат на 62 строках по 78 позиций, причем последние 428 цифр - нули. При попытке вычислить Factorial(1713) система выдает сообщение «an integer too large to be printed», что мы расценили как предел возможностей вычислений с целыми числами.
Систему SciLab непосредственно к системам символьных вычислений не относят, но среди свободных специальных математических систем она занимает такое же место, как система MatLab среди систем лицензионного класса. Вычислительные возможности системы огромны, она имеет большую библиотеку функций, но для проведения нашего эксперимента пришлось работать с функцией пользователя, так как среди функций из библиотек для вычисления факториала специальной функции не оказалось. После задания функции в виде function [x] = fact(k) k = int(k) if k < 1 then k = 1, end x = 1; for j = 1:k, x = x*j; end endfunction в результате эксперимента нами было найдено число 170 - максимальное значение аргумента созданной функции. Результат система выдавала в приближенном виде как 7.257+306. Попытки вычислить fact(171) приводят к сообщению «Inf».
Таким образом, «лидером» в нашем эксперименте стала система Maxima, что еще один раз подтверждает ее статус реальной альтернативы признанным лицензионным системам. Результаты других систем вовсе не говорят об их ущербности, а лишь подтверждают идею о том, что системы должны уметь решать различные задачи, но могут делать это по-разному в силу своей специфики.
Таким образом, системы свободного программного обеспечения представляют исследователям возможно -сти, сравнимые с возможностями лицензированного программного обеспечения. Потенциал применения таких систем как для научно-исследовательской работы, так и при обучении математике и физике, значителен. Особенно привлекательны возможности проведения аналитических вычислений и серьезные средства визуализации.
Литература
1. Алексеев, Е.Р. Scilab: Решение инженерных и математических задач / Е.Р. Алексеев, О.В. Чеснокова, Е.А. Рудченко. - М.: ALT Linux: БИНОМ. Лаборатория знаний, 2008. - 200 с.
2. Коновалов, А.Б. Система компьютерной алгебры GAP. Методические указания / А.Б. Коновалов. - Запорожье: ЗГУ, 1998.- 42 с.
3. Павлова, М.И. Руководство по работе с пакетом Scilab / М.И. Павлова. - Режим доступа: http://www.csa.ru/~zebra/my_scilab/
Информационные технологии в образовании:
сервис-ориентированная архитектура
М.В. Кузин (KuzinMaxim@Rambler.ru)
Калужский государственный педагогический университет им. К.Э.Циолковского, г. Калуга
Сегодняшнее мировое цивилизованное сообщество во многом базируется на информационных технологиях (ИТ), роль которых в современном обществе чрезвычайно важна.
Занимая центральное место в процессе развития общества, ИТ не могли не коснуться системы образования. В учебном процессе используются различные программные обучающие системы, однако их активное применение сдерживается рядом факторов, в числе которых длительность разработки и программный код (написанный для решения задачи с конкретными условиями), что в совокупности ведет к высокой стоимости и отсутствию программного продукта, отвечающего всем требованиям какой-либо области науки.