Курсовая

Курсовая Призма в Maple

Работа добавлена на сайт bukvasha.net: 2015-10-25

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024





Курсовая работа

Тема работы: «Призма  в  Maple»

Я не я


Содержание

Введение ______________________________________________3

Построение призмы в Maple ______________________________ 4
Проверка компланарности введенных точек основания призмы _7


Примеры использования данной процедуры  ________________ 8




Введение

Maple — программный пакет, система компьютерной алгебры. Создана в компании Waterloo Maple Inc., которая основана в 1984 году и выпускает и продвигает на рынке ряд программных продуктов, ориентированных на сложные математические вычисления, визуализацию данных и моделирование. Система Maple предназначена для символьных вычислений, хотя имеет ряд средств и для численного решения дифференциальных уравнений и нахождения интегралов. Обладает развитыми графическими средствами. Имеет собственный язык программирования, частично подобный Паскалю.

В нем есть много встроенных пакетов, и с помощью этой программы можно выполнить практически любое вычисление или построение.

Но в нем нет некоторых, казалось бы нужных функций.

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


Построение призмы в Maple

Далее будет пошагово описана процедура построения призмы.

Задаем формальные аргументы процедуры:
X - список имён вершин основания (указывать надо в порядке обхода против или по часовой стрелке),
Y - список координат этих вершин (в том же порядке),
Z - список координат той вершины верхнего основания, которая соответствует первой в списке Y.





Prism:=proc(X::list(symbol),Y::list(list),Z::list)

Далее записываем список локальных переменных, которые будут использоваться в теле процедуры.
 local R,L,L1,L2,T,T1:
Множеству R  присваиваем разность между заданной точкой первого основания, и точкой второго основания, предполагается, что точка второго основания соответствует первой точке первого основания.
R:=seq(Z[i]-Y[1][i],i=1..3):

Создаем основание нашей будущей призмы

 
L:=plottools[polygon](Y,style=line,color=blue,thickness=2):
Строим линии от вершин многоугольника в основании используя значения полученные при расчете R

 L1:=seq(plottools[line](Y[i],[Y[i][1]+R[1],Y[i][2]+R[2],Y[i][3]+R[3]],color=blue,thickness=2),i=1..nops(Y)):
Строим второе основание:

 L2:=plottools[polygon]([seq([Y[i][1]+R[1],Y[i][2]+R[2],Y[i][3]+R[3]],i=1..nops(Y))],style=line,color=blue,thickness=2):
Теперь показываем обозначение вершин первого основания:
T:=plots[textplot3d]([seq([op(Y[i]),X[i]],i=1..nops(X))],align={above,left},color=black,font=[TIMES,ROMAN,18]):
Теперь показываем обозначение вершин второго основания, добавляя штрихи к буквам:

 T1:=plots[textplot3d]([seq([op(Y[i])[1]+R[1],op(Y[i])[2]+R[2],op(Y[i])[3]+R[3],cat(X[i],"'")],i=1..nops(X))],align={above,right},color=black,font=[TIMES,ROMAN,18]):
Выводим элементы призмы:
 L,L1,L2,T,T1:


В итоге у нас получилась такая процедура:
Prism:=proc(X::list(symbol),Y::list(list),Z::list)

local R,L,L1,L2,T,T1:

R:=seq(Z[i]-Y[1][i],i=1..3):

L:=plottools[polygon](Y,style=line,color=blue,thickness=2):

L1:=seq(plottools[line](Y[i],[Y[i][1]+R[1],Y[i][2]+R[2],Y[i][3]+R[3]],color=blue,thickness=2),i=1..nops(Y)):

L2:=plottools[polygon]([seq([Y[i][1]+R[1],Y[i][2]+R[2],Y[i][3]+R[3]],i=1..nops(Y))],style=line,color=blue,thickness=2):

T:=plots[textplot3d]([seq([op(Y[i]),X[i]],i=1..nops(X))],align={above,left},color=black,font=[TIMES,ROMAN,18]):

