Функциональные преобразования элементов списка



Еще две функции реализуют операции подстановки:

· map(fcn,expr,arg2,…,arg)

· map(fcn,arg1,expr,arg3,…,arg),

здесь fcn – процедура или имя, expr – любое выражение, argi – необязательные дополнительные аргументы для fcn.

Первая из этих функций позволяет приложить fcn к операндам выражение  expr.

> map(f,[1,2,3]);

> map(f,[x,y,z]);

> map(x->x^n,[1,2,3]);

> l:=[1,2,3,4];

> map(proc(x,y)x*y+1 end,[1,2,3,4],2);

> map(int,l,x);

> map(F,[1,2,3],x,y,z);

 

Подстановки с помощью функций add , mul и seg

В Maple существуют функции add – сложения, mul – умножения и seg – создания последовательности. Например:

> add(i,i=[a,b,c]);

> mul(x-i,i=0..4);

> seq(int(x^i,x),i={1,2,3,4});

Подстановки с помощью sub и subsop

Подстановки в общем случае служат для замены одной части выражения на другую. Частными видами подстановок являются такие виды операций, как замена одной переменной на другую или замена символьного значения переменной её численным значением.

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

· subs(x=a,e) – в выражении e заменяет подвыражение x на подвыражение a;

· subs(s1,…,s2,e) – в выражении e заменяет одни подвыражения на другин, выбирая их из списков s1,…,s2 вида x=a;

· subs(eq1,eq2,…,eqn,e) – в выражении e заменяет указанные в eqi операнды другими, указанными в правой части равенств eqi вида ni=ei, где ni – номер операнда, ei – выражение замены.

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

> W:=3*x^2+8;

> U:=(2/5)*x^2+3*y;

> subs(x=7,y=12,U);

> subs(a=b,b^2-2*a*b-b^2);

> subs(c=a-b,(a^2-2*a*b+b^2)/c);

> subsop(1=x,a+b+c);

Команда subs с успехом применяется и при подстановке значений переменных в уравнение. Это чрезвычайно важно, например, при проверке корней уравнения. В следующих примерах подставим несколько значений переменной х в уравнение .

> eqn:=x^3-5*x^2+7*x-12=0;

> subs(x=3,eqn);

> subs(x=4,eqn);

> subs(x=5,eqn);

 

Функции сортировки

Сортировка выражений широко используются в практике символьных преобразований. Для выполнения сортировки служит функция sort, применяемая в одной из следующих форм:

sort(L),sort(L,F), sort(A), sort(A,V),

здесь L – список сортируемых значений, F – необязательная булева процедура с двумя аргументами, A – алгебраическое выражение, V – необязательные дополнительные параметры.

> restart;sort([y,s,f,a,c,i]);

> sort(1+x^2+x);

> p:=y^3*x^2+y^2*x*2+x^3+1;

> sort(p,[x,y]);

Функции сортировки не работают с символами кирилицы и не позволяют сортировать слова русского языка.

 

Упрощение выражений

Функция simlity – одна из мощных в системах символьной математики. Она предназначена для упрощения математических выражений. Эта функция используется в следующем виде:

· simplity(expr) – возвращает упрощенное выражение expr или повторяет его, если упрощение в рамках данной версии Maple не возможно;

· simplity(expr,n1,n2,…) – возвращает упрощенное выражение expr с учётом параметров с именами n1,n2,…;

· simplity(expr,assume=prop) – возвращает упрощенное выражение expr с учётом всех условий.

Функция simlity – многоцелевая. Она обеспечивает упрощение математических выражений, выполняя следующие типовые действия:

· комбинируя цифровые подвыражения ( );

· приводя подобные множители в произведениях;

· приводя подобные члены в суммах;

· используя тождества, содержащие ноль;

· используя тождества, содержащие единицу;

· распределяя целочисленные показатели степени в производителях;

· сокращая expr на наибольший полиноминальный или иной множитель;

· понижая степень полиномов, где это возможно;

· используя преобразования, способные упростить выражения.

Несмотря на свою гибкость, функция не всегда способна выполнить возможные упрощения. В этом случае ей надо подсказать, в какой области ищутся упрощения и где можно найти соответствующие упрощающие преобразования. С этой целью в функцию можно включить дополнительные параметры. В качестве параметров могут задаваться имена специальных математических функций и указания на область действия упрощений.

> simplify(4^(1/2)+3);

> simplify((x^y)^z+3^(3),power);

> simplify(sin(x)^2+cos(x)^2,trig);

> simplify(ln(x*y),power,symbolic);

> e:=(-5*b^2*a)^(1/2);

> simplify(e,radical);

> simplify(e,radical,symbolic);

> V:=cos(x)^5+sin(x)^4+2*cos(x)^2-2*sin(x)^2-cos(2*x);

> simplify(V);

Действие функции существенно зависит от области определения переменных. В следующем примере упрощение не произошло, поскольку результат этой операции неоднозначен:

> restart;

> simplify(sqrt(x^4*y^2));

 

Однако, определив переменные как реальные или положительные, можно легко добиться желаемого упрощения:

> simplify(sqrt(x^4*y^2),assume=positive);

Если функция не способна выполнить упрощение выражения, то она его просто повторяет. Это сигнал к применению опций.

 

Расширение выражений

Прямое назначение команды expand – представление полиномов в стандартной форме. Однако этим её возможности далеко не исчерпываются. Например, команда широко применяется в тригонометрических преобразованиях и т.д.

expand(expr,expr1,expr2,…,exprn)

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

       Функция expand раскладывает рациональное выражение на простые дроби, полиномы на полиномиальные разложения, она пособна раскрыть многие математические функции, такие как sin, cos, tan, sinh, cosh, tanh, det,exp,factorial, GAMMA, ln, max,min, Psi, binomial, sum, product, int, limit, abs,signum и др. С помощью дополнительных аргументов expr1,expr2,…,exprn можно задать расширение отдельных фрагментов expr.

> expand((x+2)*(x+3)*(x+4));                  

> expand(sin(2*x));

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

> h:=x^(1/2)*(x^(3/2)+x^(-1/2));

> expand(h);

 

Разложение выражений

Для алгебраических выражений функция факторизации записывается в вычисляемой и невычисляемой (инертной) форме:

factor(a) Factor(a)
factor(a,K)  Factor(a,K) 

Здесь  а – полином с несколькими переменными, К – необязателное алгебраическое расширение. Для получения результата от инертной формы функции факторизации надо использовать функции вычисления evala и evalgf.

Главная цель факторизации – это нахождение максимального числа независимых сомножителей выражения, линейных по заданным переменным с коэффициентами наиболее простой формы.

> factor(3*x^2-10*x-8);

> factor(x^3+y^3);

> factor((sin(x))^2-(cos(x)^2));

> B:=(x^3-7*x^2+15*x-9)/(x^2-4*x+3);

 

> factor(B);

Рассмотрим пример: разложите на множители выражение , а затем примените команду expand для проверки результата.

> ww:=x^(1/2)-x^(3/2);

> factor(ww);

> expand(%);

> factor(x^3+3,complex);


Дата добавления: 2020-11-27; просмотров: 68; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!