algcurves – исследование 1-мерных алгебраических кривых, определяемых полиномами от нескольких переменных
DEtools – содержит средства для графического представления решений дифференциальных уравнений
geom3d, geometry – средства работы с объектами 3- и 2-мерной Эвклидовой геометрии соответственно
ImageTools – средства для работы в среде Maple с файлами общих графичес- ких форматов
LREtools – содержит средства для графического представления линейных рекуррентных уравнений
Statistics (stats) – средства для графического представления статистических данных
Детально с графическими средствами данных модулей можно ознакомиться в справке по пакету. Maple имеет достаточно ограниченный набор средств для графического представления статистических данных. Поэтому, в целом ряду случаев пользователь вынужден для этого использовать иное программное обеспечение или программировать собственные процедуры в среде Maple. Встроенный язык Maple – достаточно развитая программная среда для обеспечения необходимых для этого инструментов.
sHisto := proc(d, L::nestlist) local k var t1 t2 n, , , , ; n := nops(L); var := [seq(cat(`0` k, ), k = 1 .. n)]; t1 := [seq(cat(`1` k, ), k = 1 .. n)]; t2 := [seq(cat(`2`, k), k = 1 .. n)]; seq assign( (var k[ ] = plottools['rectangle']([d×(k − 1), 0], [k d× , L k[ ][1]], 'color' = L k[ ][2], 'thickness' = 2), seq(t1 k[ ] = plots['textplot']( [1/2×(2×k − 1)×d, -0.1, convert(L k[ ][3], 'symbol')], 'align' = 'BELOW', 'color' = 'black'), k = 1 .. n), seq(t2 k[ ] = plots['textplot']( |
[1/2×(2×k − 1)×d, L[k][1] + 0.1, convert(L[k][1], 'symbol')],
'align' = 'ABOVE', 'color' = 'black', 'font' = ['TIMES', 'BOLD', 18]), k = 1 .. n)) , k = 1 .. n);
RETURN(plots['display']({op eval(( var)), op eval(( t1)), op eval(( t2))}, 'tickmarks' = [0, 0], 'font' = ['TIMES', 'BOLD', 13], 'axes' = 'none', `if`( nargs = 3 and type(args[3], 'string'), op {( 'title' = args 3[ ], 'titlefont' = ['TIMES', 'BOLD', 18]}), NULL)), unassign(op(var), op(t1), op(t2))) end proc> map(with, [plots, plottools, stats]): H:= sHisto(6, [[2,grey,1995], [2,green,1996], [3,yellow,
1997], [4,tan, 1998], [3,plum, 1999], [1,aquamarine, 2000], [3,coral, 2001], [6,pink, 2002], [1,turquoise,2003], [5,gray,2004], [2,turquoise,2005], [3,magenta,2006]], "Distribution of quantities of books published during 1995 - 2006"): L:= [2, 2, 3, 4, 3, 1, 3, 6, 1, 5, 2, 3]:
> Lz:= listplot([seq([3+(k-1)*6, L[k]], k = 1..12)], thickness=2, color=blue):
> fit[leastsquare[[x, y], y=a*x^2+b*x+c, {a, b, c}]]([[seq(3+(k-1)*6, k = 1..12)], L]):
> V:= plot(A(x, [seq(3+(k-1)*6, k = 1..12)], L), x = 3..69, thickness=3, colour=orange):
> P:= plot(rhs(%%), x = 0..72, thickness=3, color=navy):
> Z:= plottools[line]([3, 2], [69, 5], thickness=3, color=brown):
> g:=textplot({[18.5, 6, `The books total is 35`], [18.5, 5.5, `The books have been published in the USA,`], [18.5, 5, `Byelorussia, Russia, Lithuania and Estonia`]}):
> display({H, Lz, P, Z, V, g}, font = [TIMES, BOLD, 14]);
В качестве достаточно полезного и поучительного примера выше представлена процедура sHisto, позволяющая выводить специальный тип столбиковых диаграмм (гистограмм). Детально с процедурой sHisto, а также с другими нашими средствами в данном направлении можно ознакомиться в [41,103,109].
Используя стандартные средства пакета для работы с графическими {2D|3D}-объектами совместно со знанием графических {PLOT|PLOT3D}-структур, уже достаточно несложно создавать эффективные средства работы с такого типа объектами, базируясь только на стандартных средствах программной среды пакета. Пример тому не только созданные нами средства [103], но и многочисленные средства других пользователей пакета, с которыми можно ознакомиться в цитируемой нами литературе и не только.
пользователя в Maple
Пакет Maple релизов 6 - 10 располагает рядом средств для создания достаточно эффективных механизмов работы с пользовательскими библиотеками, структурно аналогичными главной Maple-библиотеке; эти библиотеки позволяют использовать в среде пакета содержащиеся в них средства на уровне доступа, аналогичного стандартным средствам пакета. В настоящей главе мы представим три достаточно эффективных уровня организации пользовательских библиотек процедур, модулей и функций. Между тем, средства, представленные в [103], позволяют существенно упрощать и расширять набор функций по работе с библиотеками пользователя. Как показывает наш опыт и опыт наших коллег, данные средства расширяют возможности пользователя по созданию и организации библиотек собственного программного обеспечения в среде пакета Maple.
Перед дальнейшим изложением сделаем следующее существенное замечание. Работа с библиотеками любой организации – это работа, прежде всего, с файлами данных различного типа. В виду этого мы должны быть знакомы со средствами доступа к файловой системе компьютера и с основными типами файлов, с которыми работает Maple. Являясь встроенным языком программирования в среде пакета, ориентированного, в первую очередь, на символьные вычисления (компьютерная алгебра) и обработку, Maple-язык располагает относительно ограниченными возможностями по работе с данными, находящимися во внешней памяти ПК. И в этом отношении Maple-язык существенно уступает таким традиционным языкам программирования как ADA, C++, Fortran, Cobol, PL/1, Pascal, Basic и др. Вместе с тем, ориентируясь, в первую очередь, на решение задач математического характера, Maple-язык предоставляет набор средств для доступа к файлам данных, который вполне может удовлетворить достаточно широкий круг пользователей физико-математических приложений пакета. В наших книгах [7-14,41-43,103] средства Maple для доступа к файлам различных типов рассмотрены достаточно детально, по полноте изложения перекрывая как поставляемую с пакетом документацию, так и известную нам литературу по пакету [54-62,78-89]. С целью расширения пакетных средств доступа к файлам данных нами был создан целый ряд средств, с которыми можно ознакомиться в вышеупомянутых наших книгах и Библиотеке [41,103], ориентированной на Maple релизов 6 - 10. Можно ознакомиться с данными средствами и по демоверсии этой Библиотеки [108]. Начиная с релиза 9, пакет включает пакетный модуль FileTools, содержащий набор средств для работы с файлами двух основных типов, с которыми имеет дело пакет и его приложения – бинарными (BINARY) и текстовыми (TEXT). Наши средства, в массе своей, не пересекаются со средствами данного модуля и существенно расширяют возможности пакета по работе с файлами данных. Поэтому настоящая книга содержит описание базовых средств пакета для доступа к файлам данных, не претендующее на полноту. Вместо этого рекомендуется обратиться либо к нашей книге [12], либо бесплатно скачать исходные тексты наших книг по Maple-тематике с web-адреса (локальная копия сайта первого автора) http://www.grsu.by/cgi-bin/lib/lib.cgi?menu=links&path=sites
Данные материалы относятся, в основном, к релизам 5 - 7 пакета, однако ввиду вполне достаточной пролонгированности представленных в них средств вполне приемлемы и для последующих релизов пакета, прежде всего это относится к базовым средствам языка Maple, включая систему ввода/вывода пакета.
Главная библиотека пакета содержит наиболее часто используемые процедуры и модули (которые не включены в ядро пакета). Эта библиотека расположена в справочнике LIB пакета и содержит набор файлов, представленный на рис. 2; библиотека содержит три главных файла “Maple.hdb”, “Maple.ind” и “Maple.lib”, тогда как наличие некоторых других файлов зависит от текущего релиза пакета (так Maple 6, 7 содержат файл “Maple.rep”).
Каталог LIB Главная Maple-библиотека | |||||||
Maple.hdb Maple.ind Maple.lib | |||||||
UserLib_1 | ……... | UserLib_k | ……... | UserLib_n | |||
Maple.hdb | Maple.hdb | Maple.hdb | |||||
Maple.ind | Maple.ind | Maple.ind | |||||
Maple.lib | ……... | Maple.lib | …… | Maple.lib | |||
Maple_U.cmd | Maple_U.cmd | Maple_U.cmd |
Рис. 2. Принципиальная файловая организация главной Maple-библиотеки и пользовательских библиотек, аналогичных главной библиотеке
В отличие от предыдущих релизов в Maple 10 главная и другие библиотеки пакета организационно устроены несколько иначе: вместо трех файлов “Name.hdb”, “Name.ind” и “Name.lib” (библиотека mlib-типа) они состоят из двух файлов “Name.hdb” и “Name.mla”
(библиотека mla-типа), где первый (в общем случае необязательный) файл “Name.hdb” структурно остался неизменным, тогда как файл “Name.mla” представляет собой, по сути дела, слияние двух файлов “Name.ind” и “Name.lib” прежней организации с соответствующей коррекцией входов в начальной индексной части файла “Name.mla”. На данном аспекте (как не принципиальном) внимания не акцентируется, принимая во внимание то обстоятельство, что библиотека mlib-типа легко конвертируется в эквивалентную библиотеку mla-типа, и наоборот.
На втором уровне библиотечной организации обеспечивается создание пользовательских библиотек в подкаталогах каталога LIB, содержащего главную Maple-библиотеку, стандартно поставляемую с пакетом. В этом случае файловая организация пользовательских библиотек принимает следующий простой вид, наследуя структурную организацию главной Maple-библиотеки (рис. 2). При этом, каждая библиотека пользователя располагается в отдельном подкаталоге каталога LIB под именем UserLib_k (k = 1 .. n). Первые три файла библиотеки пользователя полностью аналогичны одноименным файлам главной Maple-библиотеки, тогда как отдельный файл "Maple_U.cmd" содержит список имен процедур, расположенных в библиотеке и историю работы с библиотекой. При этом, в зависимости от текущего релиза в процессе работы с библиотекой пользователя в каталоге могут появиться три дополнительных файла “Maple.rep”, “elpam.ind” и “elpam.lib”, чье описание может быть найдено в наших предыдущих книгах [29-33,39,41]. Ниже под термином “Maple-библиотека“ будет пониматься любая библиотека, структурно и организационно подобная главной Maple-библиотеке пакета.