T1:=plots[textplot3d]([seq([op(Y[i])[1]+R[1],op(Y[i])[2]+R[2],op(Y[i])[3]+R[3],cat(X[i],"'")],i=1..nops(X))],align={above,right},color=black,font=[TIMES,ROMAN,18]):

L,L1,L2,T,T1:

end proc:


Проверка компланарности введенных точек основания призмы
Для корректной работы процедуры необходимы правильные координаты точек основания, в частности, необходимо, чтобы все точки основания лежали в одной плоскости. Чтобы проверить это условие необходимо создать специальную процедуру. Ниже приведено построение этой процедуры.
Задаем формальные аргументы процедуры:
X - список имён вершин основания (указывать надо в порядке обхода против или по часовой стрелке),
Y - список координат этих вершин (в том же порядке),
fl   - переменная булеановского типа.

Coplanar:=proc(X::list(symbol),Y::list(list),fl)

Вводим локальные переменные:

local N,S,k;
Обнуляем переменную N, которая будет использоваться в качестве счетчика.

N:=0;

Проверяем необходимость данной проверки, если количество точек основания равна трем, данная проверка не нужна.

if nops(X)>3 then

Формируем множество состоящее из точек основания:

S:=seq(geom3d[point](X[i],Y[i][1],Y[i][2],Y[i][3]),i=1..nops(X));

Запускаем цикл проверки на компланарность трех последовательных точек основания:

for k from 1 to nops(X)-3 do

if not geom3d[AreCoplanar](X[k],X[k+1],X[k+2],X[k+3]) then N:=N+1 fi od fi;

Если значение N больше 0, значит нашлась комбинация из 4х точек не лежащих в одной плоскости, в этом случае процедура выводит сообщение об ошибке,  а также присваивает переменной fl значение false.

if N>0 then print(Error); print(Povtorite); print(vvod); fl:=false fi;

Получили такую процедуру:

Coplanar:=proc(X::list(symbol),Y::list(list),fl)

local N,S,k;

N:=0;

if nops(X)>3 then

S:=seq(geom3d[point](X[i],Y[i][1],Y[i][2],Y[i][3]),i=1..nops(X));

for k from 1 to nops(X)-3 do

if not geom3d[AreCoplanar](X[k],X[k+1],X[k+2],X[k+3]) then N:=N+1 fi od fi;

if N>0 then print(Error); print(Povtorite); print(vvod); fl:=false fi;

end proc:
Чтобы активизировать эту проверку, необходимо включить  ее в исходную процедуру следующим образом:

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

global flag;

flag:=true:

Coplanar(X,Y,flag);




Пример использования данной процедуры:

plots[display](Prism([A,B,C,D,E],[[0,0,0],[0.5,-1,0],[1,0,0],[1,1.5,0],[0,1.5,0]],[0,1/sqrt(3),1]));
 

Также можно построить призму с сечением:
plots[display](Prism([A,B,C,D],[[0,0,0],[1,0,0],[1,1.5,0],[0,1.5,0]],[0,1/sqrt(3),1]),plottools[polygon]([[1,1/sqrt(3),1],[0,1/sqrt(3)+1.5,1],[1,1/2/sqrt(3)+1.5,1/2]],color=grey),plots[textplot3d]([1,1/2/sqrt(3)+1.5,1/2,E],font=[TIMES,ROMAN,18],color=black),scaling=constrained,orientation=[-35,70]);


1. Реферат на тему Huck Finn Chap 15 Essay Research Paper
2. Сочинение на тему Печорин и Грушницкий
3. Курсовая на тему Стратегическое управление как совокупность взаимосвязанных процессов
4. Реферат Региональные аспекты управления финансами в условиях рынка
5. Курсовая Звезды немого кино и русская мода 1910-х годов
6. Доклад на тему Гангрена газовая
7. Контрольная_работа на тему Мифология АФ Лосев
8. Курсовая Маркетинговая деятельность предприятия. на примере ОАО Шихан
9. Курсовая Управление деятельностью предприятия
10. Реферат Экологические проблемы развития автомобильного транспорта