Maple - cистемa аналитических вычислений для

advertisement
Maple - cистемa аналитических вычислений для математического
моделирования
В.Н. Говорухин, В.Г. Цибулин
В настоящих методических указаниях дано краткое описание пакета
аналитических вычислений Maple. Рассмотрены наиболее употребительные
команды и структуры, приведены примеры, иллюстрирующие возможности
Maple для проведения выкладок, решения алгебраических и дифференциальных
уравнений, вывода графиков. Методические указания предназначены для
студентов 3-5 курсов механико-математического и физического факультетов,
преподавателей, аспирантов и слушателей ФПК, а также могут быть
использованы для самостоятельного изучения пакета Maple. Изложение дано
для версии Maple V Release 3, но основные принципы и многие команды
сохранились и в старших версиях пакета.
Оглавление
Введение
Объекты, типы переменных.
Команды Maple
Выражения
Синтаксис
Стандартная библиотека
Операции с полиномами
Преобразование формул
Решение алгебраических уравнений
Решение дифференциальных уравнений
Линейная алгебра
Матричные и векторные операции.
Математические операции с матрицами и векторами.
Команды работы со структурой матриц и векторов.
Программирование в среде Maple.
Условный оператор
Операторы цикла.
Процедуры.
Команды ввода/вывода.
Графика в MAPLE.
Двумерная графика.
Трехмерная графика.
Приложение. Список пакетов и библиотек.
Приложение. Список имен математических функций.
Приложение. Пункты меню Windows-версии
Литература
Введение
Maple - это система для аналитического и численного решения математических
задач, возникающих как в математике, так и в прикладных науках. Развитая
система команд, удобный интерфейс и широкие возможности позволяют
эффективно применять Maple для решения проблем математического
моделирования.
Maple состоит из ядра ? процедур, написанных на языке С и в высшей степени
оптимизированных, библиотеки, написанной на Maple-языке, и интерфейса.
Ядро выполняет большинство базисных операций. Библиотека содержит
множество команд ? процедур, выполнямых в режиме интерпретации.
Программируя собственные процедуры, пользователь может пополнять ими
стандартный набор и, таким образом, расширять возможности Maple.
Интерфейс Maple в настоящее время разнится в зависимости от используемой
техники. В этом пособии речь, в основном, пойдет о Maple-языке, который не
меняется при переходе от машины к машине. Приводимые примеры были
опробованы на IBM PC для DOS-версии и Windows-версии, сведения об
интерфейсе Windows-версии даны в приложении. Этот интерфейс основан на
концепции рабочего поля (worksheet) или документа, содержащего строки
ввода, вывода и текст, а также графику.
Работа в Maple проходит в режиме сессии (session) ? пользователь вводит
предложения (команды, выражения, процедуры и др.), которые
воспринимаются Maple. Если ввод предложения завершается разделителем ";",
то в строке под предложением сразу будет отклик: результат исполнения
команды или сообщение об ошибке. Разделитель ":" используется для
"отложенного" ввода. Нажатие Enter запускает исполнение предложения. Если
введено законченное предложение, то следует выполнение, иначе ? Maple
ожидает завершения предложения. Обнаружив ошибку, Maple печатает на
следующей строке сообщение о ней; при ошибке в написании имени команды
символом "^" отмечается первая неузнанная литера.
По умолчанию результаты сеанса сохраняются в файле с расширением 'ms'.
Если задан режим сохранения состояния сеанса (session), то в файле с
расширением 'm' будут записаны текущие назначения.
Оглавление
Объекты, типы переменных.
Простейшими объектами в Maple являются: числа, константы, строки и имена.
Числа могут быть целыми, рациональными (дробь), с плавающей запятой,
например:
9
589 , 12/7, 3.34562134568906E0
Вычисления для вещественных чисел проводятся по умолчанию с 10-ю
значащими цифрами, но переопределив константу Digits, можно работать c
иной мантиссой. Это может быть полезно и при символьных вычислениях,
поскольку операции с рациональными числами выполняются медленнее. Даже
в студенческой версии доступны операции с числами со 100 знаками.
Коротко перечислим важнейшие константы:
Pi
exp(1) e (основание натурального логарифма)
I ? мнимая единица
infinity бесконечность
gamma константа Эйлера
true, false булевские величины
Строкой является любой набор символов, заключенный в кавычки:
'This is a Maple string'.
Каждая переменная Maple имеет имя. Именем является набор символов, не
более 499 символов длиной, начинающийся с буквы, причем большие и малые
буквы различаются. Кроме букв могут употребляться цифры и знак
подчеркивания. Примеры различных имен:
NewValue, newvalue, new_value1
По умолчанию переменная считается скалярной.
Важным элементом Maple являются последовательности или списки
(переменные типа list)? идеально подходящие для хранения коэффициентов
полиномов, асимптотических разложений и т.д.
Оглавление
Команды Maple
Выражения и переменные обычно служат параметрами команд Maple.
Стандартная команда выглядит следующим образом:
command(par1,par2,...,parn);
Часть команд Maple из стандартной библиотеки вызывается автоматически,
перед использованием других необходимо загрузить их в память командой
readlib. Кроме того многие команды являются частью пакетов и до запуска
команды пакет должен быть загружен командой with. Такими пакетами
являются:
DEtools, Gausslnt, genfunc, geometry, geom3d, group, liesymm,
logic, networks, NPspinor, numapprox, padic, projgeom, totorder.
Для прочих пакетов, наряду с командой with, допускается вызов команды с
префиксом пакета:
package[command](par1,par2,...,parn),
здесь package - имя пакета, command - имя команды, par1,par2,...,parn параметры команды.
Перечень пакетов с указанием предметной области дан в приложении.
Если имя переменной совпадает с именем какой-нибудь команды, то такая
команда становится недоступной в текущем сеансе. Поэтому перед заведением
новой переменной name полезно удостовериться, что имя не занято, командой
?name.
Запрещено использовать для имен переменных ключевые слова:
and, by, do, done, elif, else, end, fi, for, from, if, in, intersect, local, minus, mod, not,
od, option, options, or, proc, quit, read, save, stop, then, to, union, while.
Если команда введена правильно и полностью, то Maple выполняет ее и
приводит на следующей строке результат. Если вместо этого появилось эхо
введенной команды, то либо Maple отказывается выполнить команду из-за
неполноты информации, либо не может исполнить (уравнение не решается,
интеграл не берется и т. п.). В этом случае может помочь численное
вычисление интеграла или преобразование задачи.
Оглавление
Выражения
Используя переменные и знаки арифметических и других операций, можно
составлять выражения. Знаками операций являются:
+ ? сложение,
? ? вычитание,
* ? умножение,
/ ? деление,
^ возведение в степень,
! ? факториал,
abs() ? абсолютная величина
Порядок арифметических операций соответствует стандартному
математическому.
В булевских операциях также применяются знаки >, <, >=, <=, <>, =.
Оглавление
Синтаксис
В Maple используются три вида кавычек. Двойными кавычками ? " ?
обозначается предшествующий вывод. Пара двойных кавычек отсылает к
предпоследнему результату. Предшественник предпоследнего результата
обозначается тремя кавычками. Обратные кавычки ? ` ? указывают на строку
символов, причем две обратных кавычки кряду позволяют включить саму
кавычку в строку. Прямые кавычки ? ' ? (апостроф) нужны для предупреждения
ошибки в том случае, если для выполнения команды используется переменная,
получившая значение. Например, последовательность команд
> i:=3;
i=3
> sum(i^2,i=1..6);
приведет к ошибке, поскольку Maple воспримет второй аргумент в sum как
3=1..6. Применение кавычек даст правильный результат
> sum('i^2','i'=1..6);
91
Здесь и далее в тексте знаком '>' отмечено приглашение ввода.
Для построения Maple-предложений нужны: знак равенства "=" при
формировании уравнений и знак присвоения ":=" при задании значений
переменных. Различие в их использовании можно проиллюстрировать
следующим примером решения системы двух уравнений:
> sols:=solve({x-y=1,x+2*y=2},{x,y});
В результате получается
sols:= (x=1,y=2)
Как видно, получаемые решения представляют собой набор уравнений для
указанных переменных. Если решений несколько, то выдаются все найденные
решения (заметим, что это не обязательно все решения). Переменные x и y,
однако, остаются не назначенными (неопределенными). Для того, чтобы их
определить, нужно воспользоваться командй assign:
> assign(sols); x;
1
Оглавление
Стандартная библиотека
Большинство команд, выполняющих основные математические операции интегрирование, дифференцирование, разложение в ряды, суммирование и пр. находится в стандартной библиотеке, т.е. доступно без указания имени
библиотеки. Мнемоника этих команд и назначение параметров отражают их
математический смысл и не требуют дополнительных пояснений. В данном
пособии приводятся наиболее употребимые в задачах математического
моделирования команды.
Список команд из стандартной библиотеки для удобства пользования приведем
в алфавитном порядке.
array(1..n,list) Создает вектор (одномерный массив) из n элементов списка list.
asympt(expr,var) Вычисляет асимптотическое разложение по переменной var
выражения expr относительно бесконечности.
chebyshev(expr,var=a..b) Вычисляет Чебышевское разложение выражения expr
по переменной var на интервале [a..b].
coeftayl(expr,var=a,n) Вычисляет коэффициент при члене степени n для
разложения в ряд Тейлора выражения expr по переменной var в точке a.
conjugate(cmplx) вычисляет комплексно-сопряженное для комплексной
величины cmplx.
convert(list,array) Переводит список list в одномерный массив array с теми же
элементами.
convert(list,vector) Переводит список list в вектор vector с теми же элементами.
convert(list1,...,listn ,matrix) Переводит списки list1,...,listn в матрицу.
convert(s,poly) Преобразует список s в полином poly.
convert(s,ratpoly) Преобразует список s в полиномиальное выражение.
convert(poly,series) Преобразует полином poly в список series.
copy(M) Создает копию массива M (матрицы или вектора)
D(fun) Дифференциальный оператор от функции fun.
Det(M) Вычисляет определитель матрицы M
diff(expr,var) Дифференцирует выражение expr по переменной var.
Eigenvals(M) Вычисляет собственные значения квадратной матрицы M с
числовыми элементами.
eval(array) Выдает содержимое массива array.
evalc(cmplx) Вычисляет значение комплексного выражения cmplx.
evalf(expr) Вычисляет значение выражения expr в десятичной форме.
evalf(int(expr,var=a..b)) Вычисляет определенный интеграл при помощи
подстановки пределов в случае успешного аналитического интегрирования или
находит значение интеграла численно.
evalf(Int(expr,var=a..b)) Вычисляет определенный интеграл численно. Сначала
при помощи метода Гаусса, затем формул Ньютона-Котеса.
'evalf/int'(expr,var=a..b)) Вычисляет определенный интеграл численно при
помощи формул Ньютона-Котеса.
evalm(expr) Вычисляет матричное выражение expr с матрицами в качестве
операндов и допустимыми операторами &*, +, -, ^.
example(comm) Показывает пример использования команды comm.
extrema(expr,eqn,var) находит точки относительного экстремума выражения
expr относительно переменной var при ограничении eqn.
frac(expr) Вычисляет дробную часть действительного выражения expr.
Im(cmplx) Вычисление мнимой части выражения cmplx.
int(expr,var) Вычисляет неопределенный интеграл для выражения expr
относительно переменной var.
iscont(expr,var=a..b) Определяет, неперерывно ли выражение expr на отрезке
[a,b] для переменной var.
length(str) Возвращает длину строковой переменной str.
limit(expr,var=a) Вычисляет предел выражения expr при var->a.
max(exp1,..expn) Максимум из выражений exp1,...,expn.
maximize(expr) Вычисляет максимальное значение выражения expr по всем
переменным.
maximize(expr,{var1,..,varn}) Вычисляет максимальное значение выражения
expr по переменным var1,...,varn.
min(exp1,..expn) Минимум из выражений exp1,...,expn.
minimize(expr) Вычисляет минимальное значение выражения expr по всем
переменным.
minimize(expr,{var1,..,varn}) Вычисляет минимальное значение выражения expr
по переменным var1,..., varn.
mtaylor(expr,[var1,...,varn],n) Вычисляет разложение Тейлора выражения expr по
переменным var1,...,varn до величин порядка n.
op(Command) Выдает внутреннюю структуру нереализованных операций
Command (Diff, Limit, Product, Sum).
op(series) Выдает внутреннюю структуру списка series и обеспечивает доступ к
его операндам.
order(s) Определяет порядок усечения последовательности s.
Order:=n Назначает величину глобальной переменной Order, задающей число
членов в разложениях.
poisson(expr,[var1,...,varn],n) Вычисляет разложение Тейлора выражения expr по
переменным var1,...,varn до величин порядка n.
polar(cmplx) Преобразование комплексного выражения cmplx в
тригонометрическую форму.
product('expr','var'=a..b) Находит произведение выражений expr, вычисленных
при значениях var из интервала [a,b].
Re(cmplx) Действительная часть выражения cmplx.
round(expr) Округление значения действительного выражения expr.
series(expr,var=a) Вычисляет разложение выражения expr по переменной var в
окрестности точки a. Порядок разложения определяется глобальной константой
Order.
singular(expr) Определяет сингулярности выражения expr.
sum('expr','var'=a..b) Находит сумму выражений expr, вычисленных при
значениях var из интервала [a,b].
trunc(expr) Целая часть значения выражения expr.
taylor(expr,var=a,n) Вычисляет отрезок ряда Тейлора для выражения expr по
переменной var в окрестности точки a до членов порядка n.
type(expr,kind) Определяет, является ли выражение expr объектом kind. Здесь
вместо kind нужно использовать const, form, laurent, scalar, series, taylor.
Часть команд стандартной библиотеки описана в других разделах.
Оглавление
Операции с полиномами
Для всех пакетов аналитических вычислений операции с полиномами являются
базовыми и часто используются при других преобразованиях формул.
Например, команда convert описана в разделе "Стандартная библиотека".
Полиномы бывают одной или нескольких переменных.
Ниже дано представительное подмножество команд работы с полиномами,
которое предваряется достаточно простым примером. Введем полином p двух
переменных x и y, умножим его на выражение x+1 и результат разделим на
полином y+1. Далее выведем полученный в результате деления полином p1,
определим его степень, коэффициент при старшей степени и наибольшй общий
делитель полинома p1 и полинома x^2-2x.
>p:=x*y+x-2*y-2;
>q:=expand(p*(x+1));
>divide(q,y+1,p1);
true
>p1; degree(p1); lcoeff(p1); gcd(p1,x^2-2*x);
2
1
x-2
Для удобства список команд дается в алфавитном порядке.
coeff(poly,var,n) ? Находит коэффициент полинома poly при n-ой степени
переменной var.
coeffs(poly,var) ? Находит коэффициенты полинома poly при переменной
(переменных) var.
convert(poly,horner,var) ? Преобразование полинома по схеме Горнера.
convert(poly,mathorner,var) ? Матричная форма схемы Горнера.
convert(poly,sqrfree,var) ? Разложение полинома на квадратичные трехчлены.
degree(poly,var) ? Вычисляет степень полинома poly по переменной var.
discrim(poly,var) ? Вычисляет дискриминант полинома poly по переменной var.
divide(poly1,poly2,name) ? Частное от деления двух полиномов poly1 и poly2
присваивается переменной name. Результат true при успешном делении и false при неудаче.
factor(poly) ? Разложение полинома на множители.
FFT(n,aRe,aIm) ? Вычисляет быстрое преобразование Фурье, aRe и aIm массивы действительных и мнимых частей 2n чисел.
fourier(expr,var,name) ? Преобразование Фурье выражения expr по переменно
var с новой переменной name.
gcd(poly1,poly2) ? Наибольший общий делитель двух полиномов.
iFFT(n,aRe,aIm) ? Обратное быстрое преобразование Фурье, aRe и aIm массивы действительных и мнимых частей 2n чисел.
interp([x0,...,xn],[y0,...,yn],var) ? Построение интерполяционного многочлена по
таблице для переменой var.
invfourier(expr,var,name) ? Обратное преобразование Фурье выражения expr по
переменной var с новой переменной name.
invlaplace(expr,var,name) ? Обратное преобразование Лапласа выражения expr
по переменной var с новой переменной name.
lcoeff(poly,options) ? Старший коэффициент полинома.
ldegree(poly,var) ? наименьшая степень полинома относительно переменной var.
mellin(expr,var,name) ? Преобразование Меллина выражения expr по
переменной var с новой переменной name.
proot(poly,n) ? Находит корень n-ой степени из полинома.
psqrt(poly) ? Находит корень квадратный из полинома.
Перед запуском команд proot, psqrt нужно подгрузить стандартную библиотеку.
quo(poly1,poly2,var) ? Частное от деления двух полиномов.
randpoly(var) ? Создание случайного полинома.
realroot(poly) ? Вычисление интервала, где лежат вещественные корни
полинома poly.
rem(poly1,poly2,var) ? Остаток от деления двух полиномов.
Для операций с полиномами также могут быть полезны команды из пакета
работы с ортогональными полиномами orthopoly.
Оглавление
Преобразование формул
Maple обладает широкими возможностями для проведения выкладок ?
аналитических преобразований математических формул. Для
квалифицированной работы с формулами требуются некоторые знания о
структурах Maple. Во внутреннем представлении Maple-объект делится на
подобъекты и т. д., вплоть до базисных элементов. Получается ветвящаяся,
древо-подобная структура. При работе с большими выражениями часто
требуется извлекать отдельные элементы структуры и преобразовывать их.
Команда nops сообщает об объектах первого уровня, а команда op выдает их в
форме последовательности выражений.
Проиллюстрируем сказанное:
> object:=x^2+2*x-3; nops(object); op(object);
x2 +2x-3
3
x2 ,2x,-3
При помощи команды op можно извлекать части выражения, т.е.
>op(1,object);
x2
Может получиться, что Maple выдаст выражение не в той форме, которую вы
ожидали или предпочитаете. Чтобы упростить выражение, перейти от
экспоненциальных функций к тригонометрическим и т. п., могут применяться
команды factor, convert, simplify, subs. Команда subsop позволяет изменять
отдельные операнды. Кроме того при отсутствии необходимой команды можно
обратиться к программированию.
Приведем перечень команд для преобразования формул.
asubs(old=new,expr) ? подстановка выражения new вместо old в выражение expr.
collect(expr,var) ? Приведение подобных членов в выражении expr относительно
переменной var.
combine(expr) ? Приведение подобных членов в выражении expr, содержащим
известные функции, например, sin, exp.
convert(expr,option) ? Преобразование выражения expr согласно заданной
опции:
option=`+` ? с выделением сумм,
option=`*` ? с выделением произведений,
option=binary ? с переводом десятичных чисел в двоичный эквивалент,
option=confrac ? с использованием дробей,
option=RootOf ? с использованием корня выражения.
denom(rat) ? выделение знаменателя рациональной дроби rat.
expand(expr) ? раскрытие скобок.
isolate(eqn,expr) ? выражает expr из уравнения eqn.
lhs(eqn) ? выделение левой части из уравнения eqn.
nops(expr) ? число операндов в выражении expr.
normal(rat) ? нормализация дроби - сокращение общих множителей и
приведение к виду числитель/знаменатель.
Normal(rat) ? получение внутренней структуры нормализованной дроби.
numer(rat) ? выделение числителя рациональной дроби rat
rhs(expr) ? выделение правой части из уравнения eqn.
simplify(expr,[opt1,...,optn]) ? упрощение выражения expr согласно заданным
опциям (@, Ei, exp, GAMMA, hypergeom, ln, polar, power, radical, RootOf, sqrt,
trig).
sort(list) ? сортировка последовательности list.
subs(old=new, expr) ? подстановка выражения new вместо old в выражение expr.
subsop(n=new,expr) ? подстановка выражения new в n-ый операнд первого
уровня выражения expr.
trigsubs(expr) ? выдача всех тригонометрических эквивалентов выражения expr.
Заметим, что при работе с командой subs нужно соблюдать осторожность, т.к.
введенная подстановка может распространиться и на следующие операции.
Оглавление
Решение алгебраических уравнений
При помощи Maple можно находить решения систем алгебраических и
дифференциальных уравнений как в замкнутой форме (аналитически), так и
численно.
Для аналитического решения алгебраических уравнений используется команда
solve(eqns,vars)
со следующими параметрами:
eqns - уравнение или система уравнений, разделенных запятыми, в фигурных
скобках,
vars - переменная или группа переменных в фигурных скобках.
Уравнения могут быть заданы непосредственно в теле команды, а могут быть
введены приравниванием выражений некоторой переменной, например, eqns.
Если в качестве первого параметра команды solve ввести выражение, то
приравнивание этого выражения нулю производится автоматически.
Для хранения решений удобно ввести переменную и обращаться к конкретному
решению по индексу, например:
> sols:=solve(x^2+x=0,x);
sols:=0,I,-I
> sols[2];
I
При достаточном количестве времени и памяти Maple всегда отыщет решение
системы линейных уравнений. Для нелинейных уравнений может быть найдено
несколько решений (но не обязательно все), а может оказаться, что Maple не
находит решения. Тогда Maple просто выдаст приглашение ввода, ожидая
новой команды. Если не указаны переменные, относительно которых должно
быть найдено решение, Maple сообщит решение для всех переменных
> solve(ax+b=0);
b=ax, x=x, a=a
Если в выражении ответа появилась функция RootOf, это означает, что решение
выражается через корни аргумента этой функции.
Для численного решения системы уравнений eqns относительно переменных
vars используется команда fsolve
fsolve(eqns,vars,option).
Здесь при помощи параметров option могут быть заданы дополнительные
условия:
complex ? разыскиваются комплексные корни;
a..b ? задан интервал для поиска корней;
maxsols=n ? определено число разыскиваемых решений;
fulldigits ? для решения используется арифметика с максимальной мантиссой.
По умолчанию Maple старается найти все вещественные корни.
> fsolve(x^4-x^3-x^2-x-2,x);
-1., 2.
> fsolve(cos(x)=x);
0.739
Оглавление
Решение дифференциальных уравнений
Для нахождения решений дифференциальных уравнений используется команда
dsolve. Рассмотрим характерные применения этой команды:
dsolve(eqns,vars) ? решение уравнений eqns относительно переменных vars.
dsolve(eqns+inits,vars) ? решение задачи Коши для eqns с начальными данными
inits.
Можно также указывать дополнительные условия (option):
laplace ? использовать трансформанту Лапласа;
series ? применять разложение в ряды;
explicit ? явно выражать решение через зависимую переменную;
numeric ? численно решать задачу Коши.
При составлении уравнений для указания производной применяется команда
diff, а команда D используется для обозначения производной при задании
начальных или краевых условий.
Рассмотрим примеры задания системы дифференциальных уравнений и
обращения к команде dsolve.
>deqn:=diff(y(x),x$2)+3*diff(y(x),x)+2*y(x);
>dsolve(deqn,y(x));
Здесь _C1 и_C2 - произвольные константы.
Зададим краевые условия и решим то же уравнение еще раз.
>bvp:=y(0)=0,y(1)=1;
>dsolve({deqn,bvp},y(x));
Если явное решение не находится, то команда dsolve может быть запущена для
поиска решения в виде разложения в ряд (опция series), методом
преобразования Лапласа (опция laplace) или численно. Результатом работы
команды dsolve с опцией numeric будет создание процедуры, к которой можно
обращаться для вычисления отдельных значений или для построения графика
решения на заданном промежутке.
>init:=y(0)=0,D(y)(0)=1;
>F:=dsolve({deqn,init},y(x),numeric);
F:=proc(x) `dsolve/numeric/result2` (x,1524608,[2]) end
>F(.5);
(x=.5000000000,y(x)=.2386512229)
>plot[odeplot](F,[x,y(x)],0..7,labels=[x,y]);
Отметим, что в приведенном примере для построения графика решения
использована команда odeplot из пакета plots, которая интуитивно более легка
для применения, чем команды из пакета DEtools.
Оглавление
Линейная алгебра
Часть команд линейной алгебры содержится в стандартной библиотеке (т.е.
доступны по умолчанию), к таким командам относятся: evalm, Eigenvals, Det и
некоторые другие. Другие команды содержатся в пакете linalg. Пакет линейной
алгебры (linalg) , содержащий более 100 команд, подключается командой
with(linalg);
Основными объектами команд линейной алгебры являются массивы (array),
векторы (vector) и матрицы (matrix). Приведем примеры их эквивалентного
ввода матриц.
> array(1..3,1..2,[[a,b,c],[d,e,f]]);
> matrix(2,3,[a,b,c,d,e,f]);
Для ввода вектора можно также использовать два способа, например,
> array(1..3,[x,y,z])
> vector(3,[x,y,z])
При вводе можно опускать часть элементов массива, матрицы, вектора. Maple
заполнит вакансии переменными по умолчанию. Maple предоставляет
возможность сокращенного задания симметричных, антисимметричных,
разреженных, диагональных и единичных матриц. Для ввода таких матриц
достаточно ввести характерные элементы и указать тип вводимой матрицы.
При работе с массивами нужно помнить, что Maple следует правилу оценки
последнего имени. Это означает, в частности, что если вы определили массив, а
затем в строке ввода напечатали его имя, то строка вывода будет состоять из
этого имени. Для выдачи содержимого массива можно использовать команды
eval и op. Нижеследующий пример иллюстрирует сказанное
> M:=array(1..2,1..2,identity);
> M;
> eval(M);
Это же правило действует также для таблиц и процедур.
Команды линейной алгебры позволяют производить все основные операции с
матрицами и векторами. Ниже приводится часть возможных операций и
соответствующие Maple-команды. Об остальных командах можно узнать при
работе с программой Maple, обратившись к справке: ?linalg.
Оглавление
Матричные и векторные операции.
add(u,v) или evalm(u+v) сложение двух векторов или матриц, Для команды add
существует расширенный вариант:
add(M1,M2,c1,c2) сложение матриц или векторов M1 и M2 со скалярными
множителями c1 и с2 (c1*M1+c2*M2), причем размерности этих матриц
должны быть одинаковыми.
multiply(M1,M2) или evalm(M1 &*M2) умножение матриц M1 и M2. Причем в
качестве одного из параметров может быть вектор (multiply(M1,v1) ).
dotprod(v1,v2) скалярное произведение векторов v1 и v2.
crossprod(v1,v2) векторное произведение векторов v1 и v2.
evalm(M^n) возведение матрицы M в n-ую степень.
inverse(M) или evalm(1/M) вычисление обратной к M матрицы.
det(M) вычисление определителя матрицы M.
trace(M) вычисление следа матрицы M.
adjoint(M) вычисление сопряженной матрицы для квадратной матрицы M.
transpose(M) транспонирование матрицы M.
Математические операции с матрицами и векторами.
linsolve(M,v) решение линейной системы уравнений Mx=v.
gausselim(M) метод Гаусса для матрицы M.
eigenvals(M) вычисление собственных чисел матрицы M.
eigenvects(M) вычисление собственных векторов матрицы M. Результат
представляется в виде: собственное число,.его кратность, затем
соответствующий собственный вектор.
charpoly(M,lambda) вычисление характеристического многочлена матрицы M
относительно переменной .
minpoly(M,x) вычисление минимального полинома для матрицы M по
переменной x.
norm(M) вычисление нормы матрицы M.
orthog(M) проверка ортогональности матрицы M.
jordan(M) приведение матрицы M к жордановой форме.
hermite(M,x) получение эрмитовой формы матрицы M.
angle(v1,v2) вычисление угла между векторами v1 и v2 одинаковой длины.
basis(V) определение базиса для набора векторов V.
kernel(M) вычисление ядра матрицы M.
rank(M) вычисление ранга матрицы M.
rowspace(M) определение базиса векторного пространства, задаваемого
строками матрицы M.
colspace(M) определение базиса векторного пространства, задаваемого
столбцами матрицы M.
GramSchmidt(M) определение ортогонального базиса векторного пространства
генерируемого столбцами матрицы M.
sylvester(pol1,pol2,x) вычисление матрицы Сильвестра для полиномов pol1 и
pol2, зависящих от переменной x.
curl(v,x) вычисление ротора трехмерного вектора v по трем переменным x.
grad(v,x) вычисление градиента вектора v по переменным x.
diverge(f,x) вычисление дивергенции функции f по переменным x.
laplacian(f,x) вычисление Лапласиана функции f по переменным x.
jacobian(v,x) вычисление матрицы Якоби для вектора v по переменным x.
Оглавление
Команды работы со структурой матриц и векторов.
rowdim(M) число строк матрицы M.
coldim(M) число столбцов матрицы M.
vectdim(v) число элементов вектора v.
convert(list,vector) преобразование переменной типа list в вектор.
convert([list1,...,listn],matrix) преобразование набора переменных типа list в
матрицу.
hilbert(n) создание Гильбертовой матрицы размерности nn.
addcol(M,i1,i2,expr) формирование новой матрицы, получаемой из матрицы M
прибавлением к столбцу i2 столбца i1, умноженного на выражение expr.
addrow(M,i1,i2,expr) аналогична addcol, только для работы со строками
матрицы M.
row(M,i) выделение i-ой строки из матрицы M.
col(M,i) выделение i-го столбца из матрицы M.
сoncat(M1,M2) cлияние матриц M1 и M2.
submatrix(M,i1..i2,j1..j2) выделение подматрицы из матрицы M со строками от
i1 до i2 и столбцами от j1 до j2.
subvector(v,i..j) выделение подвектора из v с элементами v[i],...,v[j].
delrows(M,i..j) уничтожение столбцов с номерами от i до j у матрицы M.
delcols(M,i..j) уничтожение строк с номерами от i до j у матрицы M.
Поясним работу некоторых из перечисленных команд следующим примером:
#подключение пакета линейной алгебры
> with(linalg):
Warning: new definition for norm
Warning: new definition for trace
# задание матрицы M
> M:=matrix(3,3,[[1,2,3],[4,5,6],[7,8,9]]);
M:=
# вычисление определителя матрицы M
> det(M);
0
# вычисление ранга матрицы M
> rank(M);
2
# вычисление спектра матрицы M
> eigenvals(M);
# добавление 1 к диагональным элементам матрицы M
> M:=evalm(M+1);
M:=
# вычисление обратной к M матрицы
> evalm(1/M);
# задание вектора v с элементами x,y,z
>v:=array(1..3,[x,y,z]);
v:= [x y z]
# умножение матрицы M на вектор v
> u:=multiply(M,v);
u:=[2x+2y+3z 4x+6y+6z 7x+8y+10z]
# определение размерности вектора v
> vectdim(u);
3
# вычисление cкалярного произведения векторов v и u
> f:=dotprod(u,v);
f:=(2x+2y+3z)x+(4x+6y+6z)y+(7x+8y+10z)z
# вычисление дивергенции вектора u
> diverge(u,v);
18
# вычисление градиента функции f
> grad(f,v);
[4x+6y+10z 6x+12y+14z 10x+14y+20z]
# вычисление матрицы Якоби для вектора u по переменным v
> jacobian(u,v);
# вычисление характеристического многочлена для матрицы Якоби
> charpoly(",lambda);
# выделение подматрицы из матрицы M
> submatrix(M,2..3,1..3);
Оглавление
Программирование в среде Maple.
В пакете Maple для реализации алгоритмов и написания программ, существует
набор основных конструкций аналогичный существующим в известных языках
программирования ( например, язык PASCAL). Перечислим их.
Условный оператор
if bool1 then expr1 else expr2 fi
Эта конструкция дает возможность в зависимости от логического условия bool1
выполнять выражение expr1 (когда bool1=true), или выражение expr2
(bool1=false). Условный оператор должен быть закрыт при помощи служебного
слова fi. Например:
> if 1/3<5/6 then 12/21 else 21/12 fi;
Расширенный вариант условного оператора имеет вид:
if bool1 then expr1 elif bool2 then expr2 ... elif booln then exprn else expr0 fi
Оглавление
Операторы цикла.
В программе Maple имеются следующие операторы цикла:
for var1 from val1 by val2 to val3 do expr od
Данный оператор позволяет выполнять выражение expr при изменении
переменной var1, которая меняется от значения val1 c шагом val2, пока
значение val1 меньше или равно val3. Телом оператора цикла является
последовательность команд между служебными словами do...od. Например:
> for i from 0 by 4 to 8 do print(i); od;
0
4
8
Оператор цикла типа 'пока' имеет вид:
while bool do expr od
Тело цикла expr выполняется, пока значение логического выражения bool=true,
и выполнение прекращается, если bool=false. Например:
> j:=0:
> while j<5 do j:=(j+1)^j od;
1
2
9
Еще один оператор цикла выглядит следующим образом:
for var from val1 by val2 while bool1 do expr od
Тело цикла expr выполняется, пока логическое выражение bool1 является
истинным, переменная var изменяется от значения val1 с шагом val2. Например:
> for x from 1 by 2 while x<6 do print(x) od;
1
3
5
Последним оператором цикла будет:
for var in expr1 do expr2 od
В данном случае выполняется тело цикла expr2 (то есть последовательность
команд между do...od), когда переменная var последовательно принимает
значения каждого слагаемого выражения expr1. Например:
> for i in x^2+9*x-1 do i/x od;
x
9
-1/x
Оглавление
Процедуры.
Процедура на Maple-языке выглядит следующим образом:
name:=proc( формальные параметры)
выражения от формальных параметров
end;
Вызов процедуры осуществляется по имени. Возвращаемым значением по
умолчанию является значение последнего оператора из тела процедуры.
Например, процедура с именем f, вычисляющая сумму переменных x и y :
> f:=proc(x,y)
> x+y;
> end;
Результатом вызова f(u,sin(v)) будет выражение: u+sin(v).
При написании процедур можно вводить локальные, определенные только
внутри данной процедуры, переменные, используя описатель local. Для
присвоения результату работы процедуры различных значений и выхода из нее
в любом месте тела процедуры используется команда RETURN(val). Для
сигнализации об ошибке и выхода из процедуры используется команда
ERROR(`string`). Таким образом, общий вид процедуры:
name:=proc(parameters)
local val1,...,valn;
if bool1 then RETURN(res1)
else expr1; expr2; ...ERROR(`error of procedure`); exprn;
fi;
res2;
end;
В пакете Maple процедура-функция задается следующим образом:
name:=(parameters)->expr.
Например:
> f:=(x,y)->x+y;
f:=(x,y)x+y
> simplify( f(sin(x)^2,cos(x)^2) );
1
Для задания функции переменной var со значениями expr используется команда
unapply(expr,var)
Эта команда полезна при определении новой функции через известную или
когда вычисленное выражение предполагается использовать как функцию.
Например,
> df:=unapply(diff(f(x,y),x),x);
1
Оглавление
Команды ввода/вывода.
В данном разделе приводятся некоторые процедуры ввода-вывода. Программа
Maple предоставляет возможность представлять и сохранять полученные
результаты в различных форматах: Maple-формате, в формате языка C, в
формате языка FORTRAN, в формате редактора LaTeX. Вывод выражения в
виде FORTRAN-операторов осуществляется по команде: fortran([выражение]);
для вывода результатов в синтаксисе языка C необходимо подключить
соостветствующую библиотеку readlib(C), после чего используется команда
C([выражение]); для получения LaTeX формата применяются команды:
latex(выражение) или latex(выражение,`имя файла`).
Для сохранения результатов работы на диске необходимо выполнить команду:
writeto(`name.ext`) - после этого все результаты будут записаны в файл с
именем name. В зависимости от расширения файла ext тип файла может быть
различным (расширение ms - файл Maple-сеанса, m - внутренний Maple-файл, в
остальных случаях - текстовый файл). Для выдачи на экран в качестве имени
файла указывается terminal (т.е. после команды writeto(`terminal`): все
результаты снова выводятся на экран). Поясним данные команды примером:
> writeto(`res.txt`);
> fortran([s=a]); readlib(C): C([s=a]);
> latex(Int(x,x)); writeto (`terminal `);
В результате работы данных команд в файл res.txt будет записаны следующие
строки:
s=a
s = a;
\int \!x{dx}
Для считывания числовой информации из файла используется команда:
readdata(name,options,posint) - где name - имя файла, options - тип переменных
(integer /float), posint - счетчик чисел (т.е. сколько считывать чисел из строки).
Считанная информация представляется в виде переменной типа list. Перед
обращением к данной команде ее необходимо подключить командой
readlib(readdata):.
Например, пусть в текстовом файле a.txt в строке находятся числа: 1 2 3 4 5 6 7
8 9. Ниже приведенная последовательность команд считывает данную
информацию из файла в переменную u, после чего вычисляются сумма и
произведение данных чисел.
> readlib(readdata):
> data:=readdata(`a.txt`,integer,9);
u:=[[1,2,3,4,5,6,7,8,9]]
> sum(data[1][k],k=1..9); product(data[1][k],k=1..9);
45
362880
Двойная индексация у переменной типа list data связана с тем, что числа
записываются в двумерный массив, так что число строк массива равно числу
считанных строк, а число столбцов определено параметром posint.
Оглавление
Графика в MAPLE.
Одним из самых интересных применений пакетов компьютерной алгебры
является использование их графических возможностей для визуализации
результатов исследования. В пакете MAPLE имеется богатый набор команд и
процедур двумерной и трехмерной графики. Основные процедуры доступны
пользователю по умолчанию, доступ к другим становится возможным после
подключения графической библиотеки (команда with(plots)), или при полном
вызове команды (plots[имя команды] (параметры)). В качестве параметров при
вызове графических команд указывается выводимый объект (функция, набор
точек, множество и т.д.), интервал изменения переменных, опции вывода.
После вызова команды программа MAPLE переходит в меню графики. Опции
вывода могут изменяться пользователем при обращении к команде, а также в
интерактивном режиме при работе в меню графики. Для переноса полученной
картинки в текст MAPLE-документа (рабочее поле) ее нужно занести в буфер,
нажав комбинацию клавиш CTRL-C или выбрав этот пункт в меню графики,
затем перейти в режим работы с документом и скопировать содержимое
буфера, нажав CTRL-V или указав пункт меню EDIT - PASTE. Ниже приведены
основные графические команды и опции. Подчеркиванием выделены опции
вывода графики, установленные по умолчанию.
Оглавление
Двумерная графика.
При вызове процедур двумерной графики пользователь может задавать
различные опции представления картинки. Основные опции :
title=`Заголовок` - название картинки,
coords=polar - тип координат (полярные или нет),
axes=NORMAL - тип выводимых осей координат (варианты: NORMAL - с
центром в начале координат, BOXED - график заключается в рамку с
нанесенной шкалой, FRAME - центр в левом нижнем углу, NONE - вывод без
нанесения осей ),
scaling=CONSTRAINED - тип масштабировки (CONSTRAINED - график
выводится с одинаковым масштабом по осям, UNCONSTRAINED - график
масштабируется по размеру графического окна),
style=LINE - вывод графика линией или точками (POINT ),
numpoints=n - число вычисляемых узлов графика (по умолчанию 49),
resolution=n - разрешение дисплея в точках (по умолчанию 200),
color=red - цвет вывода графика (red,blue,black...),
xtickmarks=nx или ytickmarks=ny - число пометок координат по осям X и Y.
Некоторые опции могут переопределяться при помощи соответствующих
пунктов меню работы с графиком.
Для команд fieldplot и gradplot существует дополнительная опция, которая
задает тип стрелок для изображения вектора:
arrows=line (или thin,slim,thick), по умолчанию thin.
Для команд fieldplot, gradplot и implicitplot существует дополнительная опция,
задающая число узлов для расчета на плоскости:
grid=[int1,int2], где int1 - число узлов по оси X, int2 - по Y. По умолчанию
grid=[20..20].
Вывод графиков функций одной переменной:
plot( {func1,func2...,funcn} ,x=a..b, y=c..d, options); - где func1,func2,... - MAPLEфункции от переменной x, a..b - интервал изменения переменной x, c..d вертикальный размер. Например, в результате выполнения команды
plot({x,x^2,exp(x)},x=-3..3,y=-10..10,title=`Graphs of functions y=x, y=x^2,
y=exp(x).`,axes=FRAME,xtickmarks=6,ytickmarks=10,color=black);
будет построен следующий график:
Вывод параметрически заданной кривой:
plot([funx(t),funy(t),t=a..b],options), где funx(t),funy(t) - функции координат,
зависящие от параметра t, a и b - интервал изменения параметра. Пример:
plot( [cos(3*t),t,t=0..2*Pi], numpoints=300, coords= polar, title = `Трилистник`,
axes= boxed, style=point);
Графический вывод набора точек :
plot([x1,y1,x2,y2,...,xn,yn],x=a..b,y=c..d,options), где [x1,y1,...] - набор точек,
который также может задаваться в виде: [[x1,y1],[x2,y2],...,[xn,yn]].
Кроме многофункциональной команды plot в пакете имеются следующие
процедуры двумерной графики:
densityplot(expr,var1=a..b,var2=c..d,options), - Рисование плотности функции
уровня для выражения expr, зависящего от переменных var1 и var2.
fieldplot([expr1,expr2],var1=a..b,var2=c..d,options), - изображение векторного
поля, определяемого выражениями expr1 и expr2, переменные var1 и var2
изменяются на отрезках [a,b], [c,d] соответственно.
gradplot(expr,var1=a..b,var2=c..d,options) - изображение векторного поля
градиента выражения expr, зависящего от переменных var1, var2.
implicitplot(expr=f,var1=a..b,var2=c..d,options) - изображение линии уровня
постоянного значения f для функции expr в прямоугольнике [a,b][c,d].
logplot(expr,var1=a..b,options) - график выражения expr в логарифмическом
масштабе по оси Y.
loglogplot(expr,var1=a..b,options) - график выражения expr в логариф-мическом
масштабе по осям X и Y.
poligonplot([pt1,pt2,...ptn]) - вывод n-угольника, заданного вершинами pt1,...,
причем последняя точка соединяется линией с первой.
polarplot([exprad,expang,var=a..b]) - вывод графика в полярных координатах, где
радиус и угол задаются соответственно выражениями exprad, expang,
зависящими от одной переменной var, изменяющейся на отрезке [a,b].
textplot([exprx,expry,string],options) - вывод текстовой строки string, начиная с
точки с координатами, задаваемыми выражениями exprx,expry.
setoptions(option1=expr1,...,optionn=exprn) - задание опций двумерной графики,
которые будут приниматься по умолчанию в данном сеансе работы.
display( [ pic1,pic2,...,picn] ) - вывод графических двумерных структур
pic1,...,picn на одной картинке в общих осях координат.
Работу некоторых перечисленных команд продемонстрируем на примере:
> f:=sin(x*y): with(plots):
>pic1:=implicitplot( f=1/2 , x=-Pi..Pi , y= -Pi..Pi,grid=[30,30], axes=
> NORMAL ):
> pic2:=gradplot(f,x=-Pi..Pi,y=-Pi..Pi, grid=[12,12], arrows=SLIM,
> axes=NORMAL, color =blue):
> pic3:=textplot([0,-3/2*Pi, cat ( `Поле градиента и линии уровня
> значения f=1/2. Функция f=`,convert(f,string),`.`)]):
> display([pic1,pic2,pic3]);
Заметим, что переменной может быть присвоен результат работы команды
графики, при этом внутренняя структура переменной содержит всю
необходимую информацию для построения графика. Для вывода изображения
должна быть выполнена команда display (для двумерной графики) или display3d
(для трехмерной графики).
Оглавление
Трехмерная графика.
В данном разделе приводятся наиболее популярные процедуры трехмерной
графики. Как и для двумерной графики, пользователь имеет возможность
управлять выводом при помощи опций (options). Перечислим основные опции
(подчеркиванием отмечены установки по умолчанию):
coords=opt - тип координат ( варианты: CARTESIAN, SPHERICAL или
CYLINDRICAL ),
title=string - вывод заголовка, содержащегося в строке string,
axes=opt - тип осей координат (FRAME, NORMAL, BOXED, NONE),
scaling=opt - тип масштабирования (UNCONSTRAINED, CONSTRAINED),
orientation=[angle1,angle2] - углы ракурса в градусах,
view=az..bz или view=[ax..bx,ay..by,az..bz] - выводимая на картинку область (все
за ее пределами отсекается),
projection=n - тип проекции, задается числом n[0,1],
style=opt - стиль вывода (POINT - точки, LINE - линии, HIDDEN - сетка с
удалением невидимых линий, PATCH - заполнитель, WIREFRAME -сетка с
выводом невидимых линий, CONTOUR - линии уровня, PATCHCONTOUR заполнитель и линии уровня),
shading=opt - функция плотности заполнителя (Z-по оси Z, XY - в зависимости
от координат XY, XYZ, ZGREYSCALE - по оси Z серыми полутонами, ZHUE,
NONE ),
grid=[i1,i2] - число узлов по осям X и Y для вычисления поверхности
(grid=[25,25]),
numpoints=n - число выводимых точек, эквивалентно grid=[,],
color=opt - цвет поверхности (red,blue,..),
light=[angl1, angl2, numr, numg, numb] - функция яркости по углам angl1, angl2,
определяемая процентами цветов красного (numr), зеленого (numg) и синего
(numb), изменяемых от 0 до 1,
ambientlight=[numr,numg,numb] - яркость по каждому направлению,
tickmarks=[i1, i2, i3] - число насечек на осях координат,
labels=[str1,str2,str3] - надписи на осях координат, задаваемые строками
str1,str2,str3.
Вывод нескольких поверхностей, определяемых выражениями expr1, expr2,...,
зависящими от двух переменных var1[a,b], var2[c,d], осуществляется при
помощи команды:
plot3d({expr1,expr2,...,exprn},var1=a..b,var2=c..d,options).
Например:
>plot3d({x+y, sin(x*y)},x=-Pi..Pi,y=-Pi..Pi,orientation=[-48,56],view=-2..2, style=
HIDDEN ,axes=BOXED,shading=NONE,color=BLACK, labels=[`Ось X`,`Ось
Y`,`Ось Z`],title=`Две поверхности.`);
Параметрически заданную поверхность можно изобразить также при помощи
команды plot3d:
plot3d([expr1,expr2,expr3],var1=a..b,var2=c..d)
где координаты заданы выражениями expr1,expr2,expr3 от двух переменных
var1, var2, которые изменяются на отрезках [a,b], [c,d].
Например:
>plot3d([(5+cos(1/2*t)*u)*cos(t), (5+cos(1/2*t)*u)*sin(t) , sin(1/2*t) *u ] , t=0..2*Pi,
u=-1..1, grid=[60,10], scaling=CONSTRAINED, orientation =[-106, 70] ,
title=`Moebius band.`, axes = FRAMED , shading=ZGREYSCALE, tickmarks=
[5,8,3] ,labels=[`X-axis`,`Y-axis`,`Z-axis`]);
Кроме функции plot3d в программе Maple имеются следующие процедуры
трехмерной графики:
contourplot(expr,var1=a..b,var2=c..d,options) - вывод линий уровня функции
(expr) двух переменных (var1,var2). Идентична команде plot3d с опцией
style=CONTOUR.
cylinderplot(expr,var1=a..b,var2=c..d,options) - вывод поверхности, определяемой
выражением expr, заданным в цилиндрических координатах,
fieldplot3d([expr1,expr2,expr3],var1=a..b,var2=c..d,var3=e..f,options)- вывод
трехмерного векторного поля с компонентами заданными выражениями
expr1,expr2,expr3, зависящими от переменных var1,var2,var3, с заданными
интервалами изменения.
gradplot3d(expr,var1=a..b,var2=c..d,var3=e..f,options) - изображение трехмерного
поля градиента выражения expr, зависящего от трех переменных var1,var2,var3.
Переменные изменяются в заданных интервалах.
implicitplot3d(expr=g,var1=a..b,var2=c..d,var3=e..f,options) - изображение в
трехмерном пространстве (переменные var1,var2,var3) поверхности, на которой
выражение expr, зависящее от var1,var2,var3, имеет одинаковое значение g.
matrixplot(M) - рисование поверхности, заданной таблицей M.
pointplot([[x1,y1,z1],...[xn,yn,zn]],options) - вывод точек, заданных координатами
x,y,z.
polygonplot3d([pnt1,...,pntn]) - вывод трехмерного n-угольника, заданного
точками с координатами pnt1,...,pntn, причем первая точка соединяется с
последней.
spacecurve([exprx,expry,exprz],var=a..b,options) - рисование кривой в трехмерном
пространстве. Кривая задана параметрически выражениями exprx ( Xкоордината), expry (Y) и exprz (Z). Выражения exprx,expry,exprz должны
зависеть от одной переменной var.
sphereplot(expr,var1=a..b,var2=c..d,options) - вывод поверхности, заданной в
сферических координатах. Выражение expr задает радиус, зависящий от двух
угловых переменных var1 и var2.
surfdata([[x1,y1,z1],...[xn,yn,zn]],options) - рисование поверхности, проходящей
через заданные точки. Точки задаются своими координатами в трехмерном
пространстве (x,y,z).
textplot3d([exprx,expry,exprz],string) - вывод текстовой строки string с центром в
позиции, задаваемой координатами expx (X), expy (Y) и expz (Z).
tubeplot([exprx,expry,exprz],var=a..b,,radius=r) - рисование поверхности,
определяемой параметрически заданной пространственной кривой. Кривая
задается выражениями exprx ( X-координата), expry (Y) и exprz (Z) и радиусом
r. Выражения exprx,expry,exprz должны зависеть от одной переменной var.
setoptions3d(options1=exp1,...,optionsn=expn) - управление опциями трехмерной
графики, принимаемыми по умолчанию.
display3d([pic1,pic2,...,picn]) - вывод n трехмерных графических структур
(pic1,...,picn) в общих осях координат.
Приведенный ниже пример демонстрирует работу некоторых процедур
трехмерной графики.
> with(plots):
> pic1:= sphereplot ( (1.3)^z*sin(theta) ,z=-1..2*Pi, theta=0..Pi, style=
> HIDDEN, shading=NONE):
> pic2:=pointplot([[4,-3,2],[-2,3,-1]],color=blue):
> pic3:=textplot3d([4,-3,2.6,`Point1`],color=black):
> pic4:=textplot3d([-2,3,-0.4,`Point2`],color=black):
> pic5:=spacecurve([5-t,3-0.5*sin(4*t),t-2],t=0..5,color=black):
> pic6:=textplot3d([2,3,-0.5,`Curve`],color=red):
> display3d([pic1,pic2,pic3,pic4,pic5,pic6]);
В результате работы данных команд получим рисунок:
Оглавление
Приложение. Список пакетов и библиотек.
combinat комбинаторика.
DEtools дифференциальные уравнения.
difforms дифференциальные формы.
Gauss Гаусса пакет.
GaussInt Гаусса целочисленный пакет.
genfunc Пакет манипуляций с функциями.
geom3d трехмерная геометрия.
geometry геометрия.
GF поля Галуа.
grobner базис Гребнера-Ширшова.
group теория групп.
liesymm группы Ли.
linalg линейная алгебра.
logic математическая логика.
networks теория графов.
NPspinor Ньюмана-Пенроуза формализм.
numaprox численная аппроксимация.
numtheory теория чисел.
orthopoly ортогональные полиномы.
padic p-адические числа.
plots Графический пакет
powseries формальные степенные разложения.
projgeom проективная геометрия.
simplex линейная оптимизация.
stats статистика.
student Студенческий пакет. Содержит команды, позволяющие делать выкладки
пошагово.
totorder упорядочение.
Оглавление
Приложение. Список имен математических функций.
Математическая запись и cоответствующая Maple-запись:
- exp(x)
lnx - ln(x) или log(x)
- log10(x)
- log[a](x)
- sqrt(x)
| x | - abs(x)
Сигнум - signum(x)
n! - n!
Тригонометрические функции (аргументы в радианах):
sin, cos, tan, cot, sec, csc.
Обратные тригометрические функции:
arcsin, arccos, arctan, arccot, arcscs, arccsc
Гиперболические функции:
sinh, cosh, tanh, coth, sech, csch.
Обратные гиперболические функции:
arcsinh, arccosh, arctanh, arccoth, arcsech, arccsch.
Дельта-функция Дирака
(t) - Dirac(t)
Бесселевы функции:
- BesselJ(p,x)
- BesselY(p,x)
- BesselI(p,x)
- BesselK(p,x)
О многих других функциях можно узнать при помощи HELP или команд
?inifcns ?numtheory ?combinat ?stats ?orthopolys
Оглавление
Приложение. Пункты меню Windows-версии
Основное меню Windows-версии состоит из пяти пунктов: меню работы с
файлами File, меню редактирования Edit, меню оформления документа Format,
дополнительного меню Options с командами, управляющими
функционированием рабочего поля, и меню справки Help.
Приведем описание пунктов меню. Рядом с названием пункта будем указывать
эквивалентную по действию комбинацию клавиш. Многоточиями снабжены
пункты, вызывающие дополнительные меню или запросы. Ряд пунктов
является переключателями - задающими или отключающими некоторый
режим. Включение переключателя отмечается в меню служебным символом 'ь'.
Меню работы с файлами File содержит следующие подпункты:
New ? Начало работы с новым файлом;
Open ? Считывание файла с диска;
Save ? Сохранение текущего файла;
Save as... ? Сохранение файла под новым именем;
Save Settings ? Сохранение установок Maple;
Print... ? Печать документа;
Print Setup... ? Установка параметров печати;
Page Margins... ? Установка параметров страницы;
Exit ? Выход из программы.
Меню редактирования Edit:
Cut Ctrl+X ? Удаление выделенного текста с сохранением в буфере;
Copy Ctrl+C ? Копирование выделенного текста в буфер;
Paste Ctrl+V ? Копирование текста из буфера, начиная с места, указанного
курсором;
Delete Delete ? Удаление выделенного текста;
Copy to... ? Копирование содержимого буфера в файл.
Меню оформления документа Format:
Text Region F5 ? Превращение строки ввода в текстовую строку и наоборот.
Join Region F3 ? Слияние текущей и предыдущей строки;
Split Region F4 ? Разделение текущей строки на две.
Insert Page Break ? Вставка жесткого разделителя страниц.
Insert New Region ? Добавление строки ввода:
Above Ctrl+O ? перед текущей;
Below Ctrl+I ? после текущей.
Remove All ? Удаление
Input ? строки ввода,
Output ? строки вывода,
Text ? текстовой строки,
Graphics ? графика,
Fonts ? Назначение фонтов:
Input ? ввода,
Output ? вывода,
Text ? текста.
Math Style ? Определение размера математических символов:
Large ? большой,
Medium ? средний,
Small ? маленький,
Character ? задание шрифтов и размеров символов.
Дополнительное меню Options:
Replace mode ? переключатель режима ввода: вставка/замена.
Show separators F9 ? показ разделителей (переключатель).
Show prompts F10 ? показ приглашения ввода (переключатель).
Status Window F2 ? показ окна статуса, информирущего об использованных
Maple памяти и времени (переключатель).
Save Session State ? сохранение текущего (внутреннего) состояния сессии.
Confirmation Checks ? Отказ от обязательного подтверждения ряда операций
(выход, удаление).
Fast Graphics Redraw ? Указание сохранять все трехмерные графики в памяти.
Это полезно при работе с несколькими графиками и переключении с одного на
другой.
Automatic Save Settings ? автоматическое сохранение текущего состояния.
Continuos mode ? Режим перехода к следующей области экрана после
выполнения текущей без вставки новой области.
Insert mode ? Режим вставки новой области экрана после выполнения текущей.
Insert at end mode ? Режим перехода к следующей области экрана после
выполнения текущей с добавлением новой области в конце документа.
Меню справки Help:
Browser... F1 ? просмотр возможностей языка, команд и синтаксиса Maple.
Многие команды имеют свои файлы справки, содержимое которых, в том числе
примеры работы, может быть перенесено в рабочее поле.
Interface Help... Shift+F1 ? справка по интерфейсу Windows версии Maple.
About Maple V for Windows... ? информация о Maple для Windows.
Оглавление
Литература
1. B.W. Char, K.O. Geddes, G.H. Gonnet, B.L. Leong, M.B. Monagan, S.M. Watt .
First Leaves: A Tutoral Introduction to Maple V. Springer-Verlag New York, 1992
2. Darren Redfern. The Maple Handbook. Springer-Verlag New York, 1993
Оглавление
Download