Функциональные преобразования подвыражений



Лекция 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; Мы поможем в написании вашей работы!

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






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