Преамбула. Системы
компьютерной
алгебры (СКА)
находят все
более
широкое
применение
во многих
областях
науки таких
как:
математика,
физика,
химия,
информатика
и т.д., техники,
технологии,
образовании
и т.д. СКА
типа Maple, Mathematica, MuPAD, Derive, Macsyma, Axiom, Magma, Reduce становятся
все более
популярными
для решения
задач
преподавания
математически
ориентированных
дисциплин, в
научных
исследованиях
и
промышленности.
Данные
системы
являются
мощными
инструментами
для ученых,
инженеров и
педагогов.
Исследования
на основе СКА-технологии,
как правило,
сочетают
алгебраические
методы с
продвинутыми
вычислительными
методами. В
этом смысле СКА
–
междисциплинарная
область
между математикой
и
информатикой,
в которой
исследования
сосредотачиваются
как на
разработке алгоритмов
для
символьных (алгебраических)
вычислений и
обработки на
компьютерах,
так и на
создании
языков
программирования
и программной
среды для
реализации
подобных
алгоритмов и
базирующихся
на них задач
различного
назначения.
В
серии наших
работ
достаточно
детально рассмотрены
такие
математические
пакеты как: Maple, Reduce, MathCAD и Mathematica. При
этом, особое
внимание
нами было
уделено
особенностям
каждого из
пакетов, его
преимуществам
и
недостаткам,
эффективным
приемам и
методам
программирования
в его среде,
созданию
набора
средств,
расширяющих
его
возможности,
а также
выработке системы
предложений
по его
дальнейшему
развитию. Наш
опыт
апробации и
использования
четырех
математических
пакетов Mathematica, Reduce, Maple, MathCAD в
различных
математических
и физических приложениях
позволяет
нам
рассматривать
пакеты Maple и Mathematica в качестве
бесспорных
лидеров (на
основе
специального
обобщенного
индекса) среди всех
известных на
сегодня
современных СКА.
Между тем, мы
предпочитаем
именно пакет Maple (несмотря на все его
недостатки и
недоработки) из-за
целого ряда
преимуществ,
среди которых
особо
следует
выделить
такие, как
развитые
графические
средства,
достаточно
эффективные
средства
решения
систем
дифференциальных
уравнений,
средства
создания графических
интерфейсов
пользователя,
мощная
библиотека
математических
функций, большой
набор
сопутствующих
пакетных модулей
для
различных приложений,
современный
встроенный
язык программирования
интерпретирующего
типа,
интерфейс с
рядом других Windows-приложений,
перспективная
концептуальная
поддержка.
Исследователи
используют
пакет Maple как
важный
инструмент
при решении
задач, связанных
с их
исследованиями.
Пакет
идеален (по
нынешним
понятиям) для
формулировки,
решения и
исследования
различных
математических
моделей. Его
алгебраические
средства
существенно
расширяют
диапазон
проблем,
которые
могут быть
решены на
качественном
уровне.
Педагоги в
средних
школах,
колледжах и
университетах
обновляют
традиционные
учебные планы,
вводя задачи
и упражнения,
которые
используют
диалоговую
математику и
физику Maple.
Тогда как
студенты
могут
сконцентрироваться
на важных
концепциях, а
не на
утомительных
алгебраических
вычислениях
и преобразованиях.
Наконец,
инженеры и
специалисты
в промышленности
используют
пакет Maple как
эффективный
инструмент,
заменяющий много
традиционных
ресурсов
типа справочников,
калькуляторов,
крупноформатных
таблиц,
редакторов и
языков
программирования.
Эти
пользователи
легко решают
весьма
широкий
диапазон математически
ориентированных
задач, разрабатывая
проекты и
объединяя
результаты (как
числовые,
так и
графические) их
вычислений в
профессиональные
отчеты достаточно
высокого качества.
Между
тем, наш
эксплуатационный
опыт в течение
1997 - 2005 г. г. с
пакетом Maple релизов 4 - 10
позволил нам
не только
оценить его
преимущества
по сравнению
с другими
подобными пакетами,
но также
выявил ряд
ошибок и
недостатков,
устраненных
нами. Кроме
того, пакет Maple не
поддерживал
ряд
достаточно
важных процедур
обработки
информации,
алгебраических
и численных
вычислений,
включая
средства
доступа к
файлам
данных. Ввиду
сказанного, в
процессе
работы с
пакетом Maple мы создали
достаточно
много эффективного
программного
обеспечения (процедуры
и
программные
модули), целым
рядом
характеристик
расширяющих
базовые и по
выбору
возможности
пакета. Данное
программное
обеспечение
было организовано
в виде
библиотеки,
которая
является
структурно
подобной
главной
библиотеке Maple и
обеспечена
развитой
справочной
системой,
аналогичной
подобной
системе
пакета Maple и
органично с
ней
связанной.
Комментированное
описание
данной
библиотеки
представлено
во второй
части
настоящей
книги.
Более
того,
программные
средства,
составляющие
библиотеку, в
своем
большинстве
имеют дело
именно с
базовой
средой Maple, что
пролонгирует
их
актуальность
как на текущие
релизы,
начиная с
шестого, так
и на последующие
релизы
пакета. В
этой связи
здесь
уместно
обратить
внимание на
один весьма
существенный
момент. При
достаточно
частом
объявлении о
новой
продукции Waterloo Maple, тем
временем,
уделяет
недостаточно
внимания
устранению
имеющихся
ошибок и
дефектов,
переходящих
от релиза к
релизу.
Некоторые из
них являются
достаточно
существенными.
Мы отмечали
данное
обстоятельство
в наших
книгах
неоднократно,
этому
вопросу посвящен
целый ряд
замечаний и
членов MUG (Maple Users Group). Более того,
расширению
инструментальных
средств
основной
среды пакета
также уделяется
недостаточное
внимание, что
особенно
заметно в
режиме
продвинутого
программирования
в его среде.
Представленная
библиотека
содержит
расширения
инструментальных
средств,
прежде всего,
базовой
среды пакета,
что
пролонгирует
их актуальность
и на
последующие
релизы
пакета, а также
весьма
существенно
упрощает
программирование
целого ряда
задач в его
среде и
обеспечивает
более
высокий
уровень
совместимости
релизов 6 - 10. Выявленная
нами
несовместимость
пакета как на
уровне
релизов, так
и на уровне
базовых
платформ – Windows 98SE и ниже, с
одной
стороны, и Windows ME/2000/XP и выше, с
другой
стороны,
потребовала
решения
проблемы
совместимости
для средств
библиотеки
относительно
релизов 6 - 10.
Пакет
Maple воплощает
новейшую
технологию
символьных
вычислений,
числовых
вычислений с
произвольной
точностью,
наличие
инновационных
Web-компонент,
расширяемой
технологии
пользовательского
интерфейса (Maplets), и весьма
развитых
математических
алгоритмов
для решения
сложных
математических
задач. В
настоящее
время пакет
использует более
3
миллионов
студентов,
ученых,
исследователей
и специалистов
из различных
областей.
Практически
каждый
ведущий
университет
и
научно-исследовательский
институт в
мире, включая
такие, как MIT, Cambridge, Stanford, Oxford, Waterloo и др.,
используют
пакет для
учебных и
исследовательских
целей. В
промышленных
целях пакет
используется
такими
ведущими
корпорациями
как Boeing, Bosch, Canon, NASA, Toyota, Sun Microsystems, Hewlett Packard, Ford, Motorola, General Electric, Daimler-Chrysler и др.
Резюмируя
сказанное (более
детальный
сравнительный
анализ обоих
пакетов можно
найти в серии
наших работ),
начинающему
пользователю
систем
компьютерной
алгебры
рекомендуем
все же пакет Maple, как
наиболее
перспективное
средство в данной
области
компьютерной
математики.
Этому
существенно
способствует
и творческий
альянс MapleSoft с всемирно
известным
разработчиком
математического
ПО – NAG Ltd. И это
при том, что
последний
имеет и свою
достаточно
приличную СКА
– AXIOM, являющуюся
на сегодня
лидером
среди СКА на
европейском
уровне. Более
того, пакет Maple постоянно
отвоевывает
позиции у Mathematica и начинает
доминировать
в
образовании,
что весьма
существенно
с
ориентацией
на перспективу;
используемая
Maple идеология
занимает все
более
существенное
место при
создании
электронных
материалов
математического
характера.
Вместе
с тем,
современное
развитие
пакета Maple
вызывает и
ряд
серьезных
опасений,
которые в
общих чертах
можно
определить
следующим
образом. Качество
любого
программного
обеспечения
определяется
в
соответствии
с большим количеством
характеристик,
среди
которых
можно
отметить
такие
существенные
как:
совместимость
программных
средств «снизу-вверх»,
устойчивость
функционирования
относительно
операционных
платформ,
наряду с качественной
поддержкой и
сопровождением,
и т.д. Этим
критериям последние
релизы
пакета Maple,
начиная с 7-го,
удовлетворяют
все меньше и
меньше, а именно.
Довольно
существенные
ошибки и
недоработки (многие
из них
неоднократно
отражались в
наших книгах
и статьях, а
также во
многих других
источниках,
включая
многочисленные
форумы по Maple)
переходят от
релиза к
релизу.
Отсутствует совместимость
релизов
пакета Maple «снизу-вверх». О
несовместимости
релизов Maple мы
неоднократно
отмечали в
книгах и
статьях.
Кое-что для
усовершенствования
совместимости
нами было
сделано (в
частности
посредством
нашей
библиотеки,
представленной
и в настоящей
книге),
однако не
все. Тем
временем, для
Maple
релизов 9 и 10
была
обнаружена
несовместимость
уже среди их
клонов. Как
известно, Maple 9 и 10
поддерживают
два режима – классический (например,
для Maple 9 ядро “cwmaple9.exe”и для Maple 10 ядро “cwmaple.exe”) и стандартный (например,
для Maple 9 ядро “maplew9.exe” и для Maple 10 ядро “maplew.exe”).
Оказывается,
что эти клоны
несовместимы
даже на
уровне
встроенных
функций.
Первая
глава книги
носит
вводный
характер,
представляя
собой основы
языка
программирования
Maple, что
позволит
читателю, не
знакомому в
достаточной
мере с
программной
средой
пакета, более
осознанно
воспринимать
информацию
второй части
книги,
представляющей
программные
средства
вышеуказанной
библиотеки.
По этой
причине она
лишь
скелетно
представляет
Maple-язык
пакета, не
отвлекаясь
на его
тонкости, особенности
и другие
частности в
свете основной
цели
настоящей
книги.
Читатель, имеющий
опыт
программирования
в среде Maple,
может вполне
(быть
может, за
очень редким
исключением)
безболезненно
опустить
данный
материал. Тогда
как
начинающий
на этом
поприще получит
необходимый
минимум
сведений по Maple-языку,
который
позволит
значительно
проще
совершенствоваться
в этом
направлении. Для
более
глубокого
ознакомления
с Maple-языком
нами
приведены
полезные
ссылки как на
отечественные,
так и на
зарубежные
издания.
Более того,
читатель,
заинтересованный
в освоении
программной
среды пакета Maple,
может найти
немало
полезной
информации как
в справочной
системе по
пакету,
литературе,
поставляемой
с пакетом,
так и на
ведущих Web-серверах и
форумах,
посвященных Maple-тематике. В
век почти
массовой
компьютеризации
и
интернетизации
лишь ленивый
может
аппелировать
к недостатку
нужной информации
по какому бы
то ни было
разделу
современного
знания.
Характеристика
библиотеки
программных средств.
Представленная
здесь
библиотека
расширяет
диапазон и
эффективность
использования
пакета на
платформе Windows благодаря
содержащимся
в ней
средствам в трех
основных
направлениях:
(1) устранение
ряда
основных
дефектов и
недостатков, (2) расширение
возможностей
целого ряда
стандартных
средств, и (3) пополнение
пакета
новыми
средствами,
расширяющими
возможности
его
программной
среды,
включая
средства,
повышающие
уровень
совместимости
релизов 6 - 10
пакета, о
которой
говорилось
выше. Основное
внимание
было уделено
дополнительным
средствам,
созданным
нами в
процессе
использования
пакета Maple
релизов 4 - 9,
которые по
целому ряду
параметров
существенно
расширяют
возможности
пакета и
облегчают
работу с ним.
Значительное
внимание
уделено
также
средствам, обеспечивающим
повышение
совместимости
пакета
релизов 6 - 10.
Большой опыт
использования
данного программного
обеспечения
подтвердил
его высокие
эксплуатационные
характеристики
при
использовании
пакета Maple в
многочисленных
приложениях,
потребовавших
не только
стандартных
средств, но и
программирования
своих.
Со
всей
определенностью
следует
констатировать,
что серия
наших книг по
Maple,
представляющая
разработанные
нами средства
и содержащая
предложения
по дальнейшему
развитию
пакета, в
значительной
степени
стимулировала
появление
таких приложений
как пакетные
модули FileTools, LibraryTools, ListTools и StringTools.
Между тем, и в
свете данных
приложений
представленные
нами средства
существенно
расширяют
возможности
пакета, во
многих
случаях
перекрывая
средства
указанных
пакетных
модулей.
Текущая
версия
библиотеки
содержит
набор средств
(более 640 процедур
и
программных
модулей),
ориентируемых
на следующие
основные виды
обработки
информации и
вычисления:
1. Программные
средства
общего
назначения
2. Программные
средства для
работы с
процедурными
и модульными
объектами
3. Программные
средства для
работы с
числовыми
выражениями
4. Программныее
средства для
работы со
строчными и
символьными
выражениями
5. Программные
средства для
работы со
списками,
множествами
и таблицами
6. Программное
обеспечение
поддержки
структур
данных
специального
типа
7. Программное
обеспечение
для по-битной
обработки
информации
8. Программные
средства,
расширяющие
графические
возможности
пакета
9. Расширение
и
исправление
стандартного
программного
обеспечения Maple
10. Программное
обеспечение
для работы с
файлами
данных
10.1. Программное
обеспечение
общего
назначения
10.2. Программное
обеспечение
для работы с
текстовыми
файлами
10.3. Программное
обеспечение
для работы с
бинарными
файлами
10.4. Программное
обеспечение
для работы с
файлами Maple
10.5. Специальное
программное
обеспечение
для работы с
файлами
данных
11. Программное
обеспечение
для решения
задач математического
анализа
12. Программное
обеспечение
для решения
задач
линейной
алгебры
12.1. Программное
обеспечение
общего
назначения
12.2. Программное
обеспечение
для работы с rtable-объектами
13. Программное
обеспечение
для решения
задач
простой
статистики
13.1. Программное
обеспечение
для решения
задач
описательной
статистики
13.2. Программное
обеспечение
для решения
задач
регрессионного
анализа
13.3. Программное
обеспечение
для проверки
статистических
гипотез
13.4. Элементы
анализа
временных (динамических) и
вариационных
рядов
14. Программное
обеспечение
для работы с
библиотеками
пользователя
Основные
новации
нашей
библиотеки с
привязкой к
вышеперечисленным
разделам,
тематически
классифицирующим
средства
библиотеки,
могут быть
кратко
охарактеризованы
следующим
образом.
1. Программное
обеспечение
общего
назначения:
*
повышение
уровня
совместимости
релизов 6 - 10
пакета Maple
относительно
его
стандартных
функций {assign, close, fclose, fremove, system};
*
очистка
переменных,
внешних
относительно
процедуры (prestart);
*
определение
полного пути
к основным
подкаталогам
пакета Maple;
*
определение
файлов с
документами,
используемыми
Maple последними;
*
определение
имени (имен),
которым в
текущем
сеансе
присваивались
значения;
*
определение
инсталлированных
релизов
пакета Maple на
вашем
компьютере;
*
определение
текущего
релиза
пакета Maple;
*
определение
текущей
версии
базовой операционной
системы
компьютера;
*
идентификация
в Windows
активных Maple-сеансов
(Kernels) и
др.
2. Программное
обеспечение
для работы с
процедурными
и модульными объектами:
* вывод
исходного
текста
модуля или
пакета и
экспортируемых
ими
переменных;
* простой
метод
отладки
процедур на
основе метода
контрольных
точек;
* проверка
наличия в
файлах
данных
процедур и
программных
модулей;
* проверка
наличия в
процедурах goto-предложений;
*
проверка
наличия в
файлах
некорректных
программных
модулей;
* проверка
типа
модульной
таблицы;
* проверка
параметров
процедуры,
программного
или
пакетного
модуля;
*
динамический
вызов
переменных,
экспортируемых
программным
модулем;
* проверка
доступности
в текущем
сеансе заданных
процедур,
модулей или
переменных;
*
определение
формальных
аргументов
процедуры,
модуля или
пакета;
* проверка
совместимости
файлов типа {“.m”, “.lib”} с текущим
релизом
пакета;
* слияние
файлов,
созданных
стандартным
предложением
save
пакета;
*
конвертация
программного
модуля в
эквивалентную
процедуру;
* конвертация
модулей второго типа в
эквивалентные
модули первого типа;
* извлечение
процедур и
программных
модулей из
текстовых
файлов
данных;
* конвертация
файлов входного Maple-формата
во внутренний Maple-формат, и
наоборот;
* получение
списка
пакетных
модулей,
находящихся
в Maple-библиотеках;
* проверка
использования
процедурами iolib-функций
доступа к
данным;
* конвертация
произвольного
Maple-объекта
в
программный
модуль и др.
3. Программное
обеспечение
для работы с
числовыми
выражениями:
* конвертация
чисел с
плавающей
точкой в общепринятый
стилизованный
формат;
* специальное
усечение
чисел float-типа;
* одна
полезная
специальная
конвертация
целых чисел в
список, и
наоборот;
* специальное
усечение
нулей в
числах float-типа;
* конвертация
чисел в
символьном
или строчном
формате в
числовые
значения и
др.
4. Программное
обеспечение
для работы со
строчными и
символьными
выражениями:
* извлечение
Maple-выражений
из их
символьных
или строчных
представлений;
*
специальное
конвертирование
строк или символьных
выражений,
содержащих
пробелы, для
возможности
их
последующего
корректного
использования
стандартными
функциями {system, ssystem} пакета;
* набор
средств
удаления из
строк и
символьных
выражений их
составляющих;
* набор
средств для
анализа
содержимого
строк и
символьных
выражений;
* расширенный
набор
средств
конвертирования
строк и
символьных
выражений в
списки,
векторы и
числовые
значения, и
наоборот;
*
расширенный
поиск
шаблонов,
содержащих wildcard-символы;
* специальные
вставки
символов в
строки и символьные
выражения;
*
определение
кратных
вхождений в
строки, списки
и символьные
выражения;
*
специальные
способы
поиска в
строках и
символьных
выражениях;
* сведение
к заданной
кратности
вхождений символов
или подстрок
в строку;
* извлечение
из строк и
символьных
выражений
подстрок,
ограниченных
заданными
маркерами;
* расширенный
набор
средств подстановок
в строки и
символьные
выражения;
*
расширенный
набор
средств
поиска в
строках и
символьных
выражениях;
* регистро-зависимый
и
независимый
поиск образцов
в символах и
строках;
*
расширенный
набор
средств
сортировки
элементов
строк,
списков и
символьных
выражений
произвольного
типа;
*
поиск
образца В, ближайшего
к символу А;
* простые
средства
кодирования/декодирования
текстовой
информации и
др.
5. Программное
обеспечение
для работы со
списками,
множествами
и таблицами:
*
поддержка
специальной
алгебры со
списками и
скалярами;
*
удаление
элементов из
списков и
множеств;
*
поддержка
теоретико-множественных
операций со
списками;
*
специальные
конвертирования
списков в множества,
и наоборот;
*
средства
расширения
множеств и
списков, и перестановки
элементов
последних;
*
расширенные
средства
подстановок
в списки и
множества;
*
набор
специальных
средств для
работы со списками
и
множествами;
*
расширенные
средства
анализа
кратных вхождений
элементов в
списки;
*
специальные
конвертирования
списков в
векторы;
*
определение
входов
таблицы по ее
выходу и анализ
кратности ее
выходов;
*
удаление
элементов
таблицы и
вывод графика
таблицы с
числовыми
выходами;
*
представление
специальных
видов таблиц;
*
проверка Maple-объекта на table-тип с
входами заданного
типа;
*
расширение
стандартной
функции map на списки,
множества и
таблицы;
*
средства
специальных
сортировок
обычных и
вложенных
списков;
*
динамическое
присвоение
значений
элементам
списка или
множества;
*
конвертирование
таблиц в
списки, и наоборот;
*
уменьшение
вхождения в
список
кратных элементов;
*
вычисление
уровней
вложенности
вложенных
списков и
множеств, и
др.
6. Программное
обеспечение
поддержки
структур
данных
специального
типа:
*
поддержка
новой
структуры
данных
прямого
доступа dirax-типа;
*
расширение
стандартной
функции type новым dirax-типом и
исправление
ее алгоритма
проверки на heap-тип;
*
средства
реорганизации
структур
данных типов
{stack, queue, heap};
*
расширенная
проверка
объекта на
типы {dirax, list,
table, heap, stack, queue} и
др.
7. Программное
обеспечение
для по-битной
обработки
информации:
*
данные
средства
отсутствуют
во всех текущих
релизах
пакета Maple, поэтому
средства
библиотеки
являются как
весьма
уместными,
так и
полезными
для достаточно
широкого
круга приложений.
Представлен
ряд довольно
полезных
процедур,
созданных на
их основе.
8. Программное
обеспечение
для работы с
графическими
объектами:
*
динамическая
раскраска
фреймов
анимируемых 2D-графиков.
Для
обеспечения
динамики
используется
метод «дисковых транзитов», весьма
полезный в
условиях
продвинутого
программировании
в среде
пакета Maple.
Данный метод
был нами
разработан и
успешно
использовался
еще для ЭВМ 3-го
поколения (серия
ЕС ЭВМ и др.) и
оказался
особенно
эффективным
с появленим
ПК, развитие
которых
характеризуются
(в
том числе) быстро
уменьшающимся
временем
доступа к внешней
памяти на
жестких
дисках;
* расширение
стандартных
процедур animate и animate3d на
произвольное
количество
параметров анимации.
Для этих
целей
используется
выше упомянутый
метод «дисковых
транзитов», а также
прием с
использованием
eval(parse(" …"))-конструкций;
*
создание 2D-графиков
данных с
единицами
размерности по
осям
координат;
*
получение
требуемого
фрейма
анимируемого
графического
объекта;
*
динамическая
раскраска фреймов
анимируемого
графического
2D-объекта;
*
расширение
стандартных
графических
процедур smartplot и smartplot3d, и др.
9. Расширение
и
исправление
стандартного
программного
обеспечения Maple:
*
проверка
типов
выражений,
активных в
текущем
сеансе пакета;
*
подстановка
подвыражений
в
алгебраические
выражения;
*
существенные
расширения
стандартных
функций,
процедур и
предложений map, op, map2, read, save, seq, curry, rcurry; достаточно
детально
рассмотрен
вопрос использования
модульных
структур
пакета, играющих
важную роль
при
организации
библиотек
пользователя;
*
существенное
расширение
стандартной
процедуры assign с
устранением
ее
несовместимости
относительно
релизов 6 - 10
пакета Maple;
*
расширение
стандартных
операторов and, or и xor на
любое число
операндов;
*
конвертирование
последовательности
выражений в
строку и
проверка
выражения на
тип “expressions
sequence”;
*
расширение
стандартной
функции type на такие
типы как: arity,
binary, complex1, nestlist, boolproc, dir, file, path, byte, digit, letter, libobj, ssign, mod1, package, nonsingular, sequent, setset, realnum, upper, Upper, lower, Lower, Table, assignable1, plotopt, plot3dopt;
*
расширение
стандартной
функции member для
возможности
обеспечения
проверки на принадлежность
выражения
множеству,
диапазону,
строке,
символьному
выражению,
списку,
модулю,
таблице,
процедуре,
массиву, а
также rtable-объекту;
*
полезные
расширения
стандартной
функции convert;
*
проверка Maple-выражений
на пустоту;
*
проверка
имени
текущего Maple-документа
в программном
режиме;
*
устранение
ряда
существенных
недостатков
стандартной
функции evalf;
*
полезные
расширения
стандартных
функции diff и
процедуры int;
*
очистка
переменных,
внешних
относительно
данной
процедуры;
*
сохранение
всех
вычисленных
имен текущего
Maple-сеанса;
*
сохранение Maple-объектов в
режиме
дописывания (APPEND);
*
расширение
стандартного
оператора if на любой
конечный
уровень
вложенности;
*
расширение
предложения FOR_DO на любой
конечный
уровень
вложенности;
*
операции
интервальной
арифметики;
*
операции с
глобальными
переменными
внутри Maple-процедуры;
*
расширение
стандартной WARNING-процедуры
пакета;
*
расширение
стандартного
предложения read пакета;
*
решение
уравнений с
ограничениями
на решения;
*
вывод систем
уравнений
и/или
неравенств в
стилизованном
виде;
*
средства
повышения
уровня
совместимости
релизов 6 - 10
пакета Maple и др.
10. Программное
обеспечение
для работы с
файлами
данных
10.1. Программное
обеспечение
общего
назначения:
*
удаление
файлов,
имеющих
произвольный
набор
атрибутов;
*
тестирование
файлов
данных,
логических каналов
и устройств
ввода/вывода;
*
динамическое
расширение
числа
доступных
логических
каналов
ввода/вывода;
*
расширенные
средства
закрытия
всех открытых
файлов
данных и
логических
каналов ввода/вывода
текущего
сеанса
пакета;
*
определение
компонент,
составляющих
имя файла и
полный путь к
нему;
*
стандартизация
пути к файлу
данных или каталогу,
позволяющая
корректно
использовать
их в
стандартных
функциях {system, ssystem};
*
открытие
одного и того
же файла
данных на
разных
логических
каналах
ввода/вывода;
*
поиск файлов
с Maple-документами,
содержащими
заданный
контекст;
*
проверка
файлов и
каталогов на пустоту,
копирование
одного
каталога в
другой;
*
переименование
каталогов и
файлов данных
с
сохранением
их атрибутов;
*
расширенная
проверка
свойств
каталогов и
файлов
данных;
* проверка
типов файлов
данных как
согласно
расширений
их имен, так и
логической
организации {TEXT, BINARY};
*
расширение
стандартной
функции type на новый rlb-тип файлов
данных;
*
расширение
стандартной
функции convert,
обеспечивающее
конвертацию
произвольного
файла данных
в файл данных
типов {rlb,
TEXT};
*
определение
и
переопределение
атрибутов
файлов
данных и
каталогов;
*
программное
определение
устройства
начальной
загрузки
системы (IPL);
*
проверка
файлов
данных на
режим их
открытия;
*
проверка
логического
канала
ввода/вывода
для
заданного
открытого
файла данных,
и открытие
файла данных
по заданному
логическому
каналу
ввода/вывода;
*
полезные
расширения
стандартных
средств currentdir, fopen, open, mkdir, rmdir;
*
создание
цепочки
каталогов
любого уровня
вложенности
или пустого
закрытого
файла, путь к
которому
определен
цепочкой
подкаталогов
произвольного
уровня
вложенности;
*
конвертация
файла внутреннего формата (m-файла) Maple под
текущий
релиз пакета;
*
создание
достижимого
принимающего
пустого
файла данных
и др.
10.2. Программное
обеспечение
для работы с
текстовыми
файлами:
*
существенное
расширение
стандартных
процедур writedata и readdata;
*
средства
поддержки
прямого
доступа к
файлам данных
TEXT-типа;
*
средства
расширенной
обработки
файлов данных
TEXT-типа,
обеспечивающие
целый ряд
массовых операций
с текстовыми
файлами
данных, и др.
10.3. Программное
обеспечение
для работы с
бинарными
файлами:
*эффективная
обработка
особой
ситуации «конец
файла»;
*
средства
расширенной
обработки
файлов данных
BINARY-типа,
обеспечивающие
целый ряд
массовых операций
с бинарными
файлами
данных, и др.
10.4. Программное
обеспечение
для работы с
файлами Maple:
* специальное
реструктурирование
текстового
файла,
созданного
предложением
save;
* проверка
пригодности
файла данных
для чтения
стандартным
предложением
read;
* обеспечение
совместимости
файла внутреннего
Maple-формата с
текущим
релизом;
* проверка
типов всех
файлов
данных
указанного
каталога;
* удаление
всех
результатов
вычислений
из указанного
mws-файла с
документом;
* удаление
Input-параграфов
из rtf-файлов с Maple-документами;
* замена
имени мнимой
единицы в latex-документах;
* вычисление
атрибута,
определяющего
длину имени
объекта в
файлах
внутреннего
формата
пакета;
* блокировка
Maple-файлов
с
документами
в текущем
сеансе;
* определение
наличия в mws-файлах
ссылок и их
типов, и др.
10.5. Специальное
программное
обеспечение
для работы с
файлами
данных:
* выбор
корректных email-адресов из
файлов
данных ASCII-формата;
* кодирование/декодирование
файлов данных
ASCII-формата;
* очистка
Cookies-каталогов
компьютера
от
нежелательных
файлов;
* выборка
из файла
данных слов,
удовлетворяющих
заданным условиям;
* обеспечение
поддержки
механизма «дисковых
транзитов»;
* специальный
статистический
анализ текстовых
файлов
данных и
строк, и др.
11. Программное
обеспечение
для решения
задач
математического
анализа:
* расширение
shift-оператора
на произвольное
число
ведущих
переменных;
* вычисление
значений
табулированных
функций;
* специальная
обработка
выражений с
частичным
вычислением;
* вычисление
частных
производных
в заданных
точках;
* полное
интегрирование
алгебраических
выражений;
* конвертация
float-чисел
и complex-чисел
в
приближенные
рациональные
числа;
* сглаживание
данных по
методу
наименьших квадратов;
* тест
на проверку
принадлежности
по заданной
толерантности
числового
выражения к множеству,
списку,
массиву,
матрице и
вектору;
* полиномиальная
интерполяция
данных;
* одна
полезная
композиция
функций;
* вывод
системы
уравнений
и/или
неравенств в
стилизованном
формате;
* динамическая
генерация
линейных
ограничений
для задач
оптимизации;
* вычисление
независимых
переменных
алгебраических
выражений;
* анализ
алгебраических
выражений
или функций
от одной
независимой
переменной;
* аппроксимация
минимаксных
точек для процедур
и функций;
* поиск
минимакса
алгебраических
выражений и
др.
12. Программное
обеспечение
для решения
задач
линейной
алгебры
12.1. Программное
обеспечение
общего
назначения:
* интерактивное
создание
числовых
прямоугольных
матриц;
* макетирование
Maple-объектов
типов {array, Array, matrix, Matrix, vector, Vector};
* полная
факторизация
полинома от
одной ведущей
переменной;
* генерация
всех простых
полиномов
заданной
степени от
одной
переменной;
* специальная
полезная
сортировка
матриц типов Maple и NAG;
* динамическая
генерация
циклических
конструкций “for_do” и “seq”
произвольной
вложенности;
* построчное
слияние
списков,
векторов,
массивов и
матриц в массив
или матрицу;
* расширение
функции type на
проверку
типов входов
и выходов
таблиц, и др.
12.2. Программное
обеспечение
для работы с rtable-объектами:
* расширенное
конвертирование
Maple-объектов в NAG-объекты, и
наоборот;
* проверка
rtable-объектов,
активных в
текущем
сеансе пакета;
* проверка
идентификационных
номеров активных
rtable-объектов;
* проверка
сохранения
активных rtable-объектов в
текущем
сеансе;
* проверка
наличия rtable-объектов в mws-файлах с Maple-документами;
* конвертирование
mws-файлов,
содержащих rtable-объекты;
* восстановление
истории
работы с rtable-объектами
в предыдущих
сеансах и др.
13. Программное
обеспечение
для решения
задач
простой
статистики:
* проверка
вида
распределения,
генерируемого
встроенным
генератором rand
псевдослучайных
целых чисел;
* статистический
анализ
текстовых
файлов данных;
* операции
со
взвешенными
статистическими
данными;
* построение
однофакторных
линейной и нелинейной моделей
регрессии
для заданных
результатной
и факторной
переменных с
вычислением
корреляционного
отношения и
коэффициента
корреляции, и
с
графическим
представлением
как исходных
данных, так и
самой модели
регрессии на
одном
графике;
* параметрические
(Фишера и Стьюдента) и
непараметрические
(Ван дер
Ваардена и Манна-Уитни) критерии
проверки нуль-гипотезы
равенства
дисперсий
двух генеральных
выборок;
* элементы
простого
анализа
временных и
вариационных
рядов и др.
14. Программное
обеспечение
для работы с
библиотеками
пользователя:
* реорганизация
цепочки
активных
библиотек пакета
в текущем
сеансе;
* проверка
объекта быть
библиотекой,
аналогичной
главной
библиотеке
пакета;
* выборочный
вызов
процедур,
модулей и
переменных
из указанных
библиотек;
* ведение
простых
библиотек
пользователя,
структурно
отличных от
пакетных;
* расширенные
средства
ведения
библиотек, аналогичных
главной
библиотеке
пакета;
* эффективный
способ
сохранения в
библиотеках
процедур и
программных
модулей;
* средства
работы с
поврежденными
библиотеками,
аналогичными
главной
библиотеке;
* расширенный
сбор
статистики
по использованию
библиотечных
средств и др.
Исходя
из нашего
многолетнего
опыта использования
пакета Maple
релизов 4 - 9 и
опыта наших
коллег из
университетов
и академических
институтов России,
Эстонии, Белоруссии,
Литвы, Латвии и ряда
других стран,
следует
отметить, что
многие из
средств (либо их
аналоги) нашей
библиотеки
весьма целесообразно включить в
стандартные
поставки
последующих
релизов Maple.
Соответствующие
предложения
были нами представлены
разработчикам
пакета. Можно
констатировать,
что ряд наших
книг по Maple-проблематике,
которые
представляют
средства,
разработанные
нами, и
содержат
полезные
рекомендации
по
дальнейшему
раз-витию
пакета,
стимулировали
появление
пакетных
модулей FileTools, LibraryTools, ListTools и StringTools.
Однако, в
этом
отношении
средства,
представленные
нами,
существенно
расширяют
возможности
пакета, во
многих
случаях
превышая
таковые из
указанных
пакетных
модулей. В настоящее
же время они
доступны
пользователям
пакета в виде
предлагаемой
библиотеки,
функционирующей
на
платформах Windows и
поддерживающей
релизы 6 - 10
пакета.
Средства
библиотеки
во многих случаях
позволяют
существенно
упрощать программирование
различных
прикладных
задач в среде
пакета Maple
релизов 6 - 10.
Настоящая
библиотека
была
отмечена в 2004 г.
наградой Smart Award от Smart DownLoads Network. Библиотека
содержит
оптимально
разработанное,
интуитивное
программное
обеспечение (набор
процедур и
программных
модулей), которое
хорошо
дополняет
уже
доступное программное
обеспечение
пакета с
ориентацией
на самый
широкий круг
пользователей,
в целом ряде
случаев
расширяя
сферу применения
пакета и его
эффективность.
Библиотека
структурно
подобна
главной библиотеке
Maple,
снабжена
развитой
справочной
системой по
средствам,
расположенным
в ней, и
логически связана
с главной
библиотекой
пакета, обеспечивая
доступ к
средствам,
содержащимся
в ней,
подобно
стандартным
средствам
пакета.
Простое
руководство
описывает
установку
библиотеки
при наличии
на
персональном
компьютере с
платформой Windows
инсталлированного
пакета Maple
релизов 6, 7, 8, 9, 9.5
и/или 10. Для полной
установки
данной
библиотеки требуется
15 МB
свободного
пространства
на жестком
диске.
Условия
получения
данной
библиотеки, прилагаемой
к книге, и ее
последующих
обновлений
приведены в
тексте настоящей
книги.
Сопутствующие
материалы
содержат
немало
дополнительной
полезной информации,
которая по
тем либо иным
причинам не
включена в
основной
текст книги.
Все
исходные
тексты
средств,
содержащихся
в библиотеке,
доступны
пользователю,
что
позволяет
использовать
их в качестве
хорошего
иллюстративного
материала
при освоении
программирования
в среде
пакета. В них
представлено
использование
различных
полезных
методов и
приемов
программирования,
включая нестандартные,
которые во
многих
случаях
позволяют
существенно
упрощать
программирование
задач в среде
пакета и
делать их
более
прозрачными
и изящными с
математической
точки зрения.
При этом,
следует
отметить, что
в ряде случаев
тексты
процедур
оставляют
достаточно
широкое поле
для их
оптимизации (в
нынешнем
виде они по
эффективности,
практически,
не уступают
оптимальным), однако это
было сделано
умышленно с
целью
иллюстрации
ряда
особенностей
и возможностей
языка
программирования
Maple.
Это будет
полезно при
освоении
практического
программирования.
Следует
отметить, что
поставляемые
с библиотекой
файлы “ProcUser.txt” (для Maple 6 – 9) и “ProcUser10.txt” (для Maple 10), содержащие
исходные
тексты всех
программных
средств,
составляющих
библиотеку, а
также полный
набор mws-файлов
с help-страницами,
составляющими
справочную
базу пакета,
наряду с
большим
набором
различного
назначения
примеров,
позволяют
достаточно
легко
адаптировать
библиотеку
на базовые
платформы,
отличные от Windows-платформы.
Более того, в
виду
наследования
встроенными
языками
математических
пакетов
целого ряда
общих черт,
имеется
возможность
адаптации
ряда
процедур
нашей Maple-библиотеки
к
программной
среде других
пакетов. В
частности,
целый ряд
процедур
библиотеки
достаточно
легко был
адаптирован к
среде Mathematica и
некоторых
других
математических
пакетов,
тогда как
предложенный
нами метод “дисковых
транзитов”,
существенно
расширяющий
возможности
программирования,
эффективен
не только для
математических
пакетов. При
этом, следует
иметь в виду,
что исходные тексты
программных
средств,
представленные
в книге, и их
представления
в нашей библиотеке
(будучи
функционально
эквивалентными) могут в
определенной
степени
различаться,
что
обусловлено
широким
использованием
библиотеки
также и в
учебных
целях.
Наш
и опыт наших
коллег
показывает,
что
использование
библиотеки в
целом ряде
случаев
существенно
расширяет
возможности
пакета Maple
релизов 6 - 10 и
последующих
релизов,
упрощая
программирование
различных
прикладных
задач в его среде.
Данная
библиотека
представит
особый
интерес
прежде всего
для тех, кто
использует
пакет Maple не
только как
высоко
интеллектуальный
калькулятор,
но также и
как среду для
программирования
различных
задач
математического
характера в
своей
профессиональной
деятельности.
Библиотека
в совокупности
с главной Maple-библиотекой
обладает
полнотой в
том отношении,
что любое ее
средство
использует
либо
средства
главной
библиотеки
и/или средства
самой
библиотеки. В
этом плане
она полностью
самодостаточна.
Ряд часто
используемых
процедур
библиотеки, ориентированных
на массовое
применение при
программировании
различных
приложений,
оптимизирован.
Тогда как
многие,
обладая
функциональной
полнотой, на
которую они и
были
ориентированы,
между тем, в
полной мере
не
оптимизированы,
что
предоставляет
слушателю достаточно
широкое поле
для его
творчества
как по
оптимизиции
процедуры,
так и по созданию
собственных
аналогов,
постоянно контролируя
себя готовым,
отлаженным и
корректно
функционирующим
прообразом.
Более того,
используемые
в процедурах
полезные,
эффективные (а в
целом ряде
случаев и
нестандартные)
приемы
программирования
позволяют
более
глубоко и за
более
короткий
срок освоить программную
среду пакета.
Использование
же во многих
процедурах
обработки
особых и
ошибочных
ситуаций
дает
возможность
акцентировать
уже на ранней
стадии
внимание на
таких важных
компонентах
создания
программных средств,
как их
надежность,
мобильность
и ошибкоустойчивость.
Наконец,
работая с
библиотекой,
слушатель не
только имеет
прекрасную
возможность
освоить
многие из ее
средств для
своей
текущей и
последующей
работы с пакетом,
но и
проникается
концепцией
эффективной
организации
своих
собственных Maple-библиотек,
содержа-щих
средства,
обеспечивающие
его
профессиональные
интересы и потребности.
Представленная
выше
библиотека
содержит
далеко не все
разработанные
нами средства,
ориентированные
на работу в
среде Maple. В
нее вошли
лишь
средства,
ориентированные
на
достаточно
широкое
использование
при
программировании
в среде
пакета и
базирующиеся
исключительно
на основных
стандартных
средствах.
Значительная
часть наших
разработок
выполнена в
виде
отдельных
пакетных модулей,
ориентированных
на
специальные
приложения в
естественных
науках и
поставляемых
на
коммерческой
основе.
Естественно,
данные
модули
достаточно
существенно используют
и средства
представленной
здесь
библиотеки.
Есть надежда,
что и
читатель
найдет среди
средств
библиотеки
полезные для
своего творчества.
Для
заинтересованного
читателя и
пользователя
пакета Maple
ниже
приведены
наиболее
крупные
магазины Москвы,
Украины и Беларуси, в
которых
имеется
данная книга:
МОСКВА |
|
Название
|
Адрес |
1.
Торговый
Дом "БИНОМ" |
Перовское
ш., д. 10/1, т. 171-19-54, 170-66-74 |
2. ГУП
ОЦ МДК ДК на Н.
Арбате |
ул. Н.
Арбат, д. 8; т. 291-78-32 |
3. МДК Дом
педагогической
книги |
ул.
Большая
Дмитровка, д. 7/5
|
4. ГУП
ОЦ МДК Дом
технической
книги |
Ленинский
пр-т, д. 40; т. 137-60-38 |
5. ГУП
ОЦ МДК ДК в
Отрадном |
Алтуфьевское
ш., д. 34; т. 401-39-65 |
6. ГУП
ОЦ МДК ДК на
Войковской |
Ленинградское
ш., д. 13; т. 150-99-92 |
7. ГУП
ОЦ МДК ДК на
Соколе |
Ленинградский
пр-т, д. 78; т. 152-48-61 |
8. ГУП
ОЦ МДК ДК в
Гольяново |
ул.
Байкальская,
д. 23; т.
462-59-84 |
9. ГУП
ОЦ МДК Дом
книги
"Новый" |
Шоссе
Энтузиастов,
д. 24/43 т. 362-25-16 |
10. ГУП
ОЦ МДК ДК на
Ленинградке |
Ленинградское
шоссе, д. 40; т. 159-78-74 |
11. ДК в
Сокольниках |
ул.
Русаковская,
д. 27; т. 264-81-21 |
12. ТДК
"Москва" |
ул.
Тверская, д. 8; т. 629-73-55, 629-66-43 |
13. ТД
"Библио-Глобус" |
ул.
Мясницкая, д. 6;
т. 928-87-44, 921-58-03 |
14. ООО
"Библиосфера" |
ул.
Марксистская,
д. 9; т.
670-54-20 |
15. ООО
"Пресбург"
ДК на
Ладожской |
ул.
Ладожская, д. 6; т. 267-03-01 |
16. Сеть
маг-нов
"Новый
книжный" |
Старопетровский
пр-д, д. 7а; т. 733-91-68 |
17.
ООО
"Букбери"
сеть
магазинов |
Звенигородское
шоссе, д. 4; т. 784-76-64 |
Украина |
|
18.
ТЕХНОКНИГА
г Киев |
тел. в
г. Киеве 529-52-23 |
19. ЧП Карымов
Ратмир г.
Донецк (Маг. № 95
"Специальная
литература") |
|
Беларусь |
|
20. Делсар (Техническая
книга) г.
Минск |
тел. в г.
Минске 284-16-55 |