Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
3.4.5. Пакет для работы с гауссовыми целыми числами — GaussInt
Гауссово целое число — это число вида а+I*b, где а и b — любые целые рациональные числа. Таким образом они образуют решетку всех точек с целыми координатами на плоскости комплексных чисел. Пакет GaussInt содержит достаточно представительный набор функций для работы с этими числами:
> with(GaussInt);
Warning, the name Glgcd has been redefined
[GIbasis, GIchrem, GIdivisor, GIfacpoly, GIfacset, GIfactor, GIfactors, GIgcd, GIgcdex, GIhermite, GIissqr, GIlcm, GImcmbine, GInearest, GInodiv, GInorm, GInormal, GIorder, GIphi, GIprime, Glquadres, GIquo, GIrem, GIroots, GIsieve, GIsmith, GIsqrfree, GIsqrt, GIunitnormal]Нетрудно заметить, что в этот набор входят уже известные числовые функции, к именам которых добавлены буквы GI. Например, функция GIfactor(c) раскладывает гауссово число (в том числе комплексное) на простые множители, GIgcd(c1,c2) находит наибольший общий делитель гауссовых чисел с1 и с2 и т.д. В связи с этим в особых комментариях пакет не нуждается.
3.5. Расширенные возможности Maple в работе с выражениями
3.5.1. Ввод выражений
Фактически Maple — это система для манипулирования математическими выражениями. Выражение в системе Maple — объект, вполне соответствующий сути обычного математического выражения. Оно может содержать операторы, операнды и функции с параметрами.
Выражения в Maple могут оцениваться и изменяться в соответствии с заданными математическими законами и правилами преобразований. Например, функция упрощения выражений simplify способна упрощать многие математические выражения. Maple автоматически упрощает некоторые выражения, например, такие, как х+0, х-0, 1*х, х/1 и т.д. Но функцию можно применять и для выражений, записанных в качестве ее параметра в круглых скобках (файл expr):
> simplify(sin(х)^2+cos(х)^2) ;
1> simplify((х^2-2*х*а+а^2)/(х-а));
x-аВажно отметить, что один и тот же результат может быть получен от многих выражений. Поэтому получение исходного выражения по упрощенному возможно далеко не всегда, а чаще всего просто вообще невозможно.
Для выполнения любых математических операций необходимо обеспечить ввод в систему исходных данных — в общем случае математических выражений. Для ввода их и текстовых комментариев служат два соответствующих типа строк ввода. Переключение типа текущей строки ввода осуществляется клавишей F5. Строка ввода математических выражений имеет отличительный символ >, а строка ввода текстов такого признака не имеет.
В строке ввода может располагаться несколько выражений. Фиксаторами (указанием, что выражение окончено) их могут быть символы ; (точка с запятой) и : (двоеточие). Символ «;» фиксирует выражение и задает вывод результатов его вычисления. А символ «:» фиксирует выражение и блокирует вывод результатов его вычисления. Фиксаторы выполняют также функцию разделителей выражений, если в одной строке их несколько.
Ввод выражения оканчивается нажатием клавиши Enter. При этом маркер ввода (жирная мигающая вертикальная черта) может быть в любой позиции строки. Если надо перенести ввод на новую строку, следует нажимать клавиши Shift и Enter совместно. С помощью одного, двух или трех знаков % (в реализациях до Maple V R5 это был знак прямых кавычек ") можно вызывать первое, второе или третье выражение с конца сессии (файл expr):
> а:b:с:
> %;
с> а:b:с:
> %%;
b> a:b:c:
> %%%;
a> 2+3:
> %;
5> %%+5;
10Особая роль при вводе выражений принадлежит знакам прямого апострофа (одиночного ' или двойного "). Заключенное в такие знаки выражение освобождается от одной пары (закрывающего и открывающего знаков '):
> ''factor(а^2+2*а*b^2+b^2)'';
'factor(a² +2 ab² +b²)'> %;
factor(a² +2 ab² +b²)> factor(а^2+2*а*b+b^2);
(a + b)²Некоторые другие возможности обрамления выражений апострофами мы рассмотрим позже. Наиболее важная из них — временная отмена выполненного ранее присваивания переменным конкретных значений.
Для завершения работы с текущим документом достаточно исполнить команду quit, done или stop, набранную в строке ввода (со знаком ; в конце).
3.5.2. Оценивание выражений
Встречая выражение, Maple оценивает его, то есть устанавливает возможность его вычисления и, если возможно, вычисляет его. Если выражение — скалярная переменная, то ее значение будет выведено в ячейке вывода. Для переменных более сложных типов выводится не их значение, а просто повторяется имя переменной. Просто повторяются также имена неопределенных переменных.
Для оценивания выражений различного типа существует группа функций, основные из которых перечислены ниже:
• eval(array) — возвращает вычисленное содержимое массива array;
• evalf(expr, n) — вычисляет expr и возвращает вычисленное значение в форме числа с плавающей точкой, имеющего n цифр после десятичной точки;
• evalhf(expr) — вычисляет expr и возвращает вычисленное значение с точностью, присущей оборудованию данного компьютера;
• evalf(int(f, x=a..b)) — оценивает и возвращает значение определенного интеграла int(f,x=a..b);
• evalf(Int(f, x=a..b)) — оценивает и возвращает значение определенного интеграла, заданного инертной функцией Int(f,x=a..b);
• evalf(Int(f, x=a..b, digits, flag)) — аналогично предыдущему, но возвращает значение интеграла с заданным параметром digits числом цифр после десятичной точки и со спецификацией метода вычислений flag;
• evalm(mexpr) — вычисляет значение матричного выражения mexpr и возвращает его;
• evalb(bexpr) — вычисляет и возвращает значения логических условий;
• evalc(cexpr) — вычисляет значение комплексного выражения;
• evalr(expr, ampl) — оценивает и возвращает значения интервальных выражений (функция должна вызываться из библиотеки);
• shake(expr, ampl) — вычисляет интервальное выражение.
Для функции evalf параметр n является необязательным, при его отсутствии полагается n=10, то есть вещественные числа по умолчанию выводятся с мантиссой, имеющей десять цифр после десятичной запятой.
В выражении expr могут использоваться константы, например, Pi, ехр(1), и функции, такие как ехр, ln, arctan, cosh, GAMMA и erf. В матричном выражении mexpr для функции evalm могут использоваться операнды в виде матриц и матричные операторы &*, +, - и ^. В комплексных выражениях cexpr наряду с комплексными операндами вида (а+I*b) могут использоваться многие обычные математические функции:
Sin cos tan csc sec cot
Sinh cosh tanh csch sech coth
Arcsin arccos arctan arccsc arcsec arccot
Arcsinh arccosh arctanh arccsch arcsech arccoth
Exp ln sqrt ^ abs conjugate
Polar argument signum csgn Re Im
Ei LambertW dilog surd
Примеры применения функций оценивания даны ниже (файл eval):
> А: = [[1,2],[3,4]];
А:= [[1,2], [3, 4]]> eval(А);
[[1,2], [3, 4]]> evalf(sin(1));
.8414709848> evalf(sin(2)^2+cos(2)^2,20);
1.0000000000000000000> evalhf(sin(1));
.841470984807896505> evalm(20*A+1);
> 1<3;
1<3> evalb(1<3);
true> readlib(shake) : evalr(min(2,sqrt(3) )) ;
√3> evalr(abs(x));
INTERVAL(INTERVAL(, 0..∞), -INTERVAL(, -∞..0))> shake(Pi,3);
INTERVAL(3.1102..3.1730)В дальнейшем мы многократно будем применять функции оценивания для демонстрации тех или иных вычислений.
3.5.3. Последовательности выражений
Maple может работать не только с одиночными выражениями, но и с последовательностями выражений. Последовательность выражений — это ряд выражений, разделенных запятыми и завершенный фиксатором (файл expr1):
> a, y+z, 12.3, cos(1.0);
a, y + z, 12.3, .5403023059Для автоматического формирования последовательности выражений применим специальный оператор $, после которого можно указать число выражений или задать диапазон формирования выражений:
> f$5;
f,f,f,f,f> $1..5;
1, 2, 3, 4, 5> (n^2)$5;
n², n², n², n², n²> (n^2)$n=0..5;
0, 1, 4, 9, 16, 25> Vl[i]$i=1..5;
Vl1, Vl2, Vl3, Vl4, Vl5Для создания последовательностей выражений можно использовать также функцию seq:
> seq(sin(х),х=0..5);
0, sin(1), sin(2), sin(3), sin(4), sin(5)> seq(sin(x*1.),x=0..5);
0., .8414709848, .9092974268, .1411200081, -.7568024953, -.9589242747> seq(f1(1.),f1=[sin,cos,tan]);