Глава 1
Основные правила работы в Maple. Элементарная математика
Окно Maple имеет обычный вид для предложения Windows:
Раскладка клавиатуры в Maple английская (En). Все вычисления выполняются в рабочем документе(так называемом “worksheet”). Работа производится по секциям, каждая секция обозначается левой квадратной скобкой, объединяющей строку ввода(командную) и полученный результат. Правила редактирований командной строки стандартные, как в любом текстовом редакторе.
Работа в Maple проходит в режиме сессии– пользователь вводит предложения (команды, выражения, процедуры), которые воспринимаются условно и обрабатываются Maple. Рабочее поле разделяется на три части:
1)область ввода - состоит из командных строк. Каждая командная строка начинается с символа > и имеет красный цвет;
2)область вывода - содержит результаты обработки введенных команд в виде аналитических выражений, графических объектов или сообщений об ошибке, результаты автоматически выравниваются по центру и окрашиваются в синий цвет;
3)область текстовых комментариевсодержит любую текстовую
информацию, |
которая |
может |
пояснить |
выполняемые |
процедуры. |
||
Текстовые |
строки |
не |
воспринимаютсяMaple |
и |
никак |
не |
|
обрабатываются. |
|
|
|
|
|
|
|
Для переключения командной строки в текстовую, |
|
|
|||||
следует на Панели инструментов нажать |
мышью |
на |
|
|
|||
кнопку |
|
|
|
|
|
|
|
Обратное переключение текстовой строки в командную осуществляется нажатием на Панели инструментов на кнопку
5
Обнаружив ошибку, Maple печатает в следующей строке сообщение о ней. Если ошибка синтаксическая, то первый неправильный символ отмечается символом “^”. Самый распространенный вид ошибки – отсутствие скобки; в этом случае после нажатия<Enter> курсор останавливается перед оператором вывода результата(;), в остальных – перед неверным символом.
Результаты работы могут быть сохранены в файлах различных форматов. По умолчанию все результаты работы(области ввода и вывода, комментарии) сохраняются в файле с расширением‘ms’. Если задан режим сохранения сессии(‘Save Kernel’), то в файле с расширением‘m’ сохранятся значения переменных и коды введенных процедур. При записи в файлы с другим расширением сохраняются только области ввода и тексты комментариев.
Оператор “;” (точка с запятой) – оператор вывода результата на рабочий лист. При его наличии после нажатия клавиши<Enter> (в каком бы месте строки не находился курсор) или щелчка левой кнопки мыши по
кнопке на панели инструментов проводятся вычисления и результат выводится на рабочий лист. Например:
> 8+2;
10
> x:=2;(x^3-x^2)/2;
x:= 2 2
> cos(Pi/2);
0
Последний, предпоследний и предпредпоследний результаты Maple сохраняет под именами %, %% и %%% соответственно. Действительно:
> %+%%+%%%;
4
Особое внимание необходимо обратить на, что система различает строчное и заглавное написание букв.
Команда restart очищает память, то есть все определенные до этого переменные и другие объекты уничтожаются. Но внешний вид окна редактора не меняется, операторы и процедуры остаются неизменными. Пример:
> z:=(x+3-sin(x^2));
z := x + 3 - sin( x2 )
> restart; z;
6
z
Maple выдает в качестве результата имя самой переменной, т. . идентификатору z не присвоено никакое значение.
Переменная Digits устанавливает количество значащих цифр (точность), которыми будет оперировать Maple при работе. По умолчанию значение этой переменной равно 10. Пример:
> evalf(Pi);
3.141592654
> Digits:=40:evalf(Pi);evalf(Pi,20);
3.14159265358979323846264338327950288419
3.1415926535897932385
Вычисление числовых выражений производится при помощи стандартной функции evalf(x,n), где x – числовое выражение, n – необязательный параметр, его значение определяется переменной Digits.
Комплексное число записывается в алгебраической форме z=x+iy, и в командной строке такая запись должна выглядеть так:
> z:=x+I*y;
z := x + y I
Если z=x+iy, то комплексно сопряженное ему выражениеw=z*=x– iy можно найти с помощью команды conjugate(z):
> w:=conjugate(z);
w := ( x + y I )
Константы, арифметические операции и функции
Для записи выражений используются следующие математические константы:
Pi |
число p |
I |
мнимая единица i |
infinity |
бесконечность |
Gamma |
константа Эйлера |
true, false |
логические константы, обозначающие |
|
истинность и ложность высказывания |
Знаки арифметических операций:
“+” - сложение; “–” - вычитание; “*” - умножение; “/” - деление; “^” , “**” - возведение в степень; “!” – факториал, “:=” - присваивание. Пример:
> y:=4!/((x^2+5*x-12)**(x-5));
24
y :=
( x - 5 )
( x 2 + 5 x - 12 )
В частности при помощи оператора присваивания определяются функции. Самый простой способ задания функцииf:=<аналитическое выражение>. Но этот способ неудобен тем, что при таком заданииMaple игнорирует запись f(a) и значение f(a) приходится вычислять встроенной функцией подстановки subs(x=a,f) – подставить х=а в f:
> f:=x^2+2*x+1;
f := x2 + 2 x + 1
> subs(x=2,f);
9
Более длинный способ, не имеющий этого недостатка и называемый основным, выглядит так:
> f:=x->x^2+2*x+1;
f := x ® x2 + 2 x + 1
> f(2);
9
Присваивание отменяется при помощи оператораf:=’f’, а все
предыдущие присваивания – команда restart, как |
мы уже оговаривали |
выше. Пример: |
|
> x:=5:x; |
|
5 |
|
> x:='x':x; |
|
x |
|
Имеется также изящный способ задания функции, как процедуры |
|
программирования, завершаемый нажатием <Enter>: |
|
<имя функции>:=proc(переменные) |
|
аналитическое выражение |
|
end; |
|
Например, введем функцию y = x2 + 2x +1 |
последним указанным |
способом:
>y:=proc(x)
>x^2+2*x+1
>end;
y := proc (x) x^2 + 2´x + 1 end proc
> y(2);
9
7 |
8 |
Для ввода функций, заданных несколькими аналитическими выражениями, можно использовать оператор условного переходаif, применяемый в следующих видах:
1) if <условие> then <следствие> fi;
Если выполнено условие, то выполняется следствие, в противном случае ничего не выполняется.
2) if <условие1> then <следствие1>
| elif <условие2> then <следствие2>| | else <следствие3>|
end if;
Если выполнено условие1, то выполняется следствие1, в противном случае проверяется условие2. Если условие2 истинно, то выполняется следствие2, иначе выполняется следствие3. Необходимо отметить, что эта конструкция включает в себя первую, т.к. текст в прямых скобках можно опустить.
3) `if`( условие, следствие1, следствие2);
Если выполнено условие1, то выполняется следствие1, иначе – следствие2. Это задание условного оператора в компактном виде.
Пример. Пусть необходимо задать функцию:
ìx2 , x £ 0,
f (x )= ïí2x, 0<x £ 1,
ïî1, x > 1.
Конструкция вида 3) по ее описанию будет иметь вид: > f:=`if`(x<=0,x^2,`if`(x>1,1,2*x));
f := if( x £ 0, x 2, if( 1 < x, 1, 2 x ) )
> subs(x=0.5,f);
if( 0.5 £ 0, 0.25, if( 1 < 0.5, 1, 1.0 ) )
> evalf(%);
1.0
Тот же принцип конструкции вида3) используется во встроенной функции piecewise:
> f:=piecewise(x<=0,x^2,x<=1,2*x,x>1,1);
ì x2 |
x £ 0 |
|
ï |
|
|
ï |
2 x |
x £ 1 |
f := ïí |
||
ï |
|
|
ï |
1 |
1 < x |
î |
В Maple используется общепринятые в математике названия для основных функций, но есть и некоторые исключения:
abs |
модуль |
Re |
действительная часть |
|
9 |
Im |
мнимая часть |
factorial |
факториал |
log[b](x) |
логарифм по основанию b |
log10 |
десятичный логарифм |
sqrt |
квадратный корень |
exp |
экспонента |
argument |
аргумент комплексного числа |
binomial |
биноминальный коэффициент |
round |
округление |
trunc |
отсечение дробной части |
Тригонометрические |
функции |
записываются |
в , формене |
|
требующей детального описания: sin, cos, tan, sec, csc, cot, sinh, cosh, tanh, |
||||
sech, csch, coth, arcsin, arccos, arctan, arcsec, arccsc, arccot, arcsinh, arccosh, |
||||
arctanh, arcsech, arccsch, arccoth, arctan. |
|
|
||
Если комплексное выражение очень сложное |
или содержит |
|||
параметры, то команды Re(z) |
и Im(z) не дают требуемого результата. |
|||
Получить вещественную и мнимую части комплексного |
выраженияz |
|||
можно, если |
использовать |
команду |
преобразования |
комплексных |
выражений evalc(z). Например:
> z:=ln(1-I*sqrt(3))^2;
z := ln( 1 - 3 I )2
> evalc(Re(z)); evalc(Im(z));
ln( 2 )2 - p2 9
2
-3 ln( 2 ) p
С полным списком математических функций, входящих в Maple, можно ознакомиться при помощи справки. Для этого достаточно набрать inifcn , выделить и нажать <F1>.
Встроенные функции в Maple делятся на внутренние (они входят в ядро системы и загружаются при запускеMaple) и внешние (хранящиеся на жестком диске). Встроенные делятся на исполняемые и инертные(или функции прямого и отложенного исполнения). Первые возвращают пользователю результат, они всегда начинаются со строчной буквы. Инертные начинаются с заглавной буквы и используются чаще всего для ввода в текст комментариев.
Для ввода греческих букв, математических символов, работы с матрицами и векторами также можно использовать специальные панели, которые вызываются последовательным раскрытием пунктов меню(View /
10
Palettes / Symbol Palette), (View / Palettes / Expression Palette), (View / Palettes / Matrix Palette), (View / Palettes / Vector Palette) соответственно.
Например, панель для ввода математических символов имеет вид:
|
|
Синтаксис команд |
|
Когда |
|
Maple запускается, нет ни одной команды, полностью |
|
загруженной |
в |
память. Большая часть команд |
имеют указатели их |
нахождения, |
и |
при вызове они загружаются |
автоматически. Другие |
команды находятся в стандартной библиотеке и перед выполнением обязательно должны быть вызваны командойreadlib(command), где command – имя вызываемой команды. Остальная часть процедурMaple содержится в специальных библиотеках подпрограмм, называемых пакетами. Пакеты необходимо подгружать при каждом запуске файла с командами из этих библиотек. Имеется два способа вызова команды из пакета:
1.можно загрузить весь пакет командойwith(package) где package – имя пакета;
2.вызов какой-нибудь одной командыcommand из любого пакета package можно осуществить, если набрать команду в специальном формате:
>package[command](options);
где вначале записывается название пакетаpackage, из которого надо вызвать команду, а затем в квадратных скобках набирается имя самой команды command, и после чего в круглых скобках следуют параметры options данной команды.
|
Последовательности, списки |
|
|
||
В |
Maple |
существует |
несколько |
способов |
задания |
последовательностей. |
Для обозначения |
последовательности чисел |
можно |
||
использовать символ “$”: |
|
|
|
> x!$x=1..4;
1, 2, 6, 24
Эту же последовательность можно задать при помощи команды
seq:
> seq(x!,x=1..4);
|
1, 2, 6, 24 |
|
|
|
|
|
Бесконечные |
последовательности |
вводятся |
в |
виде |
||
seq(f(i),i=1..infinity). |
|
|
|
|
|
|
Большую роль в Maple играют списки – пронумерованные начиная |
|
|||||
с единицы символы. Причем необходимо подчеркнуть разницу между |
|
|||||
последовательностями и списками: последовательности не являются |
|
|||||
пронумерованными и поэтому они не являются списками. Команда |
|
|||||
нумерации отдается |
посредством |
заключения |
последовательности |
в |
||
квадратные скобки: |
|
|
|
|
|
|
> [seq(x!,x=1..4)]; |
[ 1, 2, 6, 24 ] |
|
|
|
|
|
|
|
|
|
|
||
К элементам списка можно обращаться по номеру , указав его в |
|
|||||
квадратных скобках: |
|
|
|
|
|
|
> t:=[a,b,c,d,e,f]; |
t := [ a, b, c, d, e, f ] |
|
|
|
||
> t[3]; |
|
|
|
|||
c |
|
|
|
|
|
|
|
|
|
|
|
|
|
Последовательность значений |
f (n) , n = |
|
можно получить |
|
||
1, k |
|
|||||
циклическим оператором for, используя его простейшую конструкцию: |
|
|
||||
for n from 1 | by h | to k do |
|
|
|
|
|
|
f (n) |
|
|
|
|
|
|
end do; (или od;) |
by h | может |
|
|
|
|
|
(указатель шага | |
быть опущен, |
по умолчанию |
его |
|
значение равно 1). Пример:
> for n from 1 by 3 to 8 do 3*n od;
3
12
21
Также можно использовать циклы “while”: > for n from 1 while n<=3 do 3*n od;
3
6
11 |
12 |
9
|
Алгебраические и тригонометрические преобразования |
|
|||||||||||
|
При |
работе с |
математическими |
выражениями |
почти |
всегда |
|||||||
приходится выполнять множество таких операций, как раскрытие скобок, |
|
||||||||||||
разложение |
на |
множители, приведение |
подобных |
членов, которые |
|
||||||||
отнимают массу времени. Maple позволяет избежать этой рутинной работы |
|
||||||||||||
при помощи следующих основных команд этого класса: |
|
|
|
в |
|||||||||
|
collect(w,x) |
|
|
|
приведение |
|
подобных |
|
членов |
|
|||
|
|
|
|
|
выражении w относительно переменной x |
|
|
||||||
|
combine(w,x) |
|
|
объединение членов |
|
|
|
|
|
||||
|
denom(d) |
|
|
|
выделение знаменателя дроби d |
|
|
|
|||||
|
expand(w) |
|
|
|
раскрытие скобок выражения w |
|
|
|
|||||
|
factor(w) |
|
|
|
факторизация (разложение на множители) |
|
|
||||||
|
|
|
|
|
выражения w |
|
|
|
|
|
|
|
|
|
lhs(ur) |
|
|
|
выделение левой части уравнения ur |
|
|
||||||
|
normal(w) |
|
|
|
нормализация (сокращение) дроби w |
|
|
||||||
|
numer(w) |
|
|
|
выделение числителя дроби d |
|
|
|
|
||||
|
op(i..j,e) |
|
|
|
выделение подвыражения из выражения e |
|
|
||||||
|
rhs(ur) |
|
|
|
выделение правой части уравнения ur |
|
|
||||||
|
simplify(w) |
|
|
|
упрощение выражения w |
|
|
|
|
||||
|
subs(x=t,w) |
|
|
|
подстановка |
в |
выражениеw |
вместо |
|
|
|||
|
|
|
|
|
выражения х выражение t |
|
|
|
|
||||
|
subsop(eq1,…,eqN,expr) |
|
замена некоторого операнда в выражении |
|
|
||||||||
|
|
|
|
|
expr |
|
|
|
|
|
|
|
|
|
trigsub(w) |
|
|
|
определение |
всех |
тригонометрических |
|
|
||||
|
|
|
|
|
эквивалентов выражения w |
|
|
|
|
||||
|
После |
|
ключевого |
|
слова |
в скобках вводится аналитическое |
|||||||
выражение или его имя– идентификатор, а также параметры, часть из |
|
||||||||||||
которых не являются обязательными. Например, |
для |
функции collect |
|
||||||||||
обязательно указать переменную, по степеням которой нужно привести |
|||||||||||||
подобные. В simplify может |
быть добавлена встроенная функцияassume |
|
|||||||||||
(принять) – необязательный |
параметр, |
задающая |
условия, при которых |
|
происходит упрощение. Установив курсор (или выделив слово) и нажав <F1>, можно получить справку, по которой можно ознакомиться с соответствующим списком параметров и подробными примерами, которые в некоторой степени компенсируют изложение содержимого на английском языке.
13
> simplify(3*x/sqrt(x^2),assume(x<0));
-3
Приведенные встроенные функции хорошо упрощают алгебраические выражения с целыми степенями, но в случае рациональных степеней они, как правило, возвращают заданное выражение:
>simplify((x^3-y^3)/(x-y));
x2 + y x + y2
>simplify((x-y)/(sqrt(x)+sqrt(y)));
x- y
x + y
Поэтому перед упрощением дробного выражения, содержащего степени с дробными показателями, необходимо при помощи функцииsubs (подстановка) перейти к алгебраическому выражению, содержащему целые показатели:
>f:=(x-y)/(sqrt(x)+sqrt(y));
x- y
f :=
x+ y
>g:=subs(sqrt(x)=a,x=a^2,sqrt(y)=b,y=b^2,f);
|
g := |
a2 - b2 |
|
|
|
> simplify(g); |
a + b |
|
|
|
|
a - b |
|
|
|||
|
|
|
|||
Достаточно |
хорошо |
упрощает |
алгебраические |
выражения, |
|
содержащие степени с рациональными показателями, встроенная функция |
|||||
разложения в рядseries(выражение, переменная), применяемая |
по |
||||
каждой переменной: |
|
|
|
|
|
> (x-y)/(sqrt(x)+sqrt(y)); |
|
|
|
|
x- y
x+ y
> series(%,x);
-y + x
ВMaple заложены основные тригонометрические формулы,
например:
>expand(cos(2*x));
2cos ( x ) 2 - 1
>combine(sin(x)*sin(y));
14