Функциональные преобразования подвыражений
Лекция 6
ОПЕРАЦИИ СИМВОЛЬНОЙ МАТЕМАТИКИ
Основные операции с выражениями
Работа с частями выражений. Выражения (expr) и уравнения (eqn) обычно используются как сами по себе, так и в виде равенств и неравенств. В последнем случае объекты с выражениями имеют левую и правую части. Для простейших манипуляций с выражениями полезны следующие функции:
· cost(a) – возвращает число сложений в выражении a;
· lhs(eqn) – выделяет левую часть eqn;
· rhs(eqn) – выделяет правую часть eqn;
· normal(expr) – даёт нормализацию (сокращение) expr в виде дроби;
· numer(expr) – выделяет числитель expr;
· denom(eprn) – выделяет знаменатель expr.
Ниже приведены примеры применений этих функций:
> with(codegen,cost):
> cost(x^3+b^2-x);
> lhs(sin(x)^2+cos(x)^2=1);
> rhs(sin(x)^2+cos(x)^2=1);
> normal(2/4+3/6+6/12);
> f:=5*(a-b)^2/(a^2-2*a*b-b^2);
> numer(f);
> denom(f);
Преобразование выражений в тождественные формы
Многие математические выражения имеют различные тождественные формы. Порою преобразование выражения из одной формы в другую позволяет получить результат, более удобный для последующих вычислений. Кроме того, различные функции Maple работают с различными формами выражений и разными типами данных. Поэтому большое значение имеет целенаправленное преобразование выражений и данных.
Основной функцией для такого преобразования является функция convert:
Convert(expr,form,arg3,…)
здесь expr – любое выражение, form – наименование формы, arg3… – необязательные дополнительные аргументы.
|
|
Convert – простая и вместе с тем очень мощная функция. Её мощь заключается в возможности задания множества параметров. Их перечень составляет 76 штук и его можно найти в справочнике Maple. Например, опции binary, decimal, hex и octal преобразуют заданные числа в их двоичное, шестнадцатеричное и восьмеричное представление. Параметр vector задаёт преобразование списка в вектор, а параметр matrix – в матрицу.
> convert(123,binary);
> convert([a,b,c,d],`+`);
> f:=seq(x[i]^n,i=1..4);
> convert(1.234567,fraction);
> s:=taylor(sin(x),x,8);
> p:=convert(s,polynom);
> convert(p,float);
> f:=(x^4+x)/(x^2-1);
> convert(f,parfrac,x);
Из этих примеров следует, что функция сonvert является одной из самых мощных функций Maple.
Преобразование выражений
Еще одним мощным средством преобразования выражений является функция combine. Она обеспечисвает объединение показателей степенных функций и преобразование тригонометрических и некоторых иных функций. Эта функция может записываться в трёх формах:
combine(f)
combine(f,n)
combine(f,n,opt1,opt2, …)
здесь f – любое выражение, множество или список выражений; n – имя, список или множество имён; opt1,opt2,… – имена параметров.
Примеры применения функции приведен ниже.
> combine(exp(2*x)^2,exp);
|
|
> combine(2*sin(x)^2+2*cos(x)^2);
> combine(sin(x)*cos(x));
> combine(Int(x,x=a..b)-Int(x^2,x=a..b));
Контроль за типами данных
Выражения и их части в Maple рассматриваются как объекты. В ходе манипуляций с ними важное значение имеет контроль за типами объектов. Одной из основных функций, обеспечивающих такой контроль, является функция whattype(object), возвращающая тип объекта, например string, integer, float, fraction, function и т.д. Могут возвращаться данные об операторах. Примеры применения этой функции даны ниже.
> whattype(2+3);
> whattype(pi);
> whattype(123./5);
> whattype(sin(x));
> whattype([1,2,3,a,b,c]);
С помощью функции type(object,t) можно выяснить, относится ли указанный объект к соответствующему типу t, например:
> type(2+3,integer);
> type(hello,string);
> type("hello",string);
Для более детального анализа объектов может использоваться функция hastype(expr,t) где expr – любое выражение и t – наименование типа подобъекта.
Эта функция возвращает логическое значение true, если подобъект указанного типа содержится в выражении expr.
> hastype(2+3/4,integer);
Еще одна функция – has(f,x) – возвращает логическое значение true? Если подобъект x содержится f, и false в ином случае:
> has(2*sin(x),2);
> has(2*sin(x),`/`);
Подстановки
Функциональные преобразования подвыражений
|
|
Нередко бывает необходимо заменить некоторое подвыражение в заданном выражении на функцию от этого подвыражения. Для этого используется функция applyot:
· applyot(f,i,e) – применяет функцию f к i-му подвыражению выражения e;
· applyot(f,I,e,…,xk,…) – применяет функцию f к i-му подвыражению выражения e с передачей необязательных дополнительных аргументов xk.
Ниже приведены примеры этой функции.
> restart;
> applyop(sin,2,a+x);
> applyop(f,1,g,2,a+b);
> applyop(f,{2,3},a+x+b);
Дата добавления: 2020-11-27; просмотров: 59; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!