Maple
имеет несколько способов представления функции.
Во первых, если мы какому ни будь выражению
присвоим имя, то фактически присвоенное имя
является функцией переменных, стоящих в
выражении. Например
> p:=x^2+2*x+1:
> p;
При помощи оператора присваивания := в
строке 2 мы присвоили переменной p значение
многочлена .
Теперь, просто введя присвоенное имя p в строке 3,
мы получили значение этого многочлена. В то же
время переменная x осталась незаданной, что легко
проверить вводом
> x;
Теперь, если мы введем
> x:=2;
то получим при вводе p число 9, то есть
значение многочлена при x=2. Таким образом
значение переменной p определяется значением
математического выражения, которое присвоено
переменной p. Присваивая переменной x разные
значения, мы будем получать вычисленные по
формуле значения p. Таким образом, переменная p
фактически является функцией х.
Мы можем применить эту переменную в
правой части другого оператора присваивания,
например
> q:=p^3+1;
В этом отличие языка Maple от обычных
языков программирования - в качестве переменных
в математических выражениях могут
использоваться запрограммированные имена.
Однако при записи операторов присваивания
следует соблюдать осторожность. Если в левой и
правой частях таких операторов будут стоять
одинаковые переменные, которым еще ничего не
присвоено, например
> C:=C^2+1;
то программа выдаст предупреждение, так
как вычисление такого присваивания приведет к
бесконечному циклу. Точно также нельзя, например,
записать команду вычисления неопределенного
интеграла
> int(p^2,p);
так как переменная p уже не является
независимой - ей присвоено значение .
В Maple можно отменить присваивание
такими командами:
> p:=evaln(p);
или
> p:='p';
тогда ввод
> int(p^2,p);
выполняет интегрирование функции
Мы видим, что при задании функции
методом присваивания имени выражению имеются
некоторые неудобства ее использования.
Чтобы не снимать при каждом вызове
функции с переменных численные присваивания
можно использовать команду замены. Пусть
например
> F:=x^3*sin(t);
> subs({x=3, t=Pi/2},F);
Существует и еще одно неудобство -
определенную таким образом функцию невозможно
использовать для расширения библиотеки команд Maple.
Более общий и наиболее употребительный
метод задания функции - путем определения
процедуры. С общим определением процедур Maple
мы познакомимся в разделе, посвященном
программированию. Сейчас мы рассмотрим
специальный вид процедур - функциональные
операторы.
Функциональный оператор задает
функцию или последовательность функций от одной
или нескольких переменных. Он записывается в
виде
( последовательность переменных) - >
(последовательность выражений) , например
> F1:=(x,t) -> (x^3 + sin(t),
exp(x)-ln(x+1));
F2:=(x,t) -> x^2+t^2;
F3:=x -> (sin^(x+1)*x,cos^(x-1)/x);
Чтобы получить значение функции при
некоторых значениях переменных достаточно
записать их в качестве параметров в той же
последовательности, в которой они указаны в
команде, например
> F1(y,tau);
Другой способ задания функционального
оператора - использование команды unapply.
Эта команда преобразует любое
математическое выражение в функцию от указанных
в команде переменных, содержащихся в этом
выражении, например
> restart;unapply(x^3 + sin(t),x,t);
> unapply([sin^(x+1)*x,cos^(x-1)/x],x,t);
|