Если в каком то документе будет задана функция пользователя, процедура, матрица или любой другой объект, то это определение будет действовать во всех других загруженных документах. Для неопытного пользователя это может создать большие трудности в отладке документов и даже в их понимании. Кроме того, надо учитывать, что набор функций, операторов и процедур в этих двух видах интерфейса несколько различается. Все это вовсе не недостаток Maple, как это трактуют некоторые «специалисты», а просто запланированное и отмеченное в справке по системе отличие.
После запуска системы Maple 9.5 сразу готова к выполнению вычислений. Их сеанс принято называть сессией. Управление системой может осуществляться различными способами, в том числе из меню — на рис. 1.4 сверху видно раскрывающееся меню системы (для позиции View — вид).
1.2.4. Понятие о символьных (аналитических) вычислениях
Символьные операции — это то, что кардинально отличает системы компьютерной алгебры (СКА) от систем для выполнения численных расчетов. При символьных операциях, называемых также аналитическими, задания на вычисление задаются в виде символьных (формульных) выражений и результаты вычислений также получаются в символьном виде. Численные результаты при этом являются частными случаями результатов символьных вычислений.
К примеру, попытка вычислить в общем виде выражение sin(x)²+cos(x)²=1 с помощью численных математических систем или программ на обычных языках программирования к успеху не приведет. Вместо ожидаемого результата появится сообщение об ошибке вида: «Переменная х не определена!».
СКА не только не боятся применения неопределенных переменных, но и предпочитают работать с ними. Зададим, к примеру, в Maple 9.5 квадратное уравнение, присвоив его выражение переменной eq (файл solve):
> eq:=a*x^2+b*x+c=0;
eq:= ах² + bx + с = 0Проверим статус переменной х.
> х;
xПеременная просто повторена в выводе, что и указывает на то, что она неопределенная. Теперь попробуем решить уравнение, используя функцию solve:
> solve(eq,x);
Получено хорошо известное решение для квадратного уравнения. А теперь попробуем найти аналитическое решение для других переменных a, b и с:
> solve(eq,а);
> solve(eq,b);
> solve(eq,с);
-ax² - bxРешение прошло успешно — во всех случаях пoлvчeны аналитические выражения для решения. Они более тривиальные, чем решение eq относительно х.
Не следует считать решения в аналитическом виде ограничением СКА. Большинство СКА, в том числе и Maple 9.5/10 легко решают подавляющее большинство задач и в численном виде и являются универсальными СКМ. Так, определив переменные а, b и с, присвоением им некоторых значений
> а:=2:b:=3:с:=4:
получим решение в численном виде:
> solve(eq,х);
Оно получено в виде комплексно-сопряженных чисел, в них I это мнимая единица, т. е. √-1.
1.2.5. Данные о скорости вычислений в Maple 9.5
В последних реализациях Maple много внимания было уделено повышению скорости вычислений. Система Maple 8, к примеру, вычисляла факториал максимально возможного числа 32000, затрачивая на это (на ПК с процессором Pentium III 600 МГц) 2,784 с [22]. A Maple 9.5 на современном ПК с процессором Pentium 4 Hyper Threading 2,6 ГГц справляется с этим в более чем в двадцать раз быстрее (файл bench):
> restart: t := time(): 32000!: TIME-time()-t;
TIME = 0.125Разумеется, выигрыш в скорости в данном случае обусловлен как применением более скоростного компьютера, так и системы Maple 9.5. К примеру, на том же компьютере Maple 8 выдала результат за 0,583 с, a Maple 7 — 0,610 с. Таким образом, скорость вычисления у Maple 9.5 в данном случае (при равных аппаратных возможностях) оказалась выше более чем вдвое. Любопытно, что при повторном выполнении этой команды время выполнения было показано нулевым, что свидетельствует об эффективном кэшировании программных кодов.
Обратите внимание на примененный полезный прием оценки скорости вычислений с помощью функции time() без аргумента. Можно подыскать и куда более эффектные частные примеры. Например, сумма 100000 членов 1/k^2 в Maple 8 вычислялась на ПК автора с процессором Pentium 4 НТ 2,6 ГГц за время около 256 с:
> t := time():add(1/k^2, k=1..100000): TIME=time()-t;
TIME = 255.688А в Maple 9.5 тот же пример дал время меньше 7 с:
> t := time() :add(1/k^2, k=1..100000): TIME=time()-t;
TIME = 6.500В данном случае резкое ускорение вычислений обусловлено применением новой библиотеки целочисленной арифметики — GNU Multiple Precision (GMP).