Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAPLE.doc
Скачиваний:
221
Добавлен:
24.03.2015
Размер:
1.52 Mб
Скачать

29. Трёхмерные команды пакета plots. Трёхмерные графические структуры Maple.

Графические структуры трехмерной графики строятся функцией PLOT3D:

PLOT3D(s1,s2,s3,...,о)

В качестве элементарных графических структур можно использовать уже описанные выше объекты POINTS, CURVES, POLYGONS и TEXT — разумеется, с добавлением в списки параметров третьей координаты. Пример такого построения дан на рис. 8.20.

Рис 8.20 Пример создания структуры трехмерной графики

Кроме того, могут использоваться некоторые специальные трехмерные структуры. Одна из них — структура GRID:

GRID(a..b,c..d,listlist) — задание поверхности над участком координатной плоскости, ограниченной отрезками [a, b] и [с, d], по данным, заданным переменной-списком listlist:=[[z11,…z1n], [z21,…z2n],…[zm1…zmn]] с размерностью n×m. Заметим, что эта переменная задает координату z для равноотстоящих точек поверхности.

На рис. 8.21 показан пример создания структуры трехмерной графики на базе GRID. Изображение представляет собой линии, соединяющие заданные точки.

Рис. 8.21. Пример задания графической структуры типа GRID

Еще один тип трехмерной графической структуры — это MESH:

MESH(listlist) — задание трехмерной поверхности по данным списочной переменной listlist, содержащей полные координаты всех точек поверхности (возможно задание последней при неравномерной сетке).

Обычная форма задания этой структуры следующая:

MESH([[[x11, y11, z11], ... [x1n, y1n, z1n]], [[x21, у21, z21], ... [x2n, y2n, z2n]], ... [[xm1, ym1, zm1] ... [xmn, ymn, zmn}]])

Пример задания такой структуры представлен на рис. 8.22.

Рис. 8.22. Пример задания графической структуры типа MESH

Описанные структуры могут использоваться и в программных модулях. Много таких примеров описано в книгах, поставляемых с системой Maple.

30. Меню для работы с трёхмерной графикой. Трёхмерные команды пакета plottools.

Хорошим примером 3D-анимации является документ, показанный на рис. 8.51. Представленная на нем процедура springPlot имитирует поведение упругой системы, первоначально сжатой, а затем выстреливающей шар, установленный на ее верхней пластине. Упругая система состоит из неподвижного основания, на котором расположена упругая масса (например, из пористой резины), и верхней пластины.

Рис. 8.51. Имитация отстрела шара сжатой упругой системой

Управление анимацией, реализованной средствами пакета plottools, подобно уже описанному ранее. Последний пример также прекрасно иллюстрирует возможности применения Maple 9.5 при математическом моделировании различных явлений, устройств и систем.

31. Символьные преобразования выражений. Команда simplify, expand. Упрощение выражений — simplify

Функция simplify — одна из самых мощных в системах символьной математики. Она предназначена для упрощения математических выражений. «Все гениальное просто» — любим мы повторять, хотя это далеко не всегда так. Тем не менее, стремление представить многие математические выражения в наиболее простом виде поощряется в большинстве вычислений и нередко составляет их цель.

В системе Maple функция упрощения используется в следующем виде:

• simplify(expr) — возвращает упрощенное выражение expr или повторяет его, если упрощение в рамках правил Maple невозможно;

• simplify(expr, n1, n2, …) — возвращает упрощенное выражение expr с учетом параметров с именами n1, n2, … (в том числе заданных списком или множеством);

• simplify(expr,assume=prop) — возвращает упрощенное выражение expr с учетом всех условий, представленных равенством или списком равенств.

Функция simplify — многоцелевая. Она обеспечивает упрощение математических выражений, выполняя следующие типовые действия (для простоты обозначим их как ->):

• комбинируя цифровые подвыражения (3*х*5->15*х, 10*x/5->2*x);

