Чтение онлайн

на главную

Жанры

Maple 9.5/10 в математике, физике и образовании

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

Шрифт:

> whattype(a*b/c);

*

> whattype(a^b);

^

> whattype(1+2+3=4);

=

С помощью функции type(object,t) можно выяснить, относится ли указанный объект к соответствующему типу t, например:

> type(2+3,integer);

true

> type(sin(х),function);

true

> type(hello,string);

false

> type("hello",string);

true

> type(1/3,fraction);

true

При

успешном соответствии типа объекта указанному (второй параметр), функция type возвращает логическое значение true, в противном случае — false.

Для более детального анализа объектов может использоваться функция hastype(expr, t), где expr — любое выражение и t — наименование типа подобъекта.

Эта функция возвращает логическое значение true, если подобъект указанного типа содержится в выражении expr. Примеры применения этой функции даны ниже (файл control):

> hastype(2+3,integer);

true

> hastype(2+3/4,integer);

false

> hastype(2*sin(x),function);

true

> hastype(a+b-c/d,`+`);

true

Еще одна функция — has(f,x) — возвращает логическое значение true, если подобъект х содержится в объекте f, и false в ином случае:

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

true

> has(2*sin(x), `/`);

false

> has(2*sin(x),3-1);

true

Следует отметить, что соответствие подобъекта выражения указанному подобъекту понимается в математическом смысле. Так, в последнем примере подобъект «3-1», если понимать его буквально, в выражении 2*sin(x) не содержится, но Maple-язык учитывает соответствие 3-1=2, и потому функция has в последнем примере возвращает true.

Функция has может использоваться для выявления той или иной математической операции, оператора или функции. Однако надо соблюдать определенные правила, поскольку выражение, анализируемое функцией has оценивается и исполняется. Внимательно проанализируете приведенные ниже примеры:

> 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. Функциональные преобразования элементов списков

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

Возвышение Меркурия

Кронос Александр
1. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия

Смертник из рода Валевских. Книга 1

Маханенко Василий Михайлович
1. Смертник из рода Валевских
Фантастика:
фэнтези
рпг
аниме
5.40
рейтинг книги
Смертник из рода Валевских. Книга 1

Начальник милиции

Дамиров Рафаэль
1. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции

Счастливый торт Шарлотты

Гринерс Эва
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Счастливый торт Шарлотты

Я снова не князь! Книга XVII

Дрейк Сириус
17. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я снова не князь! Книга XVII

Вечный Данж VI

Матисов Павел
6. Вечный Данж
Фантастика:
фэнтези
7.40
рейтинг книги
Вечный Данж VI

Последний попаданец 3

Зубов Константин
3. Последний попаданец
Фантастика:
фэнтези
юмористическое фэнтези
рпг
5.00
рейтинг книги
Последний попаданец 3

Не грози Дубровскому!

Панарин Антон
1. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому!

Возвышение Меркурия. Книга 12

Кронос Александр
12. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 12

Найди меня Шерхан

Тоцка Тала
3. Ямпольские-Демидовы
Любовные романы:
современные любовные романы
короткие любовные романы
7.70
рейтинг книги
Найди меня Шерхан

Ваше Сиятельство 2

Моури Эрли
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Ваше Сиятельство 2

Адепт: Обучение. Каникулы [СИ]

Бубела Олег Николаевич
6. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.15
рейтинг книги
Адепт: Обучение. Каникулы [СИ]

Комбинация

Ланцов Михаил Алексеевич
2. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Комбинация

Мой любимый (не) медведь

Юнина Наталья
Любовные романы:
современные любовные романы
7.90
рейтинг книги
Мой любимый (не) медведь