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

ЖАНРЫ

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

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

Шрифт:

10.1. Задание функций

10.1.1. Задание функции пользователя

Хотя ядро Maple 9 5/10, библиотека и встроенные пакеты расширения содержат свыше 3500 команд и функций, всегда может оказаться, что именно нужной пользователю (и порою довольно простой) функции все же нет. Тогда возникает необходимость в создании собственной функции, именуемой функцией пользователя. Для этого используется следующая конструкция:

name(x,y,...)->expr

После этого вызов функции осуществляется в виде name(х,у,…), где (x,y,…) — список формальных параметров функции пользователя

с именем name. Переменные, указанные в списке формальных параметров, являются локальными. При подстановке на их место фактических параметров они сохраняют их значения только в теле функции (expr). За пределами этой функции переменные с этими именами оказываются либо неопределенными, либо имеют ранее присвоенные им значения.

Следующие примеры иллюстрирует сказанное (файл p1):

> restart;

> х:=0;y:=0;

х := 0
у := 0

> m:=(x,y)->sqrt(х^2+y^2);

> m(3,4);

5

> m(3., 4);

5.000000000

> [x,y];

[0, 0]

Нетрудно заметить, что при вычислении функции m(х,у) переменные х и у имели значения 3 и 4, однако за пределами функции они сохраняют нулевые значения, заданные им перед введением определения функции пользователя. Использование хотя бы одного параметра функции в виде числа с плавающей точкой ведет к тому, что функция возвращает результат также в виде числа с плавающей точкой.

10.1.2. Конструктор функций unapply

Еще один способ задания функции пользователя базируется на применении функции-конструктора unapply:

name:=unapply(expr, var1, var2, ...)

Ниже даны примеры такого задания функции пользователя (файл p1):

> restart;

> fm:=unapply(sqrt(х^2+y^2),х,y);

> fm(4.,3.);

5.000000000

> fe:=unapply(х^2+y^2,х,y);

fе:=(х,у)→х²+у²

> fe(sin(х),cos(х));

sin(x)² + cos(x)²

> simplify(fe(sin(x),cos(x)));

1

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

10.1.3. Визуализация функции пользователя

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

При задании функций пользователя рекомендуется просмотреть их графики в нужном диапазоне изменения аргументов. К сожалению, наглядными являются только графики функций одной и двух переменных.

Рис. 10.1. Примеры задания функций пользователя двух переменных с построением их графиков

10.1.4.

Импликативные функции

Другой важный класс функций, которые нередко приходится задавать — импликативные функции, в которых связь между переменными задана неявно в виде какого-либо выражения. Самый характерный пример такой функции — это выражение для задания окружности радиусаr: х²+у²=r².

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

> impf:=х^2+y^2=r^2;

impf := x² + у² = r²

> subs(х=а,impf);

а² + у² = r²

> solve(%);

> impf1:=х^2+у^2=25;

impf1 := х² + у² =25

> subs(х=4,impf1);

16 + y² =25

> solve(%);

3, -3

Для графической визуализации импликативных функций служит функция implicitplot пакета plots. На рис. 10.2 представлено задание двух импликативных функций и построение их графиков.

Рис. 10.2. Задание двух импликативных функций и построение их графиков

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

10.2. Управляющие структуры

10.2.1. Условные выражения

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

Простейшую конструкцию разветвляющихся программ в Maple-языке программирования задает оператор if или оператор условного выражения:

if <Условие сравнения> then <Элементы>

|elif <Условие сравнения> then <Элементы>|

|else <Элементы>|

fi;

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

if <Условие> then <Элементы 1> fi — если Условие выполняется, то исполняются Элементы 1, иначе ничего не выполняется;

if <Условие> then <Элементы 1> else <Элементы 2> fi — если Условие выполняется, то исполняются Элементы 1, иначе исполняются Элементы 2.

В задании условий используются любые логические конструкции со знаками сравнения (<, <=, >, >=, =, <>) и логические операторы and, or и not, конструкции с которыми возвращают логические значения true и false.Рассмотрим следующий простой пример (файл р2):

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