Пакет расширения с утилитами— Utilities


 

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

Работа с бинарными файлами — BinaryFiles

В подпакете BinaryFiles имеются типовые функции для работы с бинарными файлами:

OpenReadBinary [ "filename" ] — открытие файла для считывания бинарных данных; OpenWriteBinary["filename"] — открытие файла для записи бинарных данных; OpenAppendBinary ["filename"] — открытие файла для добавления данных в конец; ReadBinary [stream, type] — считывает бинарные данные из потока; ReadBinary [ stream, expr ] — считывает из потока бинарные данные, типы которых определяются выражением ехрг.

Функции

ReadListBinary[filename,type]

ReadListBinary[stream,type, n]

ReadListBinary[stream,type]

 оперируют с данными в виде списков, а функция WriteBinary [stream, data] записывает данные в поток в бинарной форме. Примеры применения этих функций представлены ниже:

<< Utilities`BinaryFiles`

data = N[Table[10^n, {n, -10, 10}]]

{l.x l10-10, 1.x 10-9, 1.x 10-8, 1.x 10-7, 1.x 10-6, 0.00001, 0.0001, 0.001, 0.01, 0.1, 1., 10., 100.-, 1000., 10000., 100000., 1.x 106, 1.x 107, 1.x 108, 1.x 109, 1.x 1010}

stream = OpenWriteBinary["binarytest"]

OutputStream["binarytest" , 4]

WriteBinary[stream, data]

Close[stream]

binarytest

ReadListBinary["binarytest", Double]

{1.х10-10, 1. xlO-9, 1. x10-8, 1.x 10-7, 1.x 10-6, 0.00001, 0.0001, 0.001, 0.01, 0.1, 1., 10., 100., 1000., 10000., 100000., 1.x 106, 1.x 107, l.xl08, 1.x 109, 1.x 1010}

ReadListBinary["binarytest", Signedlntl6, 5]

{15835, 31967,-9769, -16965, 15889}

Для конвертирования выражений ехрг в байтовый формат служат функции ТоBytes[expr] и ToBytes[expr, type].

Например:

ToBytes[-34.3421435]

{192, 65, 43, 203, 91, 128, 0, 0}

ToBytes[-34.3421435, CString]

{45, 51, 52, 46, 51, 52, 50, 49, 52, 51, 53, 0}

 

Запись графических объектов в файл формата DXF

В широко распространенных графических системах AutoCAD используется формат файлов DXF. Подпакет DXF позволяет записывать графические объекты Mathematica в этом формате с помощью функции WriteDXF["filename", graphics].

Здесь filename — имя файла, a graphics — имя предварительно созданного графического объекта. Применение данной функции вполне очевидно.

Фильтрация опций — FilterOptions

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

FilterOptions [symbol, optl, opt2,...] — возвращает набор опций, применимых к объекту symbol.

Компьютерная алгебра в Mathematica 4

Риc. 13.15. Пример применения подпакета FilterOptions Рисунок 13.15 поясняет применение опции фильтрации для создания графической функции Plotlntegrate, строящей график интеграла от заданной функции. Показан также пример построения графика интеграла от функции Cos [x] в интервале от 0 до 2п. Как и следовало ожидать, график функции очень близок к синусоиде.

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

Уплотнение памяти — MemoryConserve

Подпакет MemoryConserve в дополнение к имеющейся в ядре функции освобождения памяти Share [ ] содержит две директивы управления памятью:

On [MemoryConserve] — включает автоматическое сжатие занимаемой системой памяти; Off [MemoryConserve] — отключает автоматическое сжатие памяти. Ниже демонстрируется применение этого подпакета:
<<Utilities 'MemoryConserve' $MemoryIncrement

100000

ТаЫе[ ToString[0], {2^15} ] ;

Length[ % ]

MemoryConserve::start : Running Share[] to conserve memory. MemoryConserve::end : Finished running Share[];

929200 bytes of memory freed.

32768

Off[ MemoryConserve ]

On[ MemoryConserve ]

 

Данная утилита полезна лишь при использовании системы Mathematica на компьютерах с малым объемом оперативной памяти.

Работа с пакетами расширений — Package

В подпакете Package имеется несколько функций, полезных при работе с пакетами расширения:

FindPackages [path] — возвращает список файлов с расширением .m, имеющихся в каталоге path. Опция FullPath->True дает возврат полных (вместе с путем) имен файлов; FindPackages [path, pattern] — возвращает список файлов с расширением .m, имеющихся в каталоге path и удовлетворяющих заданному образцу pattern; Annotation [package] — возвращает список ключевых слов, содержащихся в аннотации пакета; Annotation [package, keyword] — возвращает текст аннотации пакета, связанной с ключевым словом keyword.

Примеры работы с этими функциями:

  <<Utilities' Package'

FindPackages[$Path, "*ca"]

{{}, {}, {}, {DiscreteMath'Combinatorica'}, {}}

FindPackages[$Path, "*ca",

FullPath -> True]

{{},(},{},

{/usr/local/mathematica/AddOns/StandardPackages/ DiscreteMath/Combinatorica.m}, {}}

Annotation["Utilities' Package'"]

{Title, Context, Author, Summary, Package Version, Mathematica Version, Copyright, History, Keywords, Limitations, Discussion}

Annotation["Utilities'Package'", "Mathematica Version"]

{(* :Mathematica Version: 4.0 *)}

 

Показ времени операций — ShowTime

В подпакете ShowTime собраны средства для осуществления контроля за временем выполнения различных операций:

ShowTime [expr] — выводит время выполнения операции ехрr; On [ShowTime] — включает вывод времени исполнения последовательности операций; Off [ShowTime] — выключает вывод времени исполнения последовательности операций. Следующие примеры иллюстрируют применение этих средств:

<<Utilities'ShowTime' NIntegrate[x Exp[-x] Sin[x], {x, 0, Infinity}]

0.05 Second

0.5

Off[ShowTime]

0. Second

ShowTime[Sum[1/n, {n, I, 999}]];

0.11 Second

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

Компьютерная алгебра в Mathematica 4

 

Что нового мы узнали?

В этом уроке мы научились:

Синтезировать звуки. Использовать функции времени и дат. Работать с географическими и картографическими данными. Вводить физические константы и размерные величины. Получать данные о химических элементах. Задавать данные только вещественного типа. Работать с бинарными файлами. Записывать графические объекты в файл формата DXF. Применять фильтрацию опций. Выполнять уплотнение памяти. Выводить данные о времени выполнения операций.