Вход/Регистрация
Maple 9.5/10 в математике, физике и образовании
вернуться

Дьяконов Владимир Павлович

Шрифт:

> has(2*sin(2),sin);

true

> has(2*sin(2),'sin');

true

> has(2*sin(2.), 'sin');

false

Здесь надо учесть, что выражение 2*sin(2) после оценки и исполнения не меняется, поскольку Maple, при целочисленном аргументе функции синуса, не вычисляет ее и вычисленное выражение совпадает с исходным и содержит функцию синуса. Однако sin(2.) уже вычисляется и становится числом. Именно поэтому в последнем примере функция sin уже не обнаруживается. Подобное имеет место и в ряде других примеров с функцией интегрирования:

> has('int(х^2,х)',int);

true

> has(int(х^2,х),int);

false

> int(х^2,х);

> has(int(х^2,х), х^3/3);
rue

Столь же поучителен пример с идентификацией функции интегрирования. Так, has(int(х^2, х), int); дает false, поскольку интеграл оценивается и вычисляется, что ведет к подмене выражения на х^3/3 уже не содержащего признаков интегрирования. Это и поясняют два последних примера, в которых вычислено значение интеграла и функция has дает значение true для значения интеграла. В тоже время заключение int(x^2,x) в апострофы позволяет найти имя функции интегрирования int, поскольку исходное выражение в этом случае представлено в неисполняемой форме и содержит обращение к этой функции.

Еще одна иногда полезная функция контроля выражений depends(f,x) возвращает true, если х входит в f и false в противном случае. При этом надо также помнить, что функция (выражение) оценивается и исполняется. Следующие примеры хорошо иллюстрируют сказанное:

> depends(2+2*sin(x),х);

true

> depends(int(х^2,х),х);

true

> depends(int(х^2,х=0..1), х)

false

В последнем примере вычисленное выражение это уже просто число, в нем х не содержится, а потому и получено значение false.

3.6. Работа с подстановками

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

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

• applyop(f, i, е) — применяет функцию f к i-му подвыражению выражения е;

• applyop(f, i, е…, xk,…) — применяет функцию f к i-му подвыражению выражения е с передачей необязательных дополнительных аргументов xk.

Ниже даны примеры применения этой функции (здесь и далее см. файл subs):

> restart;applyop(sin,2,a+x);

a + sin(x)

> applyop(f,1,g,2,a+b);

f(g, 2, a + b)

> applyop(f,{2,3},a+x+b);

a+f(x)+f(b)

> applyop(f,{1,2},x/y+z);

> р:=у^2-2*у-3;

p:= y²-2y -3

> applyop (f, 2,p);

p:= y² -2y -3

> applyop{f,[2, 3 ], p);

y²+f(-2y)-3

> applyop(f,{[2,1],3},p);

y² + f(-2y) + f(-3)

> applyop(abs,{[2,1],3},p);

y²+2y+3

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

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

map(fcn, expr, arg2, ..., argn)

map2(fcn, arg1, expr, arg3,..., argn)

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

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

> f:=х->х^2;

f: = х→х²

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

[1, 4, 9]

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

[x², y², z²]

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

[1, 2n, 3n]

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

L:=[1, 2, 3, 4]

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

[3, 5, 7, 9]

> map(int,L,x);

[x, 2x, 3x, 4x]
  • Читать дальше
  • 1
  • ...
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: