Главная - Обзор Linux
Свободно распространяемые математические пакеты под gnu. Математические пакеты. Постановка задачи моделирования

Соответственно, я не мог охватить всё - у меня на доклад было где-то 15 минут.

Вступление

Известные пакеты - это гиганты всё-в-одном

Когда мы говорим о математическом ПО, на ум приходят такие гиганты, как Maple, Mathematica, MatLAB… У них есть одно общее свойство: они пытаются охватить всё. Конечно, Mathematica известна прежде всего как система для символьных вычислений, а Matlab - для численных, но одновременно в Mathematica есть мощные алгоритмы для вычислений с плавающей точкой, а в Matlab - пакет для символьных вычислений. Причём эти второстепенные функции в программах по сравнению с программами, для этого предназначенными, выглядят убого и смешно. А небезызвестный MathCAD пытается включить в себя всё, при этом всё реализовано так себе. Причина проста: нельзя объять необъятное.

Свободные программы - делают одно дело хорошо

В противоположность этому, большинство свободных программ следует философии UNIX, гласящей: программа должна делать одно дело, но делать его хорошо. Свободного математического ПО очень много, при этом бóльшая часть их предназначена для какой-нибудь одной задачи. Например, есть программы, которые только и умеют, что строить сетку для метода конечных разностей. Или программа, которая предназначена для вычисления цифр числа Пи. Или программа, которая умеет только строить графики, но зато очень хорошо.

Однако, есть и программы, в той или иной степени являющиеся аналогами известных пакетов. Я расскажу о трёх.

Символьные вычисления: Maxima

История проекта

Начну я с истории этого проекта.

Сначала я напомню, что компьютеры - это, вообще-то, Электронные Вычислительные Машины, они создавались для вычислений над числами. Однако уже в конце 50-х появилась идея, что можно заставить компьютер работать не только с числами, но и с алгебраическими выражениями. В начале 60-х начали появляться первые системы компьютерной алгебры. И, конечно, такая система нужна была одному мирному американскому ведомству (департаменту энергетики, это практически подразделение Пентагона). Был объявлен тендер, и его выиграл проект под названием Macsyma (пишется через CS). В течение многих лет DOE Macsyma развивалась как коммерческий проект, финансируемый правительством. В 1982-м году Уильям Шелтер создал форк Macsyma, называемый Maxima. В начале 90-х распался СССР, кончилась холодная война, и косвенным следствием этого стало практически полное прекращение финансирования DOE Macsyma. К концу 90-х проект практически загнулся. Исходники Macsyma по кусочкам распродали, и они оказались в Maple и Mathematica. В 1998-м Уильям Шелтер добился от DOE разрешения на публикацию исходных текстов Maxima под лицензией GPL. Maxima стала свободной программой. В 2001-м Шелтер скончался, но к этому моменту над Maxima работало уже довольно много людей, и они подхватили проект.

Интерфейс: командная строка или wxMaxima

Maxima имеет традиционный для UNIX интерфейс командной строки, однако также умеет слушать сетевой порт, работая как сервер. Этот факт используют различные оболочки (фронтенды), предоставляющие графический интерфейс. Наиболее распространены TeXmacs и wxMaxima. TeXmacs - это научный текстовый редактор, в котором можно в документ вставить сессию Maxima. wxMaxima выглядит примерно так:

Последняя версия, 0.8.0, стала больше походить на Mathematica и Maple: раньше командная строка для ввода была отдельно, внизу.

Lisp-подобный язык

Язык Maxima берёт основные идеи из Lisp, так как Maxima написана на Lisp-e. При этом он похож одновременно на языки Mathematica и Maple, так как эти программы позаимствовали многие идеи и часть кода из Macsyma. Чтобы избежать долгого и нудного перечисления возможностей, я приведу пример решения типичных задач с первого курса.

Пусть дана функция

maxima>> f(x) := x*tanh(x) + x + 1/x + 2;

Проверим, не является ли она чётной или нечётной:

Как видим, функция не является ни чётной, ни нечётной. Найдём пределы функции на плюс-минус бесконечности:

maxima>> limit(f(x),x,-inf);

maxima>> limit(f(x),x,inf);

Итак, на плюс бесконечности функция уходит в бесконечность. Нет ли у неё наклонной асимптоты?

maxima>> limit(f(x)/x, x,inf);

Наклонная асимптота есть - y=kx+b , причём k=2. Найдём b :

maxima>> limit(f(x)-2*x, x,inf);

Наконец, построим график:

maxima>> plot2d(f(x), , );

Найдём производную нашей функции:

maxima>> diff(f(x),x);

И заодно - неопределённый интеграл:

maxima>> integrate(f(x), x);

Интеграл до конца "не взялся". Можно показать, что этот интеграл в элементарных функциях и не берётся. Однако Maxima умеет брать некоторые из таких интегралов, используя специальные функции:

maxima>> part: risch(x/(exp(2*x)+1), x);

maxima>> ir: -2*part + log(x) + x^2 + 2*x;

Что-то ужасное. Раскроем скобки:

maxima>> expand(ir);

Дифференциальные уравнения

Или вот пример более сложных вычислений. Пусть надо решить дифференциальное уравнение:

maxima>> eq: "diff(y,x) + x*y = 1-x^2;

maxima>> solution: ode2(eq,y,x);

maxima>> expand(solution);

По Maxima есть некоторое количество русскоязычных руководств, которые можно найти в интернете. На мой взгляд, самое удачное введение с обзором возможностей содержится в цикле статей Тихона Тарнавского в журнале LinuxFormat. Сейчас эти статьи выложены в открытый доступ, в том числе на русском сайте Maxima. Документация по продвинутым возможностям maxima существует, к сожалению, только на английском языке. Официальная документация составляет 712 страниц.

Численные вычисления: Scilab

Scilab совместим с MatLAB-ом

Наиболее известный пакет для численных расчётов - это MatLAB. Scilab создавался как конкурент matlab-а, более скромный по ценовой политике. Однако коммерчески проект себя не оправдал, и исходные коды были открыты под лицензией, похожей на GNU GPL. Язык scilab сделан по возможности совместимым с матлабом, так что большинство ваших наработок из matlab заработают в scilab. Только вот, как известно, основная мощь matlab-a сосредоточена в его тулбоксах - отдельно поставляемых модулях. Модули для scilab-а тоже есть, однако их сильно меньше.

Octave - это GPL-аналог Matlab

Позже появился проект GNU Octave, нацеленный на создание аналога matlab-a, распространяемого по GNU GPL без всяких заморочек. Язык тоже практически совместим с матлабом, но здесь нет аналога Simulink - средства моделирования и симулирования динамических систем.

Зато Octave имеет чисто консольный интерфейс (конечно, графические фронтенды тоже есть, самый развитый - QtOctave), что позволяет использовать его в скриптах, для автоматизации расчётов, и упрощает встраивание в сложные программные комплексы. Для Octave написаны десятки пакетов расширений.

