Рис. 1.20. Примеры простых вычислений с построением графика функции пользователя одной переменной
Для построения графика функции f(x) одной переменной используется функция plot в форме
plot(f(x), X = -15..15);
Нетрудно заметить, что при наличии нескольких параметров функции (в нашем случае их два) они разделяются запятыми. Выражение х=-15..15 задает, во-первых, указание, относительно какой переменной строится график, а во-вторых, говорит, в какой области значений меняются значения этой переменной — в нашем случае от -15 до +15. Шаг изменения переменной выбирается автоматически, в зависимости от размеров и вида графика.
1.11.7. Пример построения трехмерного графика поверхности
Столь же просто, как и график обычной функции в декартовой системе координат, можно построить график трехмерной поверхности. Это показано на примере рис. 1.21. В данном случае задана функция двух переменных z(x,y) в рекомендуемом виде — z:=(x,y)->sin(x*y) и ее график строится с использованием графической функции plot3d. Правила задания пределов изменения переменных х и у соответствуют описанным выше. В данном случае можно было бы задать функцию пользователя и по старинке в виде z(x,y):=sin(x*y).
При выделении графика щелчком левой клавиши мыши на нем график обрамляется рамкой с местами ввода, за которые можно цепляться курсором мыши и растягивать график в ту или иную сторону. Кроме того, мышью при нажатой левой клавише можно вращать график в ту или иную сторону. Ряд возможностей форматирования графика дает контекстное меню правой клавиши мыши, показанное на рис. 1.21. С ними нетрудно разобраться самостоятельно.
Рис. 1.21. Построение графика трехмерной поверхности, заданной функцией пользователя
Возможно, многих читателей вполне удовлетворят уже описанные возможности, но сила системы Maple 9.5 прежде всего в возможности выполнения аналитических (символьных) вычислений. Поэтому мы перейдем обсуждению некоторых из них.
1.12. Символьные вычисления
1.12.1 Простой пример символьных вычислений
Maple 9.5, как и другие СКА, открывает обширные возможности выполнения
> eq:=1/R0=1/R1+1/R2+1/R3;
Теперь достаточно использовать функцию решения уравнений solve, чтобы найти значение
> solve(eq,R0);
С таким же успехом мы можем найти аналитическое выражение для
> solve(eq,R1);
Нетрудно проверить, что результат может быть получен и в численном виде для конкретных значений
> solve(eq,R2);
> R1:=1:R2:=2:R3:=3:solve(eq,R0);
Позже мы рассмотрим не одну сотню примеров на решение в среде Maple задач в символьном виде с их визуализацией — как графической, так и численной.
1.12.2. Представление входных выражений в математической форме
Приведенные выше примеры реализуют обычную форму представления документа. В нем имеются текстовые комментарии (для их ввода надо нажать клавиша F5), сформулированные на Maple-языке задания на вычисления, результаты вычислений в виде обычных математических формул и, там где это указано, графики.
В Maple 9.5 ввод исходных данных производится привычными для языков программирования средствами — с помощью функций и операторов, задаваемых в командной строке. Зато результаты вычислений получаются по умолчанию в виде обычных формул (хотя есть возможность их представления в другом виде, например принятом в редакторе LaTeX или языках программирования Fortran и С).
Тем не менее, вид документа с таким специфическим заданием формул может озадачить математика и любого пользователя, не слишком знакомого с основами программирования. В целом он отрицательно сказывается на восприятии документов.
Для устранения подобного недостатка (а скорее противоречия) Maple предлагает ряд средств. Во-первых, это
Рис. 1.22. Примеры применения инертных функций
Имена таких функций начинаются с большой буквы и функции выводят математическое выражение в естественной математической нотации. С помощью ряда функций, например evalf, можно вычислить математическое выражение, полученное инертной функцией. На рис. 1.22 внизу дан пример такого вычисления для предела функции sin(x)/x. Обратите внимание на еще один пример вывода контекстного меню для строки вывода.
Теперь остановимся на преобразовании исполняемых выражений ввода на Maple-языке в обычные математические формулы. Для этого достаточно, выделив входное выражение, нажать первую кнопку контекстной панели (со знаком «х») — соответствующее выражение тут же приобретет вид обычной математической формулы. На рис. 1.23 показаны примеры вычислений интеграла при его задании в строках ввода в виде текстового выражения и в обычной математической нотации.
Рис. 1.23. Примеры вычислений интеграла при его задании в текстовой и математической нотации
Таким образом, всегда можно получить формульное представление входных выражений. Более того, другой кнопкой их можно превратить в инертную форму, тогда выражение перестает вычисляться и становится по существу обычным комментарием.
1.12.3. Типовые символьные вычисления
На рис. 1.24 показано несколько примеров выполнения символьных вычислений математического характера: преобразование тригонометрического выражения с помощью функции упрощения simplify, вычисление суммы ряда функцией sum и вычисление производной функцией diff и неопределенного интеграла функцией int.
Рис. 1.24. Примеры символьных вычислений
Обратите внимание на результат выполнения предпоследнего примера. Он был выделен и перенесен в следующую строку ввода для последующего вычисления интеграла. Выделение можно осуществить протаскиванием указателя мыши с нажатой левой кнопкой.
Вычисления производных и интегралов в символьном виде, пожалуй, являются наиболее характерными областями применения систем символьной математики. На рис. 1.25 показаны примеры таких вычислений с применением функции diff для вычисления производной и int для вычисления определенных интегралов.
Рис. 1.25. Примеры вычисления производной и интегралов
Обратите внимание на функцию Int — инертную форму функции int. Как уже отмечалось, инертная форма служит для вывода записи интеграла в естественной математической форме, но с отложенным «на потом» выводом результата вычислений.
Полезно также рассмотреть последний пример. В нем задано выражение, интеграл которого вычисляется с применением контекстного меню правой клавиши мыши. Результатом является переменная R2 со значением интеграла. Контекстное меню демонстрирует также возможность оперативного проведения над заданным выражением множества других символьных операций, которые будут детально описаны в последующих главах книги.
На другом рисунке (рис. 1.26) показано вычисление интеграла, который не имеет представления через функции системы Maple 9.5. но может быть вычислен ею в численном виде.
Рис. 1.26. Численное вычисление значения интеграла, не имеющего аналитического представления
На рис. 1.26 представлены два варианта такого вычисления. В первом случае использована функция eval(expr) для вычисления значения заданного выражения expr. Во втором случае используется эта функция в иной нотации, позволяющей получить результат с заданным числом цифр (50 в нашем примере).
1.12.4. Разбухание результатов символьных вычислений
Одной из проблем в применении систем компьютерной алгебры является
Рис. 1.27. Решение квадратного и кубического уравнений в символьной форме
Просмотреть оставшуюся часть можно с помощью линейки прокрутки в правой части окна документа.
Стремление системы выдать полный и математически предельно точный результат, безусловно, очень важно для математиков. Но для многих прикладных задач, с которыми имеют дело инженеры и техники, она оборачивается большими неудобствами. Инженеры часто прекрасно знают, какие из членов математических формул можно отбросить, тогда как для математика-теоретика или аналитика такое действо — типичное кощунство.
1.12.5. Решения системы линейных уравнений
Приведем еще один характерный пример — решение системы линейных уравнений с помощью функции solve (рис. 1.28). Обратите внимание на форму задания уравнений и выдачи результатов и поразительную естественность решения задачи. Значение переменной
Рис. 1.28. Решение системы из пяти линейных уравнений
Maple стремится выдать результат с максимальной точностью — обычно в форме рациональных чисел. Но с помощью функции evalf можно получить результат в форме вещественных чисел в формате с плавающей точкой.
Слова solve, diff, int и evalf с их аргументами являются именами встроенных в систему функций, возвращающих символьные значения результатов. В общих чертах назначение их уже вполне понятно. Но в последующих главах книги мы познакомимся с этими и многими функциями гораздо более подробно и обстоятельно.
1.13. Повышение эффективности работы с системой
1.13.1. Работа с панелью инструментов
Для многих пользователей (особенно начинающих) при работе с Maple 9.5 удобно работать с
Рис. 1.29. Панель инструментов
При необходимости панели инструментов можно убрать с помощью команд меню View. Если графика выводится в отдельное окно, там имеется своя панель инструментов, которое будет описана ниже.
1.13.2. Работа с контекстной панелью инструментов
Другое полезное средство для облегчения работы по форматированию текстов, заданию параметров входных математических выражений и графиков — контекстная панель инструментов. Как следует из названия, контекстная панель Context Bar является контекстно-зависимой — ее содержание зависит от текущего положения маркера ввода или выделения.
Контекстная панель содержит следующие элементы при вводе текста комментария (рис. 1.30):
Рис 1.30. Контекстная панель инструментов для текста комментария и образцы шрифтов
• списки для задания стиля, шрифта и размера символов, кнопки для придания полужирного (Bold), наклонного (Italic) и подчеркнутого (Underline) начертания;
• кнопки для выравнивания текста;
• кнопку команды исполнения всего документа.
На рис. 1.23 была показана контекстная панель в случае, когда маркер ввода находится в строке ввода. Там же поясняется назначение кнопок панели для данного случая. Особо остановимся на кнопке со значком (√), которая обеспечивает проверку синтаксиса вводимого выражения до того, как оно завершено символами двоеточия или точки с запятой.
Поясним это на примере. Допустим, мы ввели ошибочное выражение для интеграла, забыв указать показатель степени в подынтегральном выражении х^n:
> int:(х^,х)
Если нажать кнопку автокоррекции, оно примет вид:
> int(х^ %? ,х)
Maple явно указывает на необходимость ввода показателя степени — в нашем случае переменной n.
А вот другой пример — мы забыли ввести закрывающую скобку в выражение:
> int(х^n, х
Если теперь нажать кнопку автокоррекции, то вставка скобки произойдет автоматически: