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

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

Шрифт:

В процедурах могут использоваться все вычислительные, графические и иные функции системы Maple. Так что материал предшествующих глав фактически уже был описанием возможностей языка программирования Maple. Как пример применения в процедуре графических средств, приведем процедуру построения кольца Мебиуса заданной ширины width (файл gproc):

> mob := proc(width)

> plot3d([(5+cos(1/2*t)*u)*cos(t),

(5+cos(1/2*t)*u)*sin(t),sin(1/2*t)*u], t=0..2*Pi,

> u=-width/5..width/5, gnd= [60,10] ,

> scaling=UNCONSTRAINED, orientation= [0,140]);

> end:

Запуск этой процедуры командой

> mob(5);

строит фигуру, показанную на рис. 10.4.

Рис. 10.4. Кольцо Мебиуса, построенное графической процедурой

10.3.3. Просмотр кодов процедур

Коды процедур на языке Maple можно просмотреть с помощью функции eval(name) или pint(name), где name — имя процедуры. При этом уровень просмотра можно менять с помощью функции interface(verboseproc=N), где N — уровень вывода. Следующий пример иллюстрирует это для только что созданной процедуры mode (файл р4):

> eval(modc);

proc(z) evalf (sqrt(ℜ(z)^2 + ℑ(z)^2)) end proc

> interface(verboseproc=0);

1

> eval(modc);

proc(z) evalf (sqrt(ℜ(z)^2 + ℑ(z)^2)) end proc

> interface(verboseproc=1);

0

> eval(modc);

proc(z) evalf (sqrt(ℜ(z)^2 + ℑ(z)^2)) end proc

Аналогичным образом можно просмотреть коды процедуры, уже созданной в Maple. Например, не очень большой процедуры смены системы координат changecoords из пакета расширении plots:

> interface(verboseproc=0);

1

> eval(plots[changecoords]);

proc(p,coord) … end proc

> interface(verboseproc=2);

0

> eval(plots[changecoords]);

proc(p, coord)

local c_name, a, b, c;

option

 `Copyright (c) 1994 by the University of Waterloo. All rights reserved;`

 a :=1;

 b := 1/2;

 с := 1/3;

 if type(coord, function) then

c_name :=op(0, coord);

if nops(coord) = 1 then a :=op(1, coord)

elif nops(coord) = 2 then a :=op(1, coord); b :=op(2, coord)

elif nops(coord) = 3 then

a :=op(1, coord); b :=op(2, coord); с :=op(3, coord)

else error "Inappropriate number of parameters."

end if

 else c_name := coord

 end if;

 if member(c_name, `plot3d/coordset2` ) then

(p, c_name, a)

 elif member(c_name , `plot3d/coordset` ) then

`plots/changecoords/threetrans` (p, c_name, a,b,c)

 else error "Cannot convert to coordinate system %1", coord

 end if

end proc

10.3.4. Оператор возврата значения RETURN

Как отмечалось, процедуры, которые возвращают значение результата в ответ на обращение к ним, во многом тождественны функциям. Будем называть их процедурами-функциями. Обычно процедура возвращает значение последнего выражения в ее теле или выражения, намеченного к возврату специальным оператором возврата RETURN (файл р4):

  • Читать дальше
  • 1
  • ...
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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