По Scilab есть статьи на русском языке, кроме того, не так давно в издательстве AltLinux вышла книга `Scilab: Решение инженерных и математических задач". Книгу можно приобрести в интернет-магазине, кроме того, её электронная версия свободно доступна на сайте AltLinux.

Обработка данных: GNU R

Формально, средства обработки данных относятся к программам для численных расчётов, ибо всё что они делают - это вычисления над числами. Однако, как известно, специализированный инструмент всегда лучше универсального. Под словами обработка данных скрывается довольно много различных видов деятельности: статистический анализ, статистическое моделирование, выборка только нужных данных, преобразование данных, построение различных графиков и гистограмм.

Программы для обработки данных можно разделить по типичному размеру выборки, для которого они предназначены. Для небольших выборок подойдёт, например, Statistica. Для средних по размеру выборок хорошо подходит GNU R (она хранит все данные в оперативной памяти, так что на типичном PC получим ограничение в 1-2-4 гигабайта). Для больших и очень больших объёмов данных (от сотен гигабайт до сотен терабайт) предназначены разработанные в CERN свободные системы PAW и ROOT.

GNU R - это интерпретируемый язык программироваммирования, предназначенный для статистического анализа и моделирования. R - это свободная реализация давно существующего языка S. Язык этот весьма эклектичен, он местами похож на C, местами - на Python, местами - на Haskell. Для GNU R существует почти полторы тысячи пакетов расширений (написанных на самом R, на C или Fortran), собранных в репозитории CRAN (Comprehensive R Archive Network).

Типы данных - числа, строки, факторы, векторы, списки и таблицы данных

Основные типы данных в языке - это числа, строки, факторы, векторы, списки и таблицы данных (data frames). Фактор - это данные, которые могут принимать одно из нескольких значений (пол; сорт дерева; логический тип и др). Векторы являются аналогами массивов - это набор из нескольких значений одного типа, размер вектора меняться не может. Тут же надо заметить, что в R нету скаляров ; например, число - это, с точки зрения R, вектор из одного элемента. Списки - это обобщение векторов, они могут содержать объекты разных типов, и длина их может меняться. Кроме того, отдельным элементам списка можно присвоить имена, и обращаться к элементам не по номерам, а по именам. Пример:

(присваивание в R обозначается обычно знаком , хотя можно использовать и более привычное = ; кроме того, есть форма value → variable ). Для обращения к элементам списка по номеру используются двойные квадратные скобки:

Назначим имена элементам списка:

(функция c создаёт векторы). Теперь к элементам списка можно обращаться по именам:

Таблица данных (фрейм данных) в R - это список, состоящий из векторов. Создаются таблицы данных чаще всего загрузкой из внешнего файла.

Подбор программного обеспечения для успешного решения студенческих и научно-исследовательских задач в области математических и естественнонаучных дисциплин является очень важным вопросом. В настоящее время существуют мощные коммерческие математические программы с закрытыми исходными кодами: Matlab, Maple, Mathcad, Mathematica . Однако, существует большое количество свободно распространяемых программ, как с открытым, так и закрытом кодом. К свободно распространяем, относятся программы, которые выходят под лицензией GNU GPL и её различными модификациями. Данное открытое лицензионное соглашение разрешает запуск программы, её модификацию, свободное распространение копий исходного и исполняемого кода.

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

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

Широчайшие функции программы не перегружают ее интерфейс и не замедляют вычислений. Mathematica неизменно демонстрирует высокую скорость символьных преобразований и численных расчетов. СистемаMathematica сегодня рассматривается как мировой лидер среди компьютерных систем символьной математики для ПК, обеспечивающих не только возможности выполнения сложных численных расчетов с выводом их результатов в самом изысканном графическом виде, но и проведение особо трудоемких аналитических преобразований и вычислений. Версии системы под Windows имеют современный пользовательский интерфейс и позволяют готовить документы в форме Notebooks (записных книжек). Они объединяют исходные данные, описания алгоритмов решения задач, программ и результатов решения в самой разнообразной форме (математические формулы, числа, векторы, матрицы, таблицы и графики).

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

Кстати, центральное место в системах класса Mathematica занимает машинно-независимое ядро математических операций, которое позволяет переносить систему на различные компьютерные платформы.

Таким образом, Mathematica– это, с одной стороны, типичная система программирования на базе одного из самых мощных проблемноориентированных языков функционального программирования высокого уровня, предназначенная для решения различных задач (в том числе и математических), а с другой - интерактивная система для решения большинства математических задач в диалоговом режиме без традиционного программирования. Кроме того,Mathematica, как система программирования, имеет все возможности для разработки и создания практически любых управляющих структур, организации ввода-вывода, работы с системными функциями и обслуживания любых периферийных устройств. Здесь с помощью пакетов расширения (Add-ons ) появляется возможность подстраиваться под запросы любого пользователя, (хотя рядовому пользователю эти средства программирования могут и не понадобитьсяон вполне обойдется встроенными математическими функциями системы, поражающими своим обилием и многообразием даже опытных математиков).

К недостаткам системы Mathematica следует отнести разве что весьма необычный язык программирования, обращение к которому, впрочем, облегчает подробная система помощи.

В качестве более простых, но идеологически близких альтернатив программы Mathematica можно назвать такие пакеты, какMaxima .

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

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

СКМ Maple это своего рода патриарх в семействе систем символьной математики и до сих пор является одним из лидеров среди универсальных систем символьных вычислений. Она предоставляет пользователю удобную интеллектуальную среду для математических исследований любого уровня и пользуется особой популярностью в научной среде.

Пакет Maple это совместная разработка Университета Ватерлоо (шт. Онтарио, Канада) и Высшей технической школы (ETHZ, Цюрих, Швейцария)..

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

Пакет Maple состоит из ядра (процедур, написанных на языкеС и хорошо оптимизированных), библиотеки, написанной наMaple -языке, и развитого внешнего интерфейса. Ядро выполняет большинство базовых операций, а библиотека содержит множество командпроцедур, выполняемых в режиме интерпретации.

Интерфейс Maple основан на концепции рабочего поля (worksheet) или документа, содержащего строки ввода-вывода и текст, а также графику. Работа с пакетом происходит в режиме интерпретатора. В строке ввода пользователь задает команду, нажимает клавишу Enter и получает результатстроку (или строки) вывода либо сообщение об ошибочно введенной команде. Тут же выдается приглашение вводить новую команду и т.д.

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

Рабочие листы можно организовать иерархически, в виде разделов и подразделов. Разделы и подразделы можно как расширять, так и сворачивать. Система Maple, подобно другим текстовым редакторам, поддерживает опцию закладок.

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

Система Maple предлагает различные способы представления, сокращения и преобразования выражений, например такие операции, как упрощение и разложение на множители алгебраических выражений и приведение их к различному виду. Таким образом, Maple можно использовать для решения уравнений и систем..Программу можно использовать для решения задач дифференциального и интегрального исчисления, вычисления пределов, разложений в ряды, суммирования рядов, умножения, интегральных преобразований (таких как преобразование Лапласа, Z-преобразование, преобразование Меллина или Фурье), а также для исследования непрерывных или кусочно-непрерывных функций.

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

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

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

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

Maple является первым универсальным математическим пакетом, который предлагает полную поддержку стандарта MathML 2.0, управляющего как внешним видом, так и смыслом математики в Интернете. Эта эксклюзивная функция делает текущую версию MathML основным средством Интернет-математики, а также устанавливает новый уровень совместимости многопользовательской среды. TCP/IP-протокол обеспечивает динамический доступ к информации из других Интернет-ресурсов, например к данным для финансового анализа в реальном времени или к данным о погоде.

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

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

К недостаткам системы Maple можно отнести лишь ее некоторую «задумчивость», причем не всегда обоснованную, а также очень высокую стоимость этой программы

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

Существует большое количество альтернативных пакетов. В качестве более простых, но идеологически близких альтернатив программеMaple можно отметить такие пакеты, какDerive ,ScientificWorkPlace. Благодаря встроенной системе компьютерной алгебры вы можете производить вычисления прямо в документе. Конечно, у этой программы нет таких возможностей, как у Maple, однако она маленькая и простая в использовании.

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

И хотя новейшая версия Derive 6 под Windows уже имеет современный удобный интерфейс, он во многом уступает изысканному интерфейсу маститых конкурентов. А в плане возможности графической визуализации результатов вычислений Derive и вообще далеко отстает от конкурентов.

СКМ MatLab относится к среднему уровню продуктов, предназначенных для символьной математики, но рассчитана на широкое применение в сфере CAE (то есть сильна и в других областях).MatLab - это одна из старейших, тщательно проработанных и проверенных временем систем автоматизации математических расчетов, построенная на расширенном представлении и применении матричных операций. Это нашло отражение и в самом названии системы -MATrix LABoratory , то есть матричная лаборатория. Однако синтаксис языка программирования системы продуман настолько тщательно, что данная ориентация почти не ощущается теми пользователями, которых не интересуют непосредственно матричные вычисления.

Несмотря на то, что изначально MatLab предназначалась исключительно для вычислений, в процессе эволюции (а сейчас выпущена уже версия 12), в дополнение к прекрасным вычислительным средствам, у фирмы Waterloo Maple для MatLab было приобретено ядро символьных преобразований, а также появились библиотеки, которые обеспечивают в MatLab уникальные для математических пакетов функции.

В системе MatLab также существуют широкие возможности для программирования. Ее библиотека C Math (компилятор MatLab) являетсяобъектной и содержит свыше 300 процедур обработки данных на языке C. Внутри пакета можно использовать как процедуры самой MatLab, так и стандартные процедуры языка C, что делает этот инструмент мощнейшим подспорьем при разработке приложений (используя компилятор C Math, можно встраивать любые процедуры MatLab в готовые приложения).

Библиотека C Math позволяет пользоваться следующими категориями функций:

    операции с матрицами;

    сравнение матриц;

    решение линейных уравнений;

    разложение операторов и поиск собственных значений;

    нахождение обратной матрицы;

    поиск определителя;

    вычисление матричного экспоненциала;

    элементарная математика;

    функции beta, gamma, erf и эллиптические функции;

    основы статистики и анализа данных;

    поиск корней полиномов;

    фильтрация, свертка;

    быстрое преобразование Фурье (FFT);

    интерполяция;

    операции со строками;

    операции ввода-вывода файлов и т.д.

Все библиотеки MatLab отличаются высокой скоростью численных вычислений. Однако матрицы широко применяются не только в таких математических расчетах, как решение задач линейной алгебры и математического моделирования, обсчета статических и динамических систем и объектов. Они являются основой автоматического составления и решения уравнений состояния динамических объектов и систем. Именно универсальность аппарата матричного исчисления значительно повышает интерес к системеMatLab , вобравшей в себя лучшие достижения в области быстрого решения матричных задач. ПоэтомуMatLab давно уже вышла за рамки специализированной матричной системы, превратившись в одну из наиболее мощных универсальных интегрированных систем компьютерной математики.

Для визуализации моделирования система MatLab имеет библиотекуImage Processing Toolbox , которая обеспечивает широкий спектр функций, поддерживающих визуализацию проводимых вычислений непосредственно из среды MatLab, увеличение и анализ, а также возможность построения алгоритмов обработки изображений. Усовершенствованные методы графической библиотеки в соединении с языком программированияMatLab обеспечивают открытую расширяемую систему, которая может быть использована для создания специальных приложений, пригодных для обработки графики.

Основные средства библиотеки Image Processing Tollbox:

    построение фильтров, фильтрация и восстановление изображений;

    увеличение изображений;

    анализ и статистическая обработка изображений;

    выделение областей интересов, геометрические и морфологические операции;

    манипуляции с цветом;

    двумерные преобразования;

    блок обработки;

    средство визуализации;

    запись/чтение графических файлов.

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

Программу MatLab можно использовать для восстановления испорченных изображений, шаблонного распознавания объектов на изображениях или же для разработки каких-либо собственных оригинальных алгоритмов обработки изображений. Библиотека Image Processing Tollbox упрощает разработку высокоточных алгоритмов, поскольку каждая из функций, включенных в эту библиотеку, оптимизирована для максимального быстродействия, эффективности и достоверности вычислений. Кроме того, библиотека обеспечивает разработчика многочисленным инструментарием для создания собственных решений и для реализаций сложных приложений обработки графики. А при анализе изображений использование мгновенного доступа к мощным средствам визуализации помогает моментально увидеть эффекты увеличения, восстановления и фильтрации.

Среди других библиотек системы MatLab можно также отметить System Identification Toolbox набор инструментов для создания математических моделей динамических систем, основанных на наблюдаемых входных/выходных данных. Особенностью этого инструментария является наличие гибкого пользовательского интерфейса, позволяющего организовать данные и модели. Библиотека System Identification Toolbox поддерживает как параметрические, так и непараметрические методы. Интерфейс системы облегчает предварительную обработку данных, работу с итеративным процессом создания моделей для получения оценок и выделения наиболее значимых данных. Быстрое выполнение с минимальными усилиями таких операций, как открытие/сохранение данных, выделение области возможных значений данных, удаление погрешностей, предотвращение ухода данных от характерного для них уровня.

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

А что касается математических вычислений, то MatLab предоставляет доступ к огромному количеству подпрограмм, содержащихся в библиотеке NAG Foundation Library компании Numerical Algorithms Group Ltd (инструментарий имеет сотни функций из различных областей математики, и многие из этих программ были разработаны широко известными в мире специалистами). Это уникальная коллекция реализаций современных численных методов компьютерной математики, созданных за последние три десятка лет. Таким образом, MatLab вобрала и опыт, и правила, и методы математических вычислений, накопленные за тысячи лет развития математики. Одну только прилагаемую к системе обширную документацию вполне можно рассматривать как фундаментальный многотомный электронный справочник по математическому обеспечению.

Из недостатков системы MatLab можно отметить невысокую интегрированность среды (очень много окон, с которыми лучше работать на двух мониторах), не очень внятную справочную систему (а между тем объем фирменной документации достигает почти 5 тыс. страниц, что делает ее трудно обозримой) и специфический редактор кода MatLab-программ. Сегодня система MatLab широко используется в технике, науке и образовании, но все-таки она больше подходит для анализа данных и организации вычислений, нежели для чисто математических выкладок.

Для проведения аналитических преобразований в MatLab используется ядро символьных преобразований Maple, а из Maple для численных расчетов можно обращаться к MatLab. Ведь недаром символьная математика Maple вошла составной частью в целый ряд современных пакетов, а численный анализ от MatLab и наборы инструментов (Toolboxes) уникальны. Математические пакеты Maple и MatLab - это интеллектуальные лидеры в своих классах, это образцы, определяющие развитие компьютерной математики.

В качестве более простых, но идеологически близких альтернатив программе MatLab можно отметить такие пакеты, как Octave ,KOctave иGenius .

Octave - это программа числовых вычислений, хорошо совместимая с MatLab. Интерфейс системы Octave, конечно, беднее, и у нее нет таких уникальных библиотек, как у MatLab, зато это очень простая в освоении программа, нетребовательная к системным ресурсам. Распространяется Octave на условиях открытой лицензии с исходным кодом (OpenSource) и может стать хорошим подспорьем для учебных заведений.

Программа KOctave по сути представляет собой более продвинутый графический интерфейс для системы Octave. В результате использования KOctave система Octave становится полностью похожей на MatLab.

Простенькая математическая программа Genius , естественно, не может поспорить по мощности с именитыми конкурентами, но идеология математических преобразований у нее сходна с MatLab и Maple. Распространяется Genius тоже на условиях открытой лицензии с исходным кодом (OpenSource). Она имеет собственный язык GEL, развитый инструментарий Genius Math Tool и хорошую систему подготовки документов для публикации (с использованием таких языков оформления, как LaTeX, Troff (eqn) и MathML). Очень хороший графический интерфейс программы Genius сделает работу с ней простой и удобной.

СКМ MathCad в отличие от мощного и ориентированного на высокоэффективные вычисления при анализе данных пакетаMatLab , программаMathCad (текущая версия 14-15) - это, скорее, простой, но продвинутый редактор математических текстов с широкими возможностями символьных вычислений и прекрасным интерфейсом.MathCad не имеет языка программирования как такового, а движок символьных вычислений заимствован из пакетаMaple . Зато интерфейс программыMathCad очень простой, а возможности визуализации богатые. Все вычисления здесь осуществляются на уровне визуальной записи выражений в общепринятой математической форме. Пакет имеет хорошие подсказки, подробную документацию, функцию обучения использованию, целый ряд дополнительных модулей и приличную техническую поддержку. Пока математические возможностиMathCad в области компьютерной алгебры намного уступают системамMaple ,Mathematica , MatLab и даже малютке Derive. Однако по программеMathCad выпущено много книг и обучающих курсов, в том числе у нас в России. Сегодня эта система стала буквально международным стандартом для студентов.

Для небольшого объема вычислений пакет MathCad просто идеален. Здесь все можно проделать очень быстро и эффективно, а затем оформить работу в привычном виде (MathCad предоставляет широкие возможности для оформления результатов, вплоть до публикации в Интернете). Пакет имеет удобные возможности импорта/экспорта данных. Например, можно работать с электронными таблицами Microsoft Excel прямо внутриMathCad -документа.

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

MathCad это СКМ, очень похожая на пакет Mathematica.Программа MathCad ориентирована на поддержку концепций рабочего листа. Уравнения и выражения выражаются на рабочем листе так, как они выглядели бы на какой-нибуть презентации, а не так, как выглядят на языке программирования. Некоторые задачи, которые выполняет программа,решениедифференциальных уравнений, построение графиков на плоскости и в пространстве, символьноеисчисление, операции с векторами и матрицами, символьное решение систем уравнений, подбор графиков, набор статистических функций и вероятностных распределений.

ПрограммаMaxima является потомком DOE Macsyma, которая начала свое существование в конце 1960 годав MIT (англ. Massachusetts Institute of Technology _Массачусетсский технологический институт).Maxima первая создала систему компьютерной алгебры, она проложила путь для таких программ,какMaple иMathematica. Главный вариантMaxim a разрабатывался Вильямом Шелтером с 1982 по2001 год. В 1998 году он получил разрешение на реализацию открытого кода на GPL. Благодаря егоумению Maxima сумела выжить и сохранить свой оригинальный код в рабочем состоянии. ВскореВильям передал Maxima группе пользователей и разработчиков, которые обеспечили ее поддержкуи развитие. На сегодняшний день пакет достаточно активно развивается и во многих отношенияхне уступает таким развитым системам компьютерной математики, как Maple или Matematica.

Свободно распространяемые программы для решения математических задач можно разделить на 4 группы: программы численных расчетов, программы аналитических вычислений, программы построения графиков, программы верстки математических текстов.

К программам численного моделирования и инженерных расчетов относится программа Scilab , развиваемая под лицензией CeCILL. Приложение является кроссплатформенным и может быть установлено в Linux, Windows, Mac OS. Все данные имеют матричное представление, при этом собственный язык программирования и синтаксисScilab полностью аналогичен коммерческому пакетуMatlab , что позволяет обучать студентов без затрат на покупку дорогостоящих программ. В дальнейшем, специалист может быстро и в полной мере освоить коммерческий продуктMatla b, если этого потребуют обстоятельства.

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

Математический пакет GNU Octave выпускается под лицензией GNU GPL. Приложение может работать с различными операционными системами. Переменные и данные представляются в виде матриц. Синтаксис языка программирования и формат команд аналогичен Scilab, Matlab . Помимо встроенных математических функций существует мощный инструментарий для создания пользовательских функций. УGNU Octav e существуют различные графические интерфейсы. Как иScilab данный пакет может быть заменой коммерческого пакетаMatlab в обучении.

Свободно распространяемым пакетом аналитических вычислений является пакет maxima . Программа ориентирована на проведение вычислений и преобразования символьных и численных выражений, начиная от упрощения алгебраических выражений до дифференцирования, интегрирования, разложения в ряд, преобразования Лапласа, решения дифференциальных уравнений, задач тензорной и линейной алгебры. Разработка данного пакета, как одного из направлений системы Macsyma, велась Уильмом Шелтером с 1982 года. После его смерти в 2001 году проект продолжил свое развитие. В настоящее время выполняется перевод документации maxima на русский язык. Программа работает в режиме командной строки, однако, существуют несколько графических оболочек: TeXmacs,wxMaxima, imaxima . Данный пакет по свой функциональности может использовать с замен коммерческих пакетовMaple, Mathematica .

Использование офисных пакет для построения научных и математических графиков наталкивается на значительную ограниченность возможностей точной настройки и визуализации функций, экспериментальных данных. Одним из пакет построения высококачественных графиков является пакет gnuplot, который интегрирован в большинство математических пакет как подсистема визуализации. Gnuplot - мобильный, графический пакет, запускаемый из командной строки, в различных операционных системах Linux, OS/2, MS Windows, и многих других. Исходные коды программы защищены авторскими правами, однако, распространяются бесплатно. Gnuplot разрабатывается специально для студенческих и научных задач с 1986 года. Пакет поддерживает разнообразные 2d, 3d графики в виде линий, точек, линий уровней, векторных полей, поверхностей и пользовательского текста на графиках. К отличительной особенности gnuplot можно отнести разнообразные возможности вывода готовых изображений: интерактивный экранный терминал, прямой вывод на графический плоттер или принтера, а так же в графические файлы eps, fig, jpeg, LaTeX, metafont, pbm, pdf, png, postscript, svg. Поэтому, gnuplot должен являться частью набора программ для построения графиков в студенческих и исследовательских работах.

Наиболее широкораспространённой системой верстки математических и технических текстов является издательская система LaTeX , созданная как пакет макрорасширений издательской системыTeX , автором которой является Дональд Кнут. В отличии от систем верстки текстов, где пользователь сразу видит расположение объектов и текста на макете страницы, в LaTeX автор не задумывается об оформлении текста. За дизайн страницы, размер шрифтов, отступов и т.п. отвечает стилевой файл, который и оформляет текст документа. Де факто, данная система верстки является стандартным форматом написания научных статей во всем мире. Помимо, предустановленных макрорасширений пользователь имеет возможность создавать свои макрокоманды для автоматизации набора текста. Унификация стандарта верстки сложных математических и научных статей позволяет автоматически создавать как статьи, так и презентационные слайды на основе одного и того текста, простой заменой стиля оформления документа. В обучении студентов математических специальностейLaTeX необходимо использовать для курсового и дипломного проектирования.

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

Когда-то системы символьной математики были ориентированы исключительно на узкий круг профессионалов и работали на больших компьютерах (мэйнфреймах). Но с появлением ПК эти системы были переработаны под них и доведены до уровня массовых серийных программных систем. В настоящее время на рынке сосуществуют системы символьной математики самого разного калибра: от системы, рассчитанной на широкий круг потребителей (системы MathCad), до компьютерных монстров (Mathematica, MatLab и Maple.

Практически все эти системы работают не только на персональных компьютерах, оснащенных популярными операционными системами Windows, но и под управлением операционных системы Linux, UNIX, Mac OS, а также на КПК. Они давно знакомы пользователям и широко распространены на всех платформах - от наладонника до суперкомпьютера.

С точки зрения распространения и использования программного обеспечения, программное обеспечение делят на закрытое/несвободное, открытое и свободное:

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

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

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

Впервые явно принципы свободного ПО были сформулированы в 70-х годах прошлого века Ричардом Мэттью Столлманом. В соответствие этим причинам, авторы свободных программ передают любому пользователю следующие права и свободы:

    «Нулевая свобода ». Программу можно свободно использовать с любой целью

    «Первая свобода ». Можно изучать, как программа работает, и адаптировать её для своих целей. Условием этого является доступность исходного кода программы.

    «Вторая свобода ». Можно свободно распространять копии программы.

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

Перечисленные принципы легли в основу первой лицензии свободного программного обеспечения GNU General Public License (GPL), созданной Фондом Свободного Программного Обеспечения (англ. Free Software Foundation, сокращённо FSF), который и был основан Столлманом. Одной из задач этого фонда является контроль за соблюдением условий лицензий, а так же отстаивание прав разработчиков и пользователей программного обеспечения разработанного под GPL.

Со временем, возникали и другие версии лицензии свободного ПО, но до сих пор сохраняется понятие «GPL совместимая лицензия», указывающее на близость этой лицензии принципам впервые юридически закрепленным в GPL.

На сегодняшний день, последней версией GPL является версия 3. После ее появления некоторые разработчики предпочли сохранить условия использования своих программ в рамках версии GPL 2.1, другие приняли новую, более строгую лицензию.

ПО с открытыми исходными кодами (Free Software/Open Source) - это ПО, которое дает вам права на свободу использования, копирования, распространения, обучения, улучшения и изменения программного обеспечения.

Эти "свободолюбивые правила", в течении последних лет дали большой толчок для создания сообществ разработчиков. GNU/Linux является одним из самых успешных примеров разработки, среди проектов сообществ Free Software/Open Source.

Свободное ПО ( FreeSostware ) программы для ПК, которые распространяются на условиях, предоставляющих пользователям четыре ключевые свободы (права):

    Свободное использование программного обеспечения в любых целях.

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

    Свободное распространение программного обеспечения (за деньги или безвозмездно).

    Свободное усовершенствование и публикация ПО, включая распространение усовершенствованных версий, при условии открытого доступа к исходному коду программы.

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

Важнейшим следствием прав (2) и (4) является распространение свободной программы только при открытом доступе к её исходному коду.

Копилефт ( copyieft ) - система защиты прав пользователей свободных программ, разработанная в дополнение к действующему авторско-правовому законодательству( copyright ) . Основная идея копилефта заключается в обеспечении свободы программы, то есть однажды опубликованная на условиях копилефтной лицензии программа уже не может стать несвободной. При этом не все свободные программы являются копилефтными, многие распространенные свободные лицензии допускают превращение программы в проприетарную. Главным образом, это относится к лицензиям семействаBSD.

Почему существует так много свободных лицензий? Чем они друг от друга отличаются?

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

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

Несмотря на то, что свободных лицензий насчитывается несколько десятков, их гораздо меньше, чем лицензий на несвободные программы. Каждый поставщик проприетарного ПО, как правило, имеет по одной или несколько различных лицензий для разных программ, в связи с чем, попытки систематизации и сопоставления условий лицензий на проприетарное ПО крайне затруднительны. В то же время в среде свободного ПО наиболее распространены пять-шесть лицензий, под которыми выходит большинство программ. К ним относятся:

Лицензия GNUGeneralPublicLicense - самая популярная на сегодняшний день свободная лицензия, текущая версия которой (3.0) опубликована Фондом свободного программного обеспечения 29 июня 2007 г. Текст лицензии отличает достаточно свободная форма изложения и в то же время юридическая точность.

GPL - одна из официальных лицензий проекта GNU, стоящего у истоков движения свободного ПО. На условиях GPL и ее специальной версии LGPL, допускающей в отдельных случаях сочетание с программами, распространяемыми на условиях иных лицензий, опубликованы такие принципиально важные разработки, как ядро операционной системыLinux , среда разработкиEmacs , набор компиляторовGCC и другие программы, которые входят в арсенал разработчиков ПО. Кроме того, GPL - первая лицензия, в которой оговорено условие копилефта (механизм сохранения свободы программы). Авторитет Фонда свободного программного обеспечения, последовательность позиций и продуманная юридическая техника принесли GPL заслуженную популярность среди разработчиков.

Эта статья является второй в цикле, посвященном различным реальным приложениям, которые могут использоваться для тестирования процессоров, компьютеров, ноутбуков и рабочих станций и которые в дальнейшем будут положены в основу нового тестового пакета iXBT Application Benchmark 2017. Напомним, что в первой статье данного цикла мы рассматривали два специализированных приложения LAMMPS и NAMD, которые используются для решения задач молекулярной динамики. В этой статье мы уделим внимание специализированным математическим пакетам FFTW и GNU Octave. Данные приложения, как и LAMMPS и NAMD, входят в состав известного специализированного тестового пакета SPECwpc 2.0. Более того, сами расчетные задачи (workload) и команды запуска программ с соответствующими параметрами мы позаимствовали именно из пакета SPECwpc 2.0.

FFTW 3.3.5

Среда GNU Octave поддерживает работу со скрипт-файлами (), а для запуска скрипта используется команда:

octave-cli-4.0.3.exe

(Файл octave-cli-4.0.3.exe расположен в папке C:\Octave\Octave-4.0.3\bin\ при установке пакета по умолчанию.)

Для тестирования мы используем скриптовый файл, в котором реализуются операции с циклами, вычисление интегралов, быстрое преобразование Фурье и операции с матрицами. Мы не писали этот скрипт «с нуля», а взяли его из пакета SPECwpc 2.0, в который входит тест на основе GNU Octave. Этот скрипт называется obench.m. Результатом теста является время выполнения скрипта.

Тестовый стенд и методика тестирования

Для тестирования с использованием приложений FFTW и GNU Octave мы собрали стенд следующей конфигурации:

  • Процессор: Intel Core i7-6950X (Broadwell-E);
  • Системная плата: Asus Rampage V Edition 10 (Intel X99);
  • Память: 4×4 ГБ DDR4-2400 (Kingston HyperX Predator HX424C12PBK4/16);
  • Видеокарта: Nvidia Quadro 600;
  • Накопитель: SSD Seagate ST480FN0021 (480 ГБ).

В ходе тестирования замерялось время выполнения тестовых задач.

Рассматривалась зависимость результатов тестирования от количества используемых ядер процессора, от частоты ядер процессора и от частоты памяти.

Зависимость результатов от количества ядер процессора

Количество используемых в ходе тестирования ядер процессора Intel Core i7-6950X регулировалось через настройки UEFI BIOS платы Asus Rampage V Edition 10. Напомним, что процессор Intel Core i7-6950X является 10-ядерным, но поддерживает технологию Hyper-Threading, поэтому операционной системой и приложениями он видится как 20-ядерный (имеет 20 логических ядер).

Мы не отключали технологию Hyper-Threading и меняли лишь количество физических ядер процессор от 1 до 10. В дальнейшем мы будем говорить о логических ядрах процессора, количество которых менялось от 2 до 20 с шагом 2.

Частота работы всех ядер процессора фиксировалась и составляла 4,0 ГГц.

Как видим, результаты получились очень странные. Интерпретация результатов для пакета GNU Octave достаточно проста. В этом пакете скорость выполнения тестовой задачи практически не зависит от числа ядер процессора, то есть в варианте процессора Intel Core i7-6950X даже двух логических ядер вполне достаточно для выполнения тестовой задачи. При увеличении числа доступных ядер процессора задача распараллеливается, однако доля загрузки каждого ядра уменьшается пропорционально их количеству. В результате скорость выполнения тестовой задачи не меняется при увеличении числа ядер процессора.

А вот с приложением FFTW все очень странно и нелогично. При 6, 12 и 14 ядрах (логических) время выполнения тестовой задачи становится аномально большим. В остальных случаях время выполнения тестовой задачи примерно одинаковое. Результат довольно странный, однако он многократно перепроверялся.

Если посмотреть, какова загрузка процессора во время выполнения теста, то ситуация такова. Во-первых, задача распараллеливается на все ядра процессора. Во-вторых, в какие-то промежутки времени загрузка ядер процессора оказывается низкой, а в какие-то промежутки - высокой. Причем такое поведение наблюдается при любом числе ядер. И почему при определенном количестве ядер процессора время выполнения теста становится аномально большим - непонятно.

Мы провели дополнительное исследование данного странного поведения теста. Для этого мы отключили у процессора технологию Hyper-Threading и повторили тестирование в приложении FFTW, меняя количество физических ядер процессора от 1 до 10. Результаты тестирования следующие:

При отключенной технологии Hyper-Threading результат получился еще более нелогичным. При 3, 5, 6, 7 и 9 ядрах время выполнения теста было большим, а при 1, 2, 4, 8 и 10 ядрах оно оказалось небольшим. То есть получается, что эффективность распараллеливания задачи зависит от количества ядер процессора, но вовсе не в том смысле, что большее количество ядер позволяет улучшить результат. При каком-то количестве ядер задача распараллеливается хорошо, а при каком-то - плохо.

Впрочем, у нас еще оставались сомнения в правильности наших выводов, поскольку в данном случае речь шла не о реальном двух-, четырех-, шести- и так далее ядерном процессоре, а об искусственном блокировании ядер через BIOS материнской платы. Мы решили повторить тест с другим процессором - шестиядерным (12 логических ядер с учетом Hyper-Threading) Intel Core i7-5820K. Как мы видели, при 6 физических или 12 логических ядрах процессора время выполнения теста становится аномально высоким. И на процессоре Intel Core i7-5820K этот результат был подтвержден. Процессор работал на частоте 3,6 ГГц. При всех активированных ядрах с технологией Hyper-Threading (12 ядер) время выполнения тестовой задачи получается аномально большим: 1886 с. Если последовательно отключать ядра, то при 10, 8, 4 и 2 ядрах время выполнения теста составляет 200-400 с, а при 6 ядрах - 1235 с.

Как видим, на процессоре Intel Core i7-5820K получается такой же странный результат, как и на процессоре Intel Core i7-6950X.

Несмотря на такую странную зависимость результатов теста FFTW от числа ядер процессора, мы решили оставить его в пакете приложений, которые будут использоваться в бенчмарке iXBT Application Benchmark 2017. Это приложение наглядно демонстрирует, что не всегда много ядер - это хорошо. Иногда бывает и по-другому.

Возможно, в окончательном варианте мы уменьшим размер самого преобразования Фурье, дабы исключить варианты, когда такой тест длится более 30 минут.

Зависимость результатов от частоты процессора

Теперь рассмотрим, как результаты тестирования в приложениях FFTW и GNU Octave зависят от частоты процессора.

Частота ядер процессора Intel Core i7-6950X менялась в настройках UEFI BIOS платы Asus Rampage V Edition 10 путем изменения коэффициента умножения. Частота работы всех ядер фиксировалась (то есть режим Turbo Boost отключался). Использовались все ядра процессора (10 физических/20 логических). Частота менялась от 3,0 ГГц до 4,2 ГГц с шагом 200 МГц. Результаты тестирования следующие:

Как видно по результатам тестирования, и в пакете FFTW, и в пакете GNU Octave время выполнения теста зависит от частоты процессора. В пакете FFTW при увеличении частоты процессора от 3 до 4,2 ГГц (увеличение на 40%) время выполнения теста уменьшается на 21%. В пакете GNU Octave аналогичное увеличение частоты процессора приводит к уменьшению времени выполнения тестовых задач на 24%.

Таким образом, зависимость результатов тестов FFTW и GNU Octave от частоты процессора вполне типичная. Тестовая задача в пакете GNU Octave чуть лучше масштабируется по частоте процессора, а задача в пакете FFTW - чуть хуже.

Зависимость результатов от частоты памяти

Теперь рассмотрим зависимость скорости выполнения тестовых задач от частоты работы памяти. Память DDR4 работала в четырехканальном режиме (по одному модулю на канал), а частота памяти менялась в настройках UEFI BIOS в диапазоне от 1600 МГц до 2800 МГц c шагом в 200 МГц. Тайминги памяти фиксировались и не менялись при изменении частоты. Все ядра процессора работали на частоте 4,0 ГГц.

Результаты тестирования следующие:

Как видим, скорость выполнения тестовых задач в пакетах GNU Octave и FFTW никак не зависит от частоты работы памяти. По крайней мере, в четырехканальном режиме работы пропускной способности памяти DDR4 вполне достаточно даже на частоте 1600 МГц, и дальнейшее увеличение частоты памяти не позволяет ускорить выполнение тестовых задач.

Это типичный для большинства приложений результат. Приложения, скорость работы которых зависит от частоты памяти - это, скорее, исключение из правил.

Заключение

Итак, во второй статье нашего нового цикла мы рассмотрели два теста на основе специализированных математических приложений FFTW и GNU Octave. На примере 10-ядерного процессора Intel Core i7-6950X было показано, что тестовые задачи в этих пакетах распараллеливаются на все ядра процессора, однако не могут загрузить их на 100%. Результат теста в приложении GNU Octave практически не зависит от числа ядер процессора, а результат теста в приложении FFTW, наоборот, сильно зависит от числа ядер процессора, однако зависимость эта очень странная. При некотором числе ядер (14, 12 и 6) время выполнения тестовой задачи становится аномально большим, а во всех остальных случаях время выполнения тестовой задачи от числа ядер зависит слабо.

Кроме того, было показано, что скорость выполнения тестовых задач в пакетах FFTW и GNU Octave линейным образом зависит от частоты ядер процессора (при изменении частоты в диапазоне от 3 до 4,2 ГГц).

Наконец, было показано, что время выполнения тестовых задач в приложениях FFTW и GNU Octave никак не зависит от частоты памяти DDR4 (в четырехканальном режиме и в диапазоне от 1600 до 2400 МГц).

Есть еще одно замечание, которое можно сделать относительно приложений FFTW и GNU Octave при их использовании для тестирования. Пакет GNU Octave имеет плохую повторяемость результатов и для получения результата с низкой погрешностью желательно делать пять прогонов теста. Приложение FFTW дает более стабильные результаты, но и для этого приложения необходимо как минимум три прогона теста.

В следующей статье данного цикла мы рассмотрим три приложения, которые используются для рендеринга 3D-сцен: POV-Ray 3.7, LuxRender 1.6 и Вlender 2.77a.

Cвободная математика

Александр Бикмеев разбирается, насколько свободна компьютерная математика и насколько свободное ПО является математическим.

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

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

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

Символьные вычисления

Системы компьютерной математики (СКМ) разрабатываются давно, и Maxima () была одной из первых. Изначально это был коммерческий продукт, но, не выдержав конкуренции, система перешла в разряд свободных.

Оболочка wxMaxima и пункт меню, позволяющий вывести или убрать с экрана панели математических операций.

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

Maxima позволяет решать алгебраические уравнения, системы уравнений, выполнять операции интегрирования, дифференцирования, разложения в ряд и так далее. Кроме того, она умеет решать дифференциальные уравнения, граничные задачи, задачи Коши, выполнять алгебраические вычисления с матрицами, строить графики и поверхности, заданные различными функциями в декартовой и полярной системах координат. Все возможности перечислить трудно.

Для СКМ Maxima разработано несколько оболочек, наиболее удобной из которых (для начинающего пользователя) является wxMaxima (см. рис. 1). Начиная с версии 0.8.0, она стремительно меняется в лучшую сторону. Последняя версия (0.8.3) содержит черты таких известных коммерческих пакетов, как Maple и MathCAD . Работа в данной оболочке достаточно проста и позволяет получать приемлемые результаты уже через несколько минут использования. Многие операции, названия которых присутствуют в меню и на панелях инструментов, снабжены удобными мастерами, позволяющими решать задачи, даже не зная встроенного языка и команд Maxima . Ну и еще один немаловажный факт – все оболочки для данной СКМ русифицированы. Кроме того, изучив свободный пакет Maxima , обучающиеся смогут легче освоиться в коммерческих пакетах, что обусловлено как относительной схожестью интерфейса, так и используемым синтаксисом (особенно это касается Maxima и Maple ).

Система прекрасно документирована, но справочный материал представлен только на английском языке. Наш журнал публиковал учебные материалы о работе в СКМ Maxima (LXF81–86). Будучи консольным приложением, Maxima может работать в пакетном режиме, то есть ей можно передавать на обработку текстовый файл со списком команд и получать опять же текстовый файл с результатами, а если учесть, что вывод может быть оформлен средствами системы разметки TeX , то это позволяет использовать ее в качестве базы для построения собственных приложений. Одним из примеров такой разработки является расширение TeXmacs .

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

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

СКМ Maxima входит во многие дистрибутивы Linux или, по крайней мере, обязательно присутствует в репозиториях. Она включена в состав таких образовательных продуктов, как AltLinux Школьный, Edubuntu и EduMandriva.

Окно SMath Studio , в котором определена функция, вычислена ее производная и построен график.

Следует отметить, что инженеры все-таки привыкли работать с таким мощным приложением-калькулятором, как MathCAD . Это система инженерных расчетов, доступная для любых платформ (см. Коммерческие пакеты), но за серьезные деньги. Однако работодатели требуют, чтобы выпускники умели работать в этой системе. Как же быть образовательным учреждениям?

В нашей стране родился спасительный проект: SMath Studio (http://ru.smath.info/forum/). Это бесплатный, но, к сожалению, пока не свободный продукт, разработчик которого, Андрей Ивашов, пытается создать альтернативу монстру MathCAD , и у него это получается (см. рис. 2). Приложение разработано для среды .NET , а затем адаптировано для Mono .

SMath Studio позволяет выполнять аналитические вычисления, операции с матрицами, строить графики и вычислять производные, и даже поддерживает функции программирования. К сожалению, аналитическое интегрирование пока не поддерживается, но продукт успешно развивается, и осенью 2009 г. автор заканчивает разработку инфраструктуры, которая позволит использовать сторонние подключаемые модули. Возможно, тогда развитие приложения выйдет на новый уровень, и мы получим полноценную альтернативу MathCAD .

Следует также отметить, что весной 2009 года, по соглашению с автором, продукт был включен в состав образовательного дистрибутива EduMandriva. Несмотря на ограниченную функциональность, данное приложение позволяет выполнять повседневные вычисления на уровне школьников и студентов младших курсов, а также простые инженерные расчеты. А если учесть, что SMath Studio прекрасно чувствует себя на карманных компьютерах и смартфонах, управляемых Windows Mobile, то знакомство с ним для школьников и студентов просто обязательно.

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

Окно wxMaxima с результатами символьных вычислений и графиком функции

В завершение данного раздела хочется заострить внимание на том, что пакеты символьной математики в качестве результата выдают выражение, а не число. Рассмотрим пример, показанный на рис. 3, в котором определена пользовательская функция и для нее найдена вторая производная; затем функция проинтегрирована. Заодно построен график. Таким образом, школьники и студенты могут наглядно выполнить полный анализ функции. И это далеко не все: Maxima умеет упрощать выражения путем раскрытия скобок, приведения подобных слагаемых, выполнения подстановок и задания некоторых условий и допущений, накладываемых на выражение. Добавьте сюда возможность символьного решения уравнений и систем уравнений, а также дифференциальных уравнений, и поймете, что современному студенту без этих инструментов не обойтись, а преподаватели естественных дисциплин могут оживить уроки и практические занятия за счет ввода интерактивных заданий или демонстрационного материала.

Численные расчеты

Как известно, не каждую задачу можно решить аналитически, то есть получить решение в виде некой формулы. Тогда на помощь приходят различные численные методы, для получения решения с некоторой точностью. Наиболее известным представителем приложений для численных расчетов является система компьютерной алгебры (СКА) Matlab .

Matlab широко распространен по всему миру (см. Сравнение в LXF109), но стоимость даже образовательных лицензий не по карману не только школам, но и многим российским вузам. За рубежом также предпочитают считать деньги – и вкладывают человеческие ресурсы в разработку свободных аналогов Matlab . Рассмотрим некоторые из них.

Прежде всего, на мой взгляд, стоит остановится на проекте GNU Oсtave (http://www.gnu.org/software/octave/). Разработчики позиционируют эту систему как «высокоуровневый язык программирования для численных расчетов». Как и многие свободные *nix-проекты с давней традицией, она предоставляет интерфейс командной строки. Введите в терминале octave – и (если, конечно GNU Octave установлена на компьютере) перед вами появится приглашение данной системы. Начните вводить команды, и в терминале будут выводится результаты вычислений.

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

. Оболочка qtOctave с выполненными вычислениями.

Долгое время GNU Octave не имела графического интерфейса, пока, наконец, не появился qtOctave (см. рис. 4). Эта оболочка весьма напоминает интерфейс Matlab и позволяет автоматизировать выполнение некоторых рутинных операций (например, построения графиков) при помощи мастеров.

Язык системы сделан максимально схожим с языком Matlab ; следовательно, человек, освоивший GNU Octave , сможет практически без переобучения работать и в Matlab , а именно это и необходимо работодателям. Кроме того, энтузиастами движения свободного ПО для системы создано достаточное количество пакетов расширений. За счет этого функционал самой СКА постоянно растет. Ну, а наличие исчерпывающей документации (пусть и на английском языке) как для системы, так и для пакетов расширений делает данный продукт не только выгодным, но и доступным для изучения.

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

Следующий пакет, который хотелось бы рассмотреть, называется Scilab (http://www.scilab.org), само имя которого указывает на схожесть с Matlab . Изначально это был также коммерческий продукт, и назывался он Blaise , а затем Basile . Его создателей вдохновили первые версии Matlab , и некоторое время они конкурировали. Однако в начале 90‑х фирма Simulog прекратила его продажу, и тогда шесть разработчиков французского национального исследовательского института (INRIA) основали проект Scilab .

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

Интерфейс Scilab 5

Scilab – единственная свободная система, аналогичная Matlab , имеющая свой собственный инструмент для блочного моделирования под названием Scicos . В дистрибутиве продукта имеется встроенный редактор скриптов и функций с возможностью отладки. Scilab обладает развитыми графическими возможностями для создания высокотехнологичных приложений. С функциональностью системы можно ознакомиться, рассмотрев демонстрационные примеры – некоторые из них весьма впечатляют (выберите пункты меню ? > Демонстрация возможностей ).

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

Во всем мире вышло несколько книг, посвященных описанию работы в Scilab , а также решению ряда специализированных задач. К сожалению, ни одна из них не была переведена на русский язык. В России вышло всего две книги, одна – в рамках национального проекта, а во второй Scilab описывается наряду с несвободными пакетами. Наш журнал также неоднократно печатал учебники о работе в Scilab (LXF106–109 и ), и все же документации пока не хватает, а справочные материалы не всегда позволяют понять, как работает та или иная функция.

Freemat - впечатляющий результат того, на что способна команда из трех единомышленников.

Выход пятой версии Scilab ознаменовал собой начало нового этапа в развитии системы. Изменился интерфейс приложения (разработчики отказались от GTK -интерфейса), начал меняться инструмент блочного моделирования Scicos , который в октябре 2009 года должен поменять свое имя на Xcos .

Еще одной вариацией на тему Matlab является Freemat (); этот пакет имеет другую немаловажную общую черту с Matlab , а именно поддержку объектно-ориентированного программирования. Интерфейс программы достаточно приятен. В основном окне реализовано автодополнение команд. На официальном сайте присутствует полное руководство по работе с системой (на английском языке). Дистрибутив программы имеет небольшой, по нынешним меркам, объем – 18 МБ.

Система позволяет выполнять численное решение уравнений и систем уравнений, как линейных, так и нелинейных, и числовую обработку сигналов (см. рис. 6); способна работать с многомерными матрицами. Основными положительными моментами Freemat , по сравнению со Scilab и Octave , являются большая совместимость внутреннего языка системы с языком Matlab и использование OpenGL для построения графиков и поверхностей, в результате чего они выглядят более качественно.

Минусами же Freemat являются низкое быстродействие (некоторые задачи решаются в разы медленнее, чем в других пакетах) и отсутствие пакетов расширений. Данная система развивается только усилиями команды из трех человек. Большого сообщества у проекта не наблюдается.

Дистанционная математика

Упомянутые выше системы представляют собой локальные проекты, то есть работа с ними ведется на одной машине. Но это бывает неудобно – например, при дистанционном обучении; кроме того, не все студенты согласятся (а иногда и смогут) поставить данные приложения на своих домашних компьютерах. В этом случае необходимы средства для удаленной работы с математическими пакетами.

SMath Studio Live : считайте, не выходя из браузера (пусть и не очень быстро).

Среди рассмотренного нами такую возможность предоставляет SMath Studio . В разделе Live официального сайта (http://smath.info/live) располагается виртуальный рабочий лист, на котором любой желающий может выполнить свои вычисления. Система очень удобна, хотя и не блещет быстродействием.

И все же более профессиональна в этом плане система SAGE (http://www.sagemath.org/). Данная система состоит из web-сервера, обеспечивающего графический интерфейс для взаимодействия с кодом Python , на котором написано ее ядро. Любой пользователь при помощи своего любимого web-браузера может подключиться к серверу, зарегистрироваться и получить в свое владение личное пространство. Оно может быть и открытым, и закрытым, то есть доступным только администратору сервера и самому владельцу. В личном пространстве могут создаваться рабочие листы, на них и выполняются все вычисления.

В рамках рабочего листа можно использовать любой доступный язык, а таких немало. По умолчанию система SAGE объединяет следующие продукты: GAP, Maxima, Python, R, LaTeX . Кроме этого, могут быть подключены Octave, Axiom, Magma, Mathematica, Matlab, Maple, Mupad и другие. В результате мы получаем единый сервер удаленной работы, позволяющий обучать любым математическим пакетам и выполнять вычисления с помощью как свободных, так и коммерческих систем компьютерной математики.

. По непонятным причинам, Sage отказывается работать в Firefox , но в остальном это удачное решение для удаленной работы.

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

В настоящее время в сети существует несколько публичных SAGE -серверов – к ним можно подключиться, посмотреть листы, выложенные в общий доступ, завести свое личное пространство и, в случае трудностей, попросить помощь у сообщества. Для этого просто сделайте рабочий лист публичным. Уверяю вас: желающих помочь достаточно много, единственная проблема в том, что рабочий язык – английский.

На официальном сайте присутствуют ссылки на тестовый публичный сервер (http://www.sagenb.org), а также на учебные материалы и книги, созданные с помощью данной системы. Зарегистрируйтесь и опробуйте SAGE – может быть, это то, что вы ищете? Стоит также отметить, что у нас не получилось войти на сервер в Firefox , но в других браузерах проблем не возникло.

Итак, мы рассмотрели наиболее популярные свободные системы компьютерной математики. Можно ли их использовать в обучении и для работы – решать вам. Мы свой выбор уже сделали, и не жалеем об этом.

Коммерческие системы

Среди коммерческих систем наиболее популярны три: Matlab (численные вычисления), Maple (основной упор сделан на символьные вычисления) и Mathematica (удачно сочетает устремления первых двух). Особняком стоит мощный инженерный пакет MathCAD , поскольку это скорее большой инженерный калькулятор, и он не предназначен для решения сложных задач математической физики или теории шифрования, обработки сигналов и так далее.

Все эти пакеты имеют версии под наиболее распространенные платформы: Windows, Linux и Mac OS X. Приведем стоимость одной лицензии данных пакетов для академических учреждений, согласно прайс-листу Softline:

  • Matlab – 30 765 руб;
  • Mathematica – 9002 руб;
  • Maple – 36 286 руб;
  • MathCAD – 5290 руб.

Выводы вы можете сделать сами.

 


Читайте:



Социальная сеть одноклассники

Социальная сеть одноклассники

Моя страница в Одноклассниках — это ваша личная страничка на сайте социальной сети odnoklassniki.ru (Ok.ru) Одноклассники являются одной из самых...

Портативная колонка с флешкой: отличный вариант для шумной компании — Дешевые портативные колонки для телефона

Портативная колонка с флешкой: отличный вариант для шумной компании — Дешевые портативные колонки для телефона

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

Стандартный архиватор windows 10

Стандартный архиватор windows 10

WinRAR – актуальная русская версия (32 и 64-бит) одного из самых популярных архиваторов для Windows, отличающегося высочайшей степенью сжатия...

Устранение ошибки "Центр обновлений Windows в настоящее время не может выполнить поиск обновлений, поскольку эта служба не запущена"

Устранение ошибки

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

feed-image RSS