Використання пакетів
До складу Maple входить велика кількість спеціалізованих пакетів, орієнтованих, як правило, на конкретні розділи математики. Вантаження пакета здійснюється за допомогою команди with. аргументом якої служить ім'я пакета:
Warning, new definition for maximize
Warning, new definition for minimize
[Basis, convexhull, cterm, define_zero, display, dual, feasible, maximize, minimize, pivot, pivoteqn, pivotvar, ratio, setup, standardize]
Нерідко пакети містять функції, що називаються так само, як функції, що входять в ядро Maple, але відрізняються від них. У таких випадках після подгрузки пакету містяться в них функції отримують більш високий пріоритет у порівнянні зі своїми "тезками". У нашому прикладі система попередила нас, що після підключення пакету лінійної оптимізації буде діяти нове визначення функцій maximize і minimize.
Як результат успішного виконання команди with Maple виводить на дисплей (курсивом у квадратних дужках) перелік функцій, що стали доступними після активізації пакета.
Нерідко користувачеві потрібні не всі функції пакета, а лише незначна їх частина. У цих випадках для економії оперативної пам'яті комп'ютера корисно використовувати команду with з декількома аргументами. При цьому перший з них як і раніше буде означати ім'я підключається пакета, а решта - імена тих функцій пакета, які слід довантажити. Наприклад, замість кількох десятків функцій, що входять до складу пакета з теорії чисел, можна підключити лише кілька функцій, що цікавлять користувача в поточний момент:
> With (numtheory, divisors, factorset, phi, order, primroot);
[Divisors, factorset, order, ф, primroot]
Можливо і "одноразове" використання функції зі спеціалізованого пакета без збереження її в оперативній пам'яті після звернення. Для такого виклику необхідно вказати ім'я пакету, супроводивши його ім'ям викликається функції, укладеними в квадратні дужки:
При повторному виклику функції визначника (без вказівки пакета лінійної алгебри, в якому вона зберігається). Maple "забув", що таке det і порахував її користувальницької функцією.
Слід мати на увазі, що деякі функції, "приписані" до тих чи інших спеціалізованим пакетам, насправді доступні з ядра Maple. Такі, наприклад, функції ifactor. isolve. isprime. ithprime. nextprime і prevprime з пакета numtheory. matrix і vector з пакета linalg. інертні функції з пакету student. Врахування цієї особливості дозволить економніше використовувати оперативну пам'ять комп'ютера і в кінцевому підсумку прискорити обчислення.
Лінійна алгебра
У попередньому розділі ми розглянули загальні принципи роботи зі спеціалізованими пакетами Maple. Зупинимося дещо докладніше на вивченні одного з найбільш об'ємних (по числу функцій) і часто використовуваних пакетів - linalg. (Відзначимо, що починаючи з 6-ї версії в комплект Maple входить ще один пакет з лінійної алгебри - LinearAlgebra.)
Довантажити пакет за допомогою команди with, ми побачимо перед собою перелік назв функцій, а також попередження про нове визначення норми і сліду:
Для знайомства з основними функціями пакета задамо кілька матриць, проілюструвавши при цьому різні способи їх завдання.
> F: = transpose (randmatrix (3, 3, unimodular, entries = rand (-3..3)));
В останньому випадку ми згенерували верхнетреугольную унімодулярную матрицю (із зазначенням діапазону розкиду коефіцієнтів) і потім транспоновану її.
Знайдемо визначник матриці C:
Для множення узгоджених матриць в Maple використовується операція *. Знайдемо різницю творів матриць A і B, взятих в протилежних порядках:
Ми бачимо, що замість звичного для нас остаточного результату Maple повернув в якості відповіді якийсь "напівфабрикат" (множення і віднімання матриць позначені, але не виконані). Справа в тому, що для складних об'єктів (матриць, масивів, таблиць, процедур) в Maple використовується так зване "правило обчислення до останнього імені" (last name evaluation). Це правило (на відміну від "правила обчислення до кінця", використовуваного для менш громіздких об'єктів) застосовується з метою уникнення зайвого виведення на екран. Для того, щоб все ж вивести на екран інформацію, що цікавить нас матрицю, скористаємося функцією evalm (інша можливість - використовувати вже відому нам функцію op):
Знайдемо ранг отриманої матриці:
Знайдемо матрицю, зворотну до A. В цьому випадку, на відміну від бінарної операції множення матриць, Maple обчислює результат до кінця:
Для матриць A і B знайдемо власні значення і належать їм власні вектори:
> Eigenvals (A); eigenvectors (A);
Зверніть увагу, що при зверненні до функції eigenvectors (eigenvects) Maple повертає власні значення матриці, їх кратність як коренів характеристичного многочлена і базис підпростору з власних векторів, що належить кожному власному значенню.
Зрозуміло, Maple вміє працювати не тільки з числовими матрицями:
> F: = collect (charpoly (M, lambda), lambda);
В останньому прикладі ми знайшли характеристичний поліном M і згрупували його відносно.
Волгоградський державний педагогічний університет
Кафедра алгебри, геометрії та інформатики