Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
Рис. 2.8. Окно выбора файлов с данными
Обратите внимание на обширный список возможных типов файлов внизу этого окна. Он включает в себя аудио и видео-файлы, файлы рисунков различного формата и другие типы файлов, представляемые которыми файлы могут быть представлены в векторной или матричной форме. Это является показателям того, что число типов матричных и векторных данных в Maple 10 резко расширено и систему можно использовать для обработки таких данных, как звуки и изображения.
Для примера на рис. 2.8 выбран файл электронной фотографии, на которой автор вручает свою книгу по Интернету Вице-Президенту корпорации Intel Шону Мелони. После загрузки файла открывается второе (основное) окно ассистента импорта данных. Оно показано на рис. 2.9.
Рис. 2.9. Окно ассистента импорта данных системы Maple 10
В этом окне дана исчерпывающая информация об источнике и типе данных — в нашем случае это файл формата JPG, который представляется комплектом из трех матриц, дающих относительные интенсивности (от 0 до 1) трех цветов — красного, зеленого и синего (система RGB). Кнопка OK вводит в текущую строку ввода Maple 10 матричный объект, представляющий импортируемые данные.
2.2.7. Просмотр импортируемых в Maple 10 данных
Активизируя кнопку предварительного просмотра Preview можно вывести окно просмотра, показанное на рис. 2.10 при открытой вкладке Table (Таблица). В левом верхнем углу окна документа на рис. 2.10 виден матричный объект, представляющий импортированные в Maple 10 данные. Нетрудно заметить, что он задан тремя массивами (матрицами) с индексацией элементов строк от 1 до 480 и столбцов от 1 до 640. Как уже отмечалось это три массива RGB-представления цветного рисунка. Нетрудно заметить также, что каждый элемент массива представлен числом в формате чисел с плавающей точкой. Линейки прокрутки позволяют просмотреть весь набор чисел каждого массива.
Рис. 2.10. Окно предварительного просмотра данных с открытой вкладкой Table
Вкладка Image (Изображение) позволяет просмотреть массивы в виде рисунков — см. рис. 2.11. Тут почти все понятно, но стоит обратить внимание на список Color Map (Цветовая Карта). С его помощью можно задать отображение изображения в формате Greyscale (черно-белое изображение с оттенками серого цвета) или изображение интенсивности каждой из составляющих цветного изображения. С вкладкой Options, позволяющей изменить опции данных, читатель может познакомиться самостоятельно.
Рис. 2.11. Окно предварительного просмотра данных с открытой вкладкой Image
Активизируя кнопку Insert можно вставить изображение в документ Maple. Это показано на рис. 2.12. При этом изображение можно растягивать или сжимать в различных направлениях.
Рис. 2.12 Пример вставки в документ Maple 10 изображения
Следует отметить, что в Maple 10 появился новый графический объект — наброски (Sketch). Подробно работа с ними описана в главе 8.
2.2.8. Создание Maple-таблиц и их применение
Еще одним важным типом множественных данных являются таблицы. Они задают данные с произвольной индексацией. Для создания таблиц служит функция table, которая при вызове в простейшем виде table[] создает шаблон пустой таблицы:
> table[];
table[ ]Пустая таблица резервирует память под данные. Когда параметром функции table является список выражений, он выводится в естественном порядке расположения элементов таблицы, но с произвольным порядком индексации:
> Т:=table ({1,2,Pi, `string`});
T: = table([1 = 1, 2 = 2, 3 = π, 4 = string])> Т [3] ;
π> S:=table([(one)=1,(two)=2,(three)=3]);
S := table([one = 1, three = 3, two = 2])> S [1];
S1> S[two];
2> S[three];
3> entries(S);
[1], [3], [2]> indices(S);
[one], [three], [two]В конце приведенных примеров показано, как можно выделить отдельные компоненты таблицы и вывести значения и индексы таблицы с помощью функций entries и indices. Следующие примеры показывают, что таблицу можно использовать для выполнения математических преобразований:
> F := table([sin=cos, cos=-sin]): op(op(F));
[cos = -sin, sin = cos]> F[cos] (Pi/2);
-1> F[sin] (0);
1> evalf(cos(Pi/2));
0.> evalf(sin(0));
0.Следует внимательно присмотреться к этим примерам — они демонстрируют замену функции косинуса на синус со знаком «—» и синуса на косинус.
2.2.9. Пакет ListTool для работы со списками
Для работы со списками имеется пакет расширения ListTool. Его вызов и состав новых определений — функций представлены ниже:
> with(ListTools);
Warning, the assigned name Group now has a global binding
Binary Place, Binary Search, Categorize, Dot Product, Enumerate, Find Repetitions, Flatten, Flatten Once, Group, Interleave, Join, JoinSequence, MakeUnique, Pad, PartialSums, Reverse, Rotate, Sorted, Split, TransposeПрименительно к задачам данной книги применение этого пакета ограничено. Поэтому ограничимся несколькими примерами его применения (файл listtools):
> myList := [seq( ithprime (i) , i=1..20 )];
myList := [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]> BinarySearch(myList, 61, `<`);
18> Reverse (myList);
[71, 67, 61, 59, 53, 47, 43, 41, 37, 31, 29, 23, 19, 17, 13, 11, 7, 5, 3, 2]> FindRepetitions(rnyList);
[ ]> FindRepetitions([1, 2, 3,1, 5, 3]);
[1,3]> L := [0., .84, .91, .14, -.76, -.96, -.28, .66, .99, .41, -.54];
L := 10., .84, .91, .14, -.76, -.96, -.28, .66, .99, .41, -.54]> M := [1., .54, -.42, -.99, -.65, .28, .96, .75, -.15, -.91, -.84];
M := [1., .54, -.42, -.99, -.65, .28, .96, .75, -.15, -.91, -.84]> DotProduct(L, L);
5.0063> DotProduct(L, M);
.3162Нетрудно заметить, что применение этих функций (как и ряда других) достаточно очевидно.
2.2.10. Структура разбросанных полиномов ряда переменных SDMPolynom
В Maple 9.5 введена новая структура данных — разбросанные полиномы ряда переменных — SDMPolynom (Sparse Distributed Multivariate Polynom). Примеры применения новой структуры:
А: =SDMPоlynоm(х³ - 2 х² - 2 х + 4, [х])
B:=SDMPolynom(х*у^2+х^2*у^3 + (2 + I)у + 1, [х, у])
Из этих примеров форма задания таких полиномиальных структур очевидна. С ними можно проводить различные операции — вычислять степень по каждой переменной, выполнять арифметические операции и т.д.
2.3. Применение констант
2.3.1. Символьные и числовые константы
Константы — это простейшие именованные объекты, несущие заранее предопределенные значения. Их имена (идентификаторы) также заранее определены и не могут меняться. Подробную информацию о константах можно найти, исполнив команду ?constant. Константы могут быть символьными, т. е. представленными только своим символьным именем.
Обычные числовые константы не имеют имени и представлены просто числами, типы которых были указаны выше. Можно считать, что именем такой константы является само ее значение. Например, в выражении 2*sin(1.25) числа 2 и 1.25 являются числовыми константами. При этом указание десятичной точки делает константу действительным числом — например, 2 — это целочисленная константа, а 2., 2.0 или 1.25 — это уже действительные константы.
2.3.2. Строковые константы
Строковыми константами являются произвольные цепочки символов, заключенные в обратные апострофы, например, `Hello`, `Привет`, `My number` и т.д. Числа, заключенные в апострофы, например `123456`, также становятся строковыми константами, которые нельзя использовать в арифметических выражениях. Строковые константы представляют значения строковых переменных. В них можно использовать символы кириллицы, при условии, что соответствующие шрифт имеется.
2.3.3. Встроенные в ядро Maple константы
Есть также ряд констант, которые правильнее считать заведомо определенными глобальными переменными (файл const):
> constants;
false, γ, ∞, true, Catalan, FAIL, πНиже указано их назначение:
false — логическое значение «ложно»;
γ или gamma — константа Эйлера, равная 0.5772156649…;
∞ или infinity — положительная бесконечность (отрицательная задается как -infinity);
true — логическое значение «истинно»;
Catalan — константа Каталана, равная 0.915965594…;
FAIL — специальная константа (см. справку, выдаваемую по команде ?FAIL);
I — мнимая единица (квадратный корень из -1);
π или Pi — представляет константу π=3.141…. .
Любопытно, что в этот список не входит основание натурального логарифма — число е. В качестве этой константы рекомендуется использовать ехр(1). Она отображается как жирная прямая буква Е. А ехр(1.0) выводит 2.71828… (что и следовало ожидать). В список не вошел и ряд других констант, например: NULL — пустая часть последовательностей, Order — порядок многочлена, Printlevel — уровень вывода сообщений и др.