Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
> 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]);
.8414709848, .5403023059, 1.557407725> sin(1.0), cos(1.0), tan(1.0);
.8414709848, .5403023059, 1.5574077253.5.4. Вывод выражений
При выполнении порой даже простых операций результаты получаются чрезвычайно громоздкими. Для повышения наглядности выражений Maple выводит их с выделением общих частей выражений и с присваиванием им соответствующих меток. Метки представлены символами %N, где N — номер метки.
Помимо меток при выводе результатов вычислений могут появляться и другие специальные объекты вывода, например корни RootOf, члены вида O(x^n), учитывающие погрешность при разложении функций в ряд, и обозначения различных специальных функций, таких как интегральный синус, гамма-функция и др. Примеры такого вывода приведены ниже:
> solve(х^7-х^2-1,х);
½+½I√3, ½-½I√3, RootOf(_Z5 + _Z4 - _Z2 - _Z - 1, index = 1), RootOf(_Z5 + _Z4 - _Z2 - _Z - 1, index = 2), RootOf(_Z5 + _Z4 - _Z2 - _Z - 1, index = 3 ), RootOf(_Z5 + _Z4 - _Z2 - _Z - 1, index = 4), RootOf(_Z5 + _Z4 - _Z2 - _Z - 1, index = 5)> taylor(sin(x),x,5);
Часто встречаются также знаки ~ для отметки предполагаемых переменных, постоянные интегрирования и другие специальные обозначения. По мере упоминания в тексте таких объектов вывода они будут описаны.
3.5.5. Работа с частями выражений
Выражения (expr) или уравнения (eqn) обычно используются как сами по себе, так и в виде равенств или неравенств. В последнем случае объекты с выражениями имеют левую и правую части. Для простейших манипуляций с выражениями полезны следующие функции:
• cost(a) — возвращает число сложений и умножений в выражении а (функция пакета codegen);
• lhs(eqn) — выделяет левую часть eqn;
• rhs(eqn) — выделяет правую часть eqn;
• normal(expr) — дает нормализацию (сокращение) expr в виде дроби;
• numer(expr) — выделяет числитель expr;
• denom(expr) — выделяет знаменатель expr.
Ввиду очевидности действия этих функций ограничимся наглядными примерами их применения:
> with(codegen,cost):
> cost(х^3+b^2-х);
2 additions + 3 multiplications> lhs(sin(x)^2+cos(x)^2=1);
sin(x)² + cos(x)²> rhs(sin(x)^2+cos(x)^2=1);
1> normal(2/4+3/6+6/12);
> f:=5*(a-b)^2/(а^2-2*а*b-b^2);
> numer(f);
5 (a-b)²> denom(f);
a²-2ab-b²Обратите внимание на то, что в старых версиях (до Maple 7) загрузка библиотечной функции cost выполнялась иначе — командой readlib(cost). Это обстоятельство может служить причиной неверной работы документов, созданных в старых версиях Maple, в среде последующих версий Maple.
3.5.6. Работа с уровнями вложенности выражений
В общем случае выражения могут быть многоуровневыми и содержать объекты, расположенные на разных уровнях вложенности. Приведем две функции для оценки уровней выражений и списков:
• nops(expr) — возвращает число объектов первого уровня (операндов) в выражении expr;
• op(expr) — возвращает список объектов первого уровня в выражении expr;
• op(n,expr) — возвращает n-й объект первого уровня в выражении expr. Ниже представлены примеры применения этих функций:
> nops(а+b/с);
2> op(a+b/c);
> op(1,a+b/c);
а> op(2,a+b/c);
Рекомендуется просмотреть и более сложные примеры на применение этих функций в справке.
3.5.7. Преобразование выражений в тождественные формы
Многие математические выражения имеют различные тождественные формы. Порою преобразование выражения из одной формы в другую позволяет получить результат, более удобный для последующих вычислений. Кроме того, различные функции Maple работают с разными формами выражений и разными типами данных. Поэтому большое значение имеет целенаправленное преобразование выражений и данных.
Основной функцией для такого преобразования является функция
convert: convert(expr, form, arg3,...)
Здесь expr — любое выражение, form — наименование формы, arg3, … — необязательные дополнительные аргументы.
convert — простая и вместе с тем очень мощная функция. Ее мощь заключается в возможности задания множества параметров. Их полный перечень (около восьмидесяти наименований) можно найти в справке по функции convert. Многие из этих параметров очевидны с первого взгляда, поскольку повторяют наименования типов чисел, данных или функций. Например, опции binary, decimal, hex и octal преобразуют заданные числа в их двоичное, десятичное, шестнадцатиричное и восьмеричное представление. Параметр vector задает преобразование списка в вектор (напоминаем, что список и вектор — разные типы данных), а параметр matrix — в матрицу. Приведем примеры применения функции convert (файл expr1):
> convert(123,binary);
1111011> convert([a,b,с,d],`+`);
a + b + c + d> f:=seq(x[i]^n,i=1..4);
f:=x1n, x2n, x3n, x4n> x:='x'; convert(sinh(x),ехр);
x:= x> convert(1.234567,fraction);
> convert(1/7,float);
.1428571429> convert(sin(I*x),exp);
> convert(sinh(x),exp);
> convert(arcsinh(x),ln);
> convert(12345,list);
[12345]> convert(binomial(m,n),factorial);
> convert([[1,2],[3,4],[5,6]],table);
table([(1, 1) = 1, (2, 1) = 3, (2, 2) = 4, (3, 1) = 5, (3, 2) = 6, (1, 2) = 2])> convert(-Pi,signum);
-π> s:=taylor(sin(x),x,8);
> p:=convert(s,polynom);
> convert(p,float);
x-.1666666667x3 +.008333333333x5 -.0001984126984x7> f:=(х^4+х)/(x^2-1);
> convert(f, parfrac, x);
> s:=series(f,x,5);
s:= -x - x3 -x4 + O(x5)> convert(s,polynom);# Удаление члена ряда, описывающего погрешность
-х - х3 - х4Из этих примеров (их список читатель может пополнить самостоятельно) следует, что функция преобразования convert является одной из самых мощных функций Maple. С ее помощью можно получить множество различных форм одного и того же выражения.
3.5.8. Преобразование выражений
Еще одним мощным средством преобразования выражений является функция combine. Она обеспечивает объединение показателей степенных функций и преобразование тригонометрических и некоторых иных функций. Эта функция может записываться в трех формах:
combine(f)
combine(f, n)
combine(f, n, opt1, opt2,...)
Здесь f — любое выражение, множество или список выражений; n — имя, список или множество имен; opt1, opt2, … — имена параметров. Во втором аргументе можно использовать следующие функции:
@@ abs arctan conjugate ехр
ln piecewise polylog power product
Psi radical range signum trig
Примеры применения функции combine представлены ниже (файл expr1):
> combine(ехр(2*х)^2,ехр);
е(4x)> combine(2*sin(х)^2+2*cos(х)^2);
2> combine(sin(х)*cos(х));
½sin(2x)> combine(Int(х,x=a..b)-Int(х^2,x=a..b));
Эти примеры далеко не исчерпывают возможности функции combine в преобразовании выражений. Рекомендуется обзорно просмотреть примеры применения функции combine с разными параметрами, приведенные в справочной системе Maple.
3.5.9. Контроль за типами объектов
Выражения и их части в Maple рассматриваются как объекты. В ходе манипуляций с ними важное значение имеет контроль за типом объектов. Одной из основных функций, обеспечивающих такой контроль, является функция whattype(object), возвращающая тип объекта, например string, integer, float, fraction, function и т.д. Могут также возвращаться данные об операторах. Примеры применения этой функции даны ниже (файл control):
> whattype(2+3);
integer> whattype(Pi);
symbol> whattype(123./5);
float> whattype(1/3);
fraction> whattype(sin(x));
function> whattype([1, 2, 3, a, b, c]);
list> whattype(a+b+c);
+> whattype(a*b/c);
*> whattype(a^b);
^> whattype(1+2+3=4);