Курсовая

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 8.11.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. Реферат Право касаційного оскарження рішення та порядок його реалізації
2. Реферат Вплив людини на повітря
3. Контрольная работа Развитие сотовых сетей радиосвязи с подвижными объектами
4. Реферат на тему Huck Finn Racism Essay Research Paper The
5. Реферат на тему An Analysis Of Computer Crime Law Essay
6. Курсовая на тему Ветеринарно санитарная экспертиза при отравлениях
7. Доклад Социальная проблема - социальная сеть ВКонтакте
8. Курсовая Управление экономикой России
9. Сочинение на тему Заветы Пушкина
10. Биография на тему Юзеф Мария Бохеньский