• приводя подобные множители в произведениях (х^3*а*х->а*х^4);

• приводя подобные члены в суммах (5*х+2+3*х->8*х+2);

• используя тождества, содержащие ноль (а+0->а, х-0->х);

• используя тождества, содержащие единицу (1*х->х);

• распределяя целочисленные показатели степени в произведениях ((3*х*у^3)^2->9*х^2*у^6);

• сокращая expr на наибольший общий полиномиальный или иной множитель;

• понижая степень полиномов там, где это возможно;

• используя преобразования, способные упростить выражения.

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

В качестве параметров могут задаваться имена специальных математических функций и указания на область действия упрощений: BesselI, BesselJ, BesselK, BesselY, Ei, GAMMA, RootOf, LambertW, dilog, exp, ln, sqrt, polylog, pg, pochhammer, trig (для всех тригонометрических функций), hypergeom, radical, power и atsign (для операторов).

Полезен также параметр symbolic, задающий формальные символьные преобразования для многозначных функций, например, таких как квадратный корень (примеры из файла simplify):

> g:=sqrt(х^2);

> simplify(g);

csgn(x)x

> simplify(g,assume=real);

|x|

> simplify(g,assume=positive);

x

> simplify(g,symbolic);

x

Но, чуть иначе:

> g:=sqrt(х^у);

> simplify(g);

> simplify(g,assume=real);

> simplify(g,assume=positive);

> simplify(g,symbolic);

Возможно также применение функции simplify в форме simplify[<name>] где <name> — одно из следующих указаний: atsign, GAMMA, hypergeom, power, radical, RootOf, sqrt, trig.

Ниже даны примеры применения функции simplify:

> simplify(4^(1/2)+3);

5

> simplify((х^у)^z+3^(3),power);

(хy)z + 27

> simplify(sin(х)^2+cos(х)^2,trig);

1

> e:=cos(х)^5+sin(х)^4+2*cos(х)^2-2*sin(х)^2-cos(2*х);

е: = cos(x)5 + sin(x)4 + 2cos(x)2 - 2sin(x)2 -cos(2x)

> simplify(e);

cos(x)5 + cos(x)4

> simplify(GAMMA(n+4)/GAMMA(n),GAMMA);

n(n+1)(n+2)(n+3)

> r:=RootOf(х^2-2=0,х):

> simplify(r^2,RootOf);

2

> simplify(1/r,RootOf);

½ RootOf(_Z² - 2)

> simplify(ln(x*y),power,symbolic);

ln(x) + ln(y)

> е:=(-5*b^2*а)^(1/2);

> simplify(e,radical);

> simplify(e,radical,symbolic);

> simplify(GAMMA(n+1)/n!);

1

Действие функции simplify существенно зависит от областей определения переменных. В следующем примере упрощение выражения не произошло, поскольку результат этой операции неоднозначен:

> restart;

> simplify(sqrt(х^4*у^2));

Однако, определив переменные как реальные или положительные, можно легко добиться желаемого упрощения:

> simplify(sqrt(х^4*у^2),assume=positive);

у

> simplify(sqrt(х^4*у^2),assume=real);

x²|y|

С помощью равенств можно задать свои правила преобразования, например:

> eq:=x^2+2*x*y+y^2;

eq:=х² +2ху + y²

> simplify(eq,{х=1));

y² + 2y + 1

> simplify(eq,{х^2=х*у, у^2=1});

3хy + 1

> simplify(eq,{х,у});

0

Обратите внимание на то, что указание в списке равенств только левой части равенства означает, что правая часть принимается равной нулю. Если функция simplify не способна выполнить упрощение выражения expr, то она просто его повторяет. Это сигнал к применению опций, уточняющих преобразования.

Сложность упрощаемых выражений зависит от объема ОЗУ и вида интерфейса. Очень большие выражения надо разбивать на подвыражения и работать с ними раздельно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]