Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алфавит и синтаксис Maple.doc
Скачиваний:
70
Добавлен:
27.04.2019
Размер:
848.38 Кб
Скачать

2.15. Математические функции

В Maple имеются следующие типы математических функций.

Тригонометрические, гиперболические и обратные к ним функции:

sin(x), cos(x), tan(x)– синус, косинус, тангенс;

sec(x), csc(x), cot(x) – секанс, косеканс, котангенс;

sinh(x), cosh(x), tanh(x) – гиперболические синус, косинус, тангенс;

sech(x), csch(x), coth(x) - гиперболические секанс, косеканс, котангенс;

arcsin(x), arccos(x), arctan(x) – арксинус, арккосинус, арктангенс;

arcsec(x), arccsc(x), arccot(x) - арксеканс, арккосеканс, арккотангенс;

arcsinh(x), arccosh(x), arctanh(x), arcsech(x), arccsch(x), arccoth(x), arctan(y,x) – обратные гипергеометрические функции;

Алгебраические функции.

exp(x) – экспонента;

ln(x) или log(x) – натуральный логарифм;

log[b](x) – логарифм по основанию b;

log10(x) – десятичный логарифм;

ilog10(x), ilog(x) – целочисленные логарифмы;

abs(x) - модуль вещественного или комплексного числа.

Функции комплексного аргумента

argument(z) – аргумент комплексного числа;

conjugate(z) – комплексное сопряжение

Re(z), Im(z) – выделение вещественной и мнимой частей комплексного числа;

polar(z) - полярное представление комплексного числа.

Целочисленные функции

factorial(n) или n! – вычисление факториала;

iquo(a,b) – частное от деления a/b;

irem(a,b) – остаток от деления a/b

igcd(a,b) – наибольший общий делитель;

lcm(a,b) – наименьшее общее кратное.

Сортировка и выбор максимального и минимального элемента списка

sort(list, L) – сортировка списка list по признаку L;

max(list) – выбор максимального элемента списка list;

min(list) - выбор минимального элемента списка list.

Функции округления и оценивания

ceil(x) – наименьшее целое, большее или равное х;

floor(x) – наибольшее целое, меньшее или равное х;

frac(x) – дробная часть числа;

trunc(x) – меньшее целое, округленное в направление х=0;

round(x) – округление х до ближайшего целого;

signum(x) – функция знака числа.

Специальные математические функции

Приведем некоторые из них:

BesselI(v, x), BesselJ(v, x), BesselK(v, x), BesselY(v, x), HankelH1(v, x), HankelH2(v, x) – функции Бесселя;

binomial(n, m) – биномиальные коэффициенты ;

Dirac(t) – функция Дирака;

erf(t) – функция ошибок;

GAMMA(z) или GAMMA(p,x) – гамма-функция;

Heaviside(t) – функция Хевисайда и другие.

Полный список функций системы можно посмотреть, вызвав справку командой >?inifunction .

2.16. Операции с формулами и выражениями

Для манипуляций с формулами и выражениями служат следующие функции системы.

cost(x1, x2,...,xn) – вычисляет количество операций, участвующих в численной эволюции указанных алгебраических выражений, учитываются операции сложения, умножения, деления, обращения к функциям и другие. Перед использованием этой функции ее необходимо загрузить командой readlib(cost).

normal(f), normal(f, expanded) – нормализация алгебраического выражения f. Эта функция упрощает выражения, включающие суммы, произведения и целочисленные степени переменных. Выражения приводятся к виду числитель/знаменатель, где числитель и знаменатель – неприводимые многочлены с целочисленными коэффициентами. Если f задано в виде списка, множества, диапазона, разложения в ряд, уравнения или функции, то функция normal применяется рекурсивно к компонентам f. Если второй операнд не задан, то числитель и знаменатель получаются в виде произведений многочленов. Если указан второй операнд, то числитель и знаменатель будут записаны одним многочленом.

radnormal(expr) – упрощение выражения expr, содержащих не только квадратные корни, но и радикалы других степеней;

numer(e), denom(e) – выделение числителя и знаменателя алгебраического выражения e. Обычно перед использованием этих функций указанное выражение нормализуют функцией normal. Если выражение не было нормализовано, то перед выделением числителя или знаменателя оно приводится к виду числитель/знаменатель.

factor(a), factor(a, K), Factor ( a, K) – факторизация алгебраического выражения а. Цель факторизации – разложить выражение на максимальное число независимых множителей, линейных по заданным переменным, с коэффициентами наиболее простой формы. Эта функция не раскладывает на множители целые числа, для этих целей следует использовать функцию ifactor. Если второй параметр не задан, то факторизация осуществляется над полем, определяемым коэффициентами самого выражения. Например, если все коэффициенты – целые числа, то будут отыскиваться множители с целыми коэффициентами. Параметр К может задавать дополнительные условия факторизации. Инертная форма Factor(a, K) раскрывается функцией evala(...).

collect(a, x) или collect(a, x, form, func) – приведение подобных членов в выражении а при степенях переменной х. Параметр form может принимать значение recursive (по умолчанию) – рекурсивная форма или distributed –дистрибутивная форма. Параметры form и func – необязательные.

