* Данный текст распознан в автоматическом режиме, поэтому может содержать ошибки
Язык программирования системы Maple
1037
name. Переменные, указанные в списке формальных параметров, являются ло кальными. При подстановке на их место фактических параметров они сохраняют их значения только в теле функции (expr). За пределами этой функции перемен ные с этими именами либо оказываются неопределенными, либо сохраняют ранее присвоенные им значения. Следующие примеры иллюстрируют сказанное:
> restart; > x:=0;y:=0;
x := 0 y := 0
> m:=(x,y)->sqrt(x^2+y^2); > m(3,4);
5
> m(3.,4);
5.000000000
> [x,y];
[0, 0] Нетрудно заметить, что при вычислении функции m(x,y) переменные x и y имели значения 3 и 4, однако за пределами функции они сохраняют нулевые значе ния, заданные им перед введением определения функции пользователя. Использо вание хотя бы одного параметра функции в виде числа с плавающей точкой ведет к тому, что функция возвращает результат также в виде числа с плавающей точкой. Еще один способ задания функции пользователя базируется на применении функции конструктора unapply:
name:=unapply(expr,var1,var2,...)
Ниже даны примеры такого задания функции пользователя:
> restart; > fm:=unapply(sqrt(x^2+y^2),x,y); > fm(4.,3.);
5.000000000
> fe:=unapply(x^2+y^2,x,y); > fe(sin(x),cos(x));
fe := (x, y) > x2 + y2 sin(x)2 + cos(x)2
> simplify(fe(sin(x),cos(x)));
1 Последний пример показывает возможность проведения символьных опера ций с функцией пользователя. В ряде случаев весьма желательна визуализация результатов выполнения функций пользователя. Порой она может давать неожиданный результат. На рис. 14.1 представлены примеры задания двух функций пользователя от двух пе ременных и построение их графиков с помощью функции plot3d.