Курсовая

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 21.9.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. Контрольная работа Диагностика акцентуаций
5. Реферат Художественная культура Византии
6. Реферат на тему Jack Dempsey Essay Research Paper
7. Реферат на тему Interview With The Vampire Report Essay Research
8. Курсовая на тему Нейтропные средства Анксиолитики
9. Реферат на тему The Middle Ages Essay Research Paper The
10. Курсовая Учет расчетов с покупателями и заказчиками, с поставщиками и подрядчиками, прочими дебиторами и