expand(expr, expr1, expr2, ..., exprn) или Expand(expr ) – раскрытие скобок в произвольном алгебраическом выражении expr, возможно, с заданными дополнительными параметрами. Инертная форма Expand(expr) раскрывается функцией evala(...).

combine(f, n) – преобразование выражения или списка выражений f, включая приведение подобных членов, объединение показателей степенных функций, преобразование тригонометрических и некоторых других функций. Эта функция к компонентам списков, наборов и соотношений применяется рекурсивно, то есть f и n могут быть списками, наборами выражений и имен соответственно. Необязательный параметр n может принимать значения exp, ln, power, trig, Psi, polylog, radical, abs, signum, plus, atatsign, conjugate, plot, product, range. Для многих функций преобразования выражений, осуществляемые функцией combine обратны соответственным преобразованиям, осуществляемым функцией expand.

ifactor(n) или ifactor(n, method) - целочисленное разложение на множители целого или рационального числа n, с, возможно, заданием имени основного метода для разложения на множители. Эта функция возвращает полное целочисленное разложение на множители числа n в виде (f1)e1...(fn)en . По умолчанию используется алгоритм Морисона-Бриларда. Кроме этого могут использоваться следующие алгоритмы и соответствующие им значения второго параметра: 'squfof' – алгоритм Д.Шанка, 'pollard' – метод Полларда, 'lenstra' - метод Ленстра, 'easy' – режим, при котором из числа выделяются простые множители, а остаток записывается в виде _C.m, где m – количество десятичных цифр числа, которое не удалось разложить на множители.

lhs(eqn) - выделение левой части из уравнения eqn;

rhs(eqn) - выделение правой части из уравнения eqn;

isolate(eqn, expr) - определение выражения expr из уравнения eqn. Перед использованием команды isolate ее необходимо загрузить командой readlib(isolate);

trigsubs(expr) или trigsubs(s) или trigsubs(s, expr) – выдача всех тригонометрических эквивалентов выражения expr или уравнения s. Перед использованием этой функции её необходимо загрузить командой readlib(trigsubs) . Обращение trigsubs(0) – с параметром 0 – возвращает набор функций, известных процедуре: {cos, cot, csc, sec, sin, tan}. Обращение с одиночным тригонометрическим выражением expr возвращает список тригонометрических выражений, эквивалентных expr. Обращение с одиночным уравнением, представленным тригонометрическим тождеством, возвращает ответ `found` или `not found` в зависимости от того найдено или не найдено соответствие в тождестве. Если кроме уравнения задан второй параметр – выражение expr, – то тождество s вначале проверяется на соответствие, а затем применяется к выражению. В случае обнаружения ошибок выдаётся сообщение.

simplify(expr,<opt1>,<opt2>,<opt3>,…,<optn>) - упрощение выражения expr согласно заданным опциям <optn> (exp, ln, power, radical, sqrt, trig, RootOf, и др.);

subs(old_1 = new_1,.., old_n = new_n,expr) - подстановка new_n вместо old_n в выражении expr;

Примеры:

> readlib(cost):a := x+x^2+x^3+x^4:

> cost(a);

3 additions + 6 multiplications

> b:=x*(1+x+x^2+x^3):cost(b);

3 additions + 4 multiplications

> normal( (g(x)^2-1)/(g(x)-1) );

g(x) + 1

> (4+3*3^(2/3)+3*3^(1/3))^(1/3)=

radnormal((4+3*3^(2/3)+3*3^(1/3))^(1/3));

> numer( 2/3 );

2

> denom( 2/3 );

3

> numer( 2/x + y );

2 + y x

> factor(6*x^2+18*x-24);

6 (x + 4) (x - 1)

> f := a*ln(x)-ln(x)*x-x;

f := a ln(x) - ln(x) x - x

> collect(f,ln(x));

(a - x) ln(x) - x

> expand((x+1)*(y+z));

x y + x z + y + z

> expand(sin(x+y));

sin(x) cos(y) + cos(x) sin(y)

> combine(4*sin(x)^3,trig);

-sin(3 x) + 3 sin(x)

> combine(exp(x)^2*exp(y),exp);

exp(2 x + y)

> ifactor( 60 );

> ifactor( 4/11 );

> n := 8012940887713968000041:

> ifactor( n, easy );

(13) (457) _c19

> ifactor( n );

(13) (457) (2847639359) (473638939)

> eq:=a+b=c;

eq := a + b = c

> lhs(eq);

a + b

> rhs(eq);

c

Эти же команды используются для выделения границ диапазона, задаваемого оператором диапазона i..j:

> lhs(2..5);rhs(2..5);

2

5

> readlib(isolate): isolate(y-3*x-5,y);

y = 3 x + 5

Вычислим , зная, что :

> readlib(trigsubs): trigsubs(cos(x)^2): q:=convert(%,list):

> subs(cos(x/2)=1/4,q[6]);

Вычислим , зная, что :

> convert(cos(4*x)^2,tan);

> subs(tan(2*x)=5,%);