Изучение оптических свойств кривых и поверхностей на примере моделирование оптических систем в прикладных программах

Определение понятия каустики - линии, огибающей семейство лучей, не сходящихся в одной точке. Ознакомление с общими сведениями о maple - системы компьютерной математики, созданной для символьных вычислений. Анализ этапов построения отражения луча.

Рубрика Программирование, компьютеры и кибернетика
Вид диссертация
Язык русский
Дата добавления 01.08.2017
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

Федеральное государственное автономное образовательное учреждение высшего профессионального образования

«Казанский (Приволжский) федеральный университет»

ИНСТИТУТ МАТЕМАТИКИ И МЕХАНИКИ ИМ. Н.И.ЛОБАЧЕВСКОГО

КАФЕДРА ВЫСШЕЙ МАТЕМАТИКИ И МАТЕМАТИЧЕСКОГО МОДЕЛИРОВАНИЯ

Профиль: Информационные технологии в физико-математическом образовании

Диссертация на тему: «Изучение оптических свойств кривых и поверхностей на примере моделирование оптических систем в прикладных программах»

Студент 2 курса

Багаутдинов З.Ф.

Научный руководитель

к. физ.-мат. наук, доцент

А.A. Агафонов

Заведующий кафедрой

д. физ.-мат., профессор

Ю.Г. Игнатьев

2017

Введение

Целью магистерской диссертации является изучение теорий каустик, оптических свойств кривых и поверхностей на примере моделирования оптических систем в СКM Maple.

Про каустики знает почти каждый из нас, кому приходилось хоть раз пить чай не из прозрачного стакана, а из чашки. Каждый из нас наблюдал, как на самом дне чашки образуются яркие линии, которые освещены намного сильнее, чем стоящие по соседству с ними точки. Также каустики можно увидеть при выжигании по дереву, когда собираешь световые лучи при помощи стекла, или при наблюдении кривых на дне какого-либо бассейна или даже ванны. Само слово каустики произошло от латинского, и в переводе означает жгучий.

Задачи работы:

1) рассмотреть теоретический материал по теме каустик;

2) ознакомится и изучить среду Maple;

3) смоделировать оптические каустики для кривых второго и третьего порядка.

Магистерская диссертация состоит из Введения, трех глав, Заключения, Списка литературы и Приложения. Первая глава посвящена обзору теории каустик. 2-я глава охватывает обзор системы компьютерной математики Maple. В 3-ей главе описывается построение и исследование каустик для различных кривых второго и третьего порядка. В заключении кратко приведены основные результаты исследования. Приложение включает в себя код программных процедур.

1. Каустика

1.1 Определение каустики

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

Яркие световые кривые очень интересной формы можно наблюдать на освещенном столе, на который поставлен граненый стакан с водой. Каустики в движении можно заметить на дне водоема, поверхность которого находиться в волнении. На дождевых каплях при преломлении солнечных лучей возникает каустика разных цветов - радуга. Каустики возникают в множестве других волновых явлений, а не только при рассмотрении световых явлений. Корабельные волны можно взять за каустику гравитационных волн на воде. Работы Я. Б. Зельдовича показывают, что из-за гравитационной неустойчивости изначально почти однородное распределение массы во Вселенной собирается на каустиках и приводит к формированию нитевидной крупномасштабной структуры вселенной.

Оптические каустики в астрономии могут определять гравитационную линзу - геометрию компактного темного объекта.

В геометрической оптики каустики изображают собой линии или поверхности .

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

Теория каустик непрерывно сопряжена с одним из направлений современной математики, это направление - теория катастроф. В дифференциальных уравнениях каустики являются опрокидыванием решений.

1.2.Каустики на плоскости

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

Если мы будем рассматривать параболу, то все лучи, которые будут проходить параллельно ее оси, после того как отражаться, соберутся в одной точке - эта точка будет фокусом параболы. Если говорить об окружности или других кривых это будет не так, лучи при отражении не будут сходиться в одной точке. Если рассматривать узкий пучок параллельных лучей, который падает на кривую, то после отражения от кривой он становиться сходящимся. Иначе говоря, отраженный пучок света не сходиться целиком в одной точке, но узкие пучки света, состоящие из рядом расположенных лучей, будут сходящимися. Точки пересечения, в которых будут сходиться лучи отражения, называются точками концентрации энергии, именно из этих точек и образуется каустика. При помощи данных рассуждений мы можем нарисовать каустику.

Отправим на кривую некоторое количество параллельных лучей. Разделим их отражения на пары и найдем точки пересечения лучей в каждой паре (рис.1.1).

Рисунок 1.1- Слева на зеркало запущены 14 лучей, справа -- 102 луча, и отмечены точки их попарного пересечения

Если начать увеличивать количество лучей, то расстояние между пересечениями парных лучей будут уменьшаться. Данные точки пересечения будут находиться с каждым разом все ближе друг к другу и на определенном этапе заполнят каустическую линию (кривую).

Рисунок 1.2- Каждый из отраженных лучей касается каустики

Мы видим один из способов того, как изучить, как устроена каустика. Можно рассмотреть еще один способ увидеть каустику - это направить множество лучей. В итоге на полученном таким образом изображении каустика будет определяться как кривая, которой при отражении касаются отраженные лучи (рис. 1.2). Это является еще одной моделью того же самого скопления световой энергии - в данном случае каждый световой луч касается каустики, что означает, что луч вдоль каустики проходит большую часть своего пути и передает ей значимую часть своей энергии. Линия, которая касается каждой прямой из некоторого семейства прямых - является огибающей этого семейства. Получается что, каустикой является огибающая световых лучей. Каустику можно назвать каркасом, на который надеты все световые лучи.

1.3.Каустики в пространстве

Все становиться на порядок сложнее и намного интересней, если рассматривать каустики в трехмерном пространстве. В трехмерном пространстве есть две точки скопления энергии. По-другому можно сказать, что поверхность каустики в пространстве состоит из пары листов.

Для примера возьмем отражающую поверхность следующего вида:

,

И направим на не сверху пучок параллельно оси z. Если рассматривать плоскость y = 0, то мы получим отражение от параболы z = x2, а в плоскости x = 0 отражение будет идти от параболы z = 2y2. Получаться разные параболы, и лучи от них будут скапливаться на разных высотах и в разных точках по оси z. Одна из точек будет находиться на одном листе нашей каустической поверхности, а вторая на другом.

Рисунок 1.3 -За счет перепада давления стекла прогибаются внутрь

В последнее время в Интернете находят фотографии ярких четырехугольных звезд на стенах сооружений. Эти рисунки являются результатом отражения лучей солнца от пластиковых окон близ лежащих домов.

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

,

подобрав соответствующие константы k и m.

Рисунок 1.4- Изображение на экране -- стене дома -- при малом удалении (а) и при большем удалении (б)

Если ограничить кусок окна некоторой поверхностью и направить лучами света, направленными сверху параллельным пучком, а на пути света поставить экран, то при незначительном удалении от нашего окна мы сможем наблюдать на экране картинку, основным фрагментом этой картинки будет являться звезда, состоящая из восьми углов (рис. 1.4 (a)). Если же экран будет отодвинут на большее расстояние, то мы сможем увидеть звезду, состоящую из четырех углов, на фоне наиболее меньшего овала (рис.1.4(б)), что будет соответствовать реальным фотографиям. Четыре отсутствующих по сравнению с левым рисунком луча оказались отрезанными от звезды из-за того, что мы рассматриваем отражение только от ограниченного куска поверхности -- от квадратного окна.

Рисунок 1.5- Два вида на каустическую поверхность

Теперь попробуем изобразить саму каустическую поверхность, подобную заданному каустическому изображению. Она фактически будет собрана из двух листов. На рисунке 1.5 цветом зафиксировано удаление точек каустики от заданной поверхности: синие точки находятся ближе к поверхности, красные - дальше от поверхности. Сечением одного из листов нашей каустики будет звезда из восьми углов, сечение другого будет границей окружающего звезду овала.

Каустики могут образовываться не только при отражении, но и при преломлении света, скажем на поверхности воды.

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

,

Рисунок 1.6- Изображение на экране - на дне сосуда

Зафиксируем постоянную k и угол падения солнечных лучей б и вспомним, что для воды показатель преломления n = 1,33. С помощью закона преломления sin б = nsin в можно рассчитать направление преломленных лучей - угол в - и, значит, построить картину, которую формируют лучи на экране, расположенном под поверхностью воды - на дне сосуда. Отчетливо видна та же самая асимметричная четырехугольная звезда (рис.1.6), что и на фотографии см..

Рисунок 1.7- Каустическая поверхность, образующаяся при преломлении на воздушном пузырьке

А вот и соответствующая каустическая поверхность для преломленных лучей (рис. 1.7). Синие точки расположены ближе к поверхности воды, а красные более удалены от нее. Сечение внутренней поверхности представляет собой четырехугольную звезду, а внешней -- граница овала, содержащего эту звезду.

Табл. 1. Кривые и их каустики.

Кривая

Источник света

Каустика

Окружность

На плоскости

Кардиоида

Окружность

Не на плоскости

Улитка Паскаля

Окружность

Бесконечность

Нефроида

Парабола

Лучи,

перпендикулярные

директрисе

Кривая третьего

порядка

Чирнгаузена

Кривая Чирнгаузена

Фокус

Полукубическая

парабола

Циссоида Диоклеса

Фокус

Кардиоида

Кардиоида

Касп

Нефроида

Четырёхлистник

Центр

Астроида

Дельтоид

Бесконечность

Астроида

Логарифмическая

спираль

Центр

Логарифмическая спираль

Циклоида

Лучи, перпендикулярные

линии через каспы

1/2 Циклоиды

y = Ex

Лучи, перпендикулярные

y-лучу

Цепная линия

1.4 Математическая модель каустики

Теория огибающих имеет важное приложение в оптике. Пусть точечный источник света расположен в точке A плоскости. Лучи света, исходящие из A, падают на кривую Z, которая является зеркалом, и, отражаются от нее по правилу равенства углов падения и отражения. Огибающую всех отраженных лучей называют катакаустикой или фокальной линией отражения.

Теорема: Пусть точка A имеет координаты (). Тогда уравнение прямой, на которой лежит луч, отраженный от точки (X,Y) зеркала Z имеет вид:

,

Где N=0 - уравнение в декартовых координатах (x,y) касательной к кривой z в точке (X,Y);

§ T=0 - уравнение в декартовых координатах (x,y) нормали к кривой z в точке (X,Y);

§ и - результат подстановки в выражения для N и T.

Если зеркало Z задано параметрическими уравнениями:

,

то уравнение

,

,

определяет прямую, на которой лежит луч, отраженный от зеркала в точке (X,Y).

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

Пример. Найти катакаустику при отражении от параболы и при источнике света, расположенном в точке x=0,y=0.

Рисунок 1.8- Отражение лучей от кривой

На рисунке 1.8 падающие лучи показаны желтым, отраженные -- красным.

Решение. Имеем и уравнение семейства отраженных прямых

,

Для нахождения уравнения огибающей данного семейства, вычисляем дискриминант этого полинома, рассматриваемого относительно переменной t:

.

Это уравнение определяет одну изолированную точку x=0, y=1/4 (фокус параболы) и некоторую кривую, симметричную относительно оси . Мы выделим только ее кусок, лежащий внутри параболы (рис.1.9):

Рисунок 1. 9- Каустика

Теперь проиллюстрируем другой способ представления каустики -- в параметрическом виде. Продифференцируем уравнение семейства по параметру t:

,

и разрешим получившуюся систему относительно x и y:

,

Заметим, что если бы мы двигали источник света по оси по направлению к фокусу параболы, то отраженные от нее лучи пересекались бы все дальше и дальше, пока не стали бы параллельными этой оси. На этом факте основано применение параболы: отражающая поверхность прожектора делается в виде параболоида вращения, в фокус которого помещается источник света.

Можно и «обратить» процесс, заставив лучи, приходящие «из бесконечности» собираться в фокусе -- тогда мы получаем параболическую антенну спутникового телевидения, или же боевое оружие античности, первое появление которого принято связывать с именем Архимеда.

Рисунок 1. 10- Катакаустика

Пример. Катакаустика (рис.1.10) при отражении от полуокружности при источнике света, находящемся «на бесконечности»:

дает представление о картинке, наблюдаемой при отражении солнечных лучей от поверхности чашки.

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

,

Дифференцируем это равенство по t и находим y, затем подстановкой в исходное устанавливаем x:

,

Из этих уравнений можно найти и неявное представление каустики в виде:

,

Эта кривая известна как нефроида и относится к типу эпициклоид.

Пример. Катакаустика при отражении от окружности при источнике света, находящемся внутри нее (рис.1.11):

Рисунок 1. 11- Катакаустика (источник света внутри).

Для окружности и при имеем уравнение каустики в виде:

,

При источнике на самой окружности -- например, при , - получим уравнение каустики в виде:

,

оно определяет замкнутую кривую, которая называется кардиоидой

Рисунок 1. 12- Кардиодида

1.5 Примеры каустик

Радуга - это частный случай каустики, игр света. Каустика представляет собой сложную, а иногда и очень красивую картину, создаваемую сходящимися световыми лучами в результате их (многократных) преломлений и отражений на поверхностях раздела сред с различной оптической плотностью. Простейшими случаями каустики являются: яркая точка света в фокусе собирающей линзы; тонкий луч прожектора, в фокусе параболического зеркала которого имеется точечный источник света; сложная световая фигура (кардиоида) внутри полого, открытого сверху цилиндра (например, чашки) при отражении света от его внутренней поверхности; дрожащие ячейки света на дне неглубокого водоёма; узкие лучи, полученные в результате отражений от поверхностей 2-го и более высоких порядков; солнечные и лунные дорожки на поверхности воды и, наконец, радуга на небе.

Значение каустик во вселенной

В настоящее время распределение вещества во Вселенной чрезвычайно неоднородно (существуют планеты. Солнце, звезды, галактики, скопления галактик и т. д.). Современная астрофизика считает, что на ранних этапах развития Вселенной таких неоднородностей не было. Как же они сформировались? Я. Б. Зельдович в 1970 г. предложил объяснение образования скоплений пылевидной материи, математически эквивалентное анализу возникновения особенностей каустик, начатому в 1963 г. Е. М. Лифшицем, Халатниковым и Судаковым.

Рассмотрим бесстолкновительную среду, т. е. среду настолько разреженную, что ее частицы проходят друг "сквозь" друга, не сталкиваясь. Предположим, для простоты, что частицы не взаимодействуют и движутся по инерции: через какое-то время t частица, находившаяся в точке х, перейдет в точку х + vt.

Предположим, что в начальный момент скорость частицы, находящейся в точке х, была v0 (х); векторное поле v0 называется начальным полем скоростей среды. С течением времени частицы будут двигаться, и поле скоростей будет меняться (хотя скорость каждой частицы и не меняется, в следующий момент времени эта частица находится на новом месте).

На рисунке 1.13 показано начальное поле скоростей одномерной среды v0 и получающиеся из него через время t = 1, 2 и 3 ноля v1, v2, v3. Мы наблюдаем, что, начиная с определенного момента, более быстрые частицы начинают обгонять более медленные; в результате чего, поле скоростей становится трехзначным: через одну точку пространства три потока частиц проходят с разной скоростью.

Рисунок 1.13- Эволюция поля скоростей бесстолкновительной среды

Движение нашей среды можно описать как однопараметрическое семейство отображений прямой на прямую. Собственно для каждого t определено отображение gt, переводящее начальное положение частицы (х) в конечное: gt = х + v0 (х)t.

Отображение g0 является тождественным преобразованием, оставляющим каждую точку на месте. Отображения, соответствующие моментам t, близким к 0, взаимно однозначны и не имеют особенностей. После момента первого обгона отображение gt имеет две складки.

Рисунок 1.14- Особенности плотности после обгона

Пусть в начальный момент плотность среды в точке х была с0(х), Со временем плотность изменится. Легко догадаться, что после обгона график плотности будет иметь вид (на расстоянии 8 от точки складки плотность оказывается порядка 1/vе).

Исходя из этого, небольшие отличия начального ноля скоростей от постоянного приводят через достаточно большое время к образованию скоплений частиц (в местах бесконечно большой плотности).

2. Maple

Для построения каустик, используется система компьютерной математики Maple (ver. 17) о которой и будет идти речь в этой главе.

2.1 Общие сведения о СКМ Maple

Maple - это система компьютерной математики созданная для символьных вычислений, работы с математическими выражениями в разных формах.

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

2.2 Программирование в СКМ Maple

Оператор цикла

Как и в других языках программмирования, в операторе цикла надо указать переменную цикла, ее начальное значение (from), шаг (by), и ее конечное значение (to) и условие для ее выполнения (while). Тело цикла, если даже тело состоит не из большого количества операторов, располагается между do и od. Команда для закрытия скобки od может быть убрана и вместо нее могут стоять команды end или end do. Не все команды оператора цикла могут быть включены в цикл, это является не обязательным условием. Обычно за начальное условие применяется единица и тогда это выглядит следующим образом from: =1(это можно не писать). Как и начальное условие, шаг цикла будет равен единице, a условие while, и, если дано конченое число для заданной переменной данного цикла, нужно указывать только для того чтобы досрочно выйти из цикла. Аналогично, если будет дано условие, то конечное число можно не вносить. Пример:

> k:=0;

> for i from 1 by 2 to 12 while (k<3) do k:=i od;

При выполнении данного цикла (в данном случае он выйдет из цикла при значении k равным 4) на экран выводиться всего две записи k: =1 и k: =3, фиксирующие присвоение заданной переменной k чисел 1 и 3. До выполнения данного цикла нашей переменной следует присвоить любое значение, если мы этого не сделаем система выдаст сообщение об ошибке и не сможет выполнить проверку этого условия (Error, cannot determine if this expression is true or false). Наша переменная цикла после выполнения присваивает и сохраняет последнее пройденное значение. У нас в примере им будет число 5. Чтобы программа нам вывела на экран значение i не нужно использовать обычные операторы print или while. Нужно написать имя нашей переменной и точку с запятой:

> i;

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

> for i to 5 do for j to 6 do i*j od;od;

То в независимости от того что мы поставим: точку с запятой или же двоеточие, результат промежуточных вычислений мы не сможем увидеть, пока не применим специальный оператор вывода, например, print.

Условный оператор

Простейший условный оператор включает три основные служебные команды: if, then и end. Логическое выражение (условие) ставиться после оператора if. Всегда в конце условного оператора следует поставить: end, fi или end if. Например: if k<5 then k5 end. Если взять усложненную форму оператора, то есть возникает возможность выбора из нескольких вариантов: if k <5 then k5 else k0 end. При выполнении условия k <5, на экран будет выводиться значение переменной k5, если оно не будет выводиться, то на экран выводиться условие k0. Также условный оператор может выполнять команды как оператор выбора:

> if k=1 then k1

> elif k=2 then k2

> elif k=4 then k4

> elif k=5 then k5 else k0 end if;

Опираясь на значение переменной k производиться вывод на экран одного и заданных выражений k1, k2, k3 или k5. Но если не удовлетворяется ни одно из условий, то оператор выдаст значение k0. Есть еще условный оператор, который имеет следующую структуру обращений: `if' (K, M, L). Тут K- заданное условие, за M выступает выражения, возвращающее оператор. Ели заданное условие является истинным, за L выступает выражение, возвращающее условие, если данное условие ложно. Данный оператор удобно использовать определенно в формулы, в качестве некоторой функции какой- либо переменной K с обоими ее значениями M и L.

Процедуры

Для описания простейшей процедуры нужно описать ее имя, перечислить аргументы и задать тело процедуры. В ниже приведенной процедуре F c F с аргументами x и y производиться вычисление произведения xy:

> F:=proc(x,y) x*y end;

Для того чтобы обратиться к процедуре может выглядеть следующим образом: F(5,9) .

Функции

В системе компьютерной математики Maple функция является упрощенным типом процедуры. Как и в процедурах нужно указывать название, обозначать аргументы и тело заданной функции. Все аргументы нужно указывать в скобках. Если аргумент единственный, то скобки можно не писать. Ниже приведен пример, помогающий вычислить мощность объединения и пересечения множеств:

> A:={a,b,c}:

> B:={a,b,d}:

> f:=(x,y) -> (nops(x union y),nops(x intersect y) );

> f(A,B);

f := (x, y)>(nops(x ? y), nops(x ? y))

4, 2.

2.3 Работа с графикой

Для того чтобы построить график или нарисовать рисунок, включая анимированных графиков и рисунков, в СКM Maple существует большое количество разнообразных команд. Множество из них требует того, чтобы был вызван пакет, включающий данную команду. Несложные графики можно построить тривиальным оператором plot. Для оператора plot не нужно подключение каких-либо команд. Для него не нужно дополнительных средств.

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

*График элементарных функций; plot(cos). В данной команде указание аргумента не обязательно (рис.2.1).

Например, такие не очень привычные выражения, как plot(sin+cos). Такие математические высказывания случат либо как демонстративный материал, либо как не очень сложный справочный. Довольно нечасто такие виды обращений используют для оператора plot.

* График (рис.) функции y = sin(x) с обозначением пределов x=0..2*Pi и обрезанием системы координат(0..0.8):

plot(sin(x),x=0..2*Pi,0..0.8).

Если не фиксировать ограничения по оси, то на графике будет показан весь график (если он не определен на бесконечности).

Рисунок 2.1- График функций y = sin(x) и y = sin(x) с ограничениями

3. Построение модели каустики для кривой второго порядка, заданной в параметрическом виде

В данной работе рассматривается два случая :

1)Когда источником света выступают точки находящиеся на заданном расстоянии друг от друга на заданной прямой

2)Когда источником света выступает пучок света.

Для каждого из этих случаев рассматриваются следующие модели, состоящие из:

1.Источника света (Пучок или параллельные лучи)

2.Отражающей поверхности (кривая) заданной в параметрическом виде.

3.Лучей света, описываемых законами геометрической оптики.

Модель источников света

Для начала рассмотрим случай, когда источником света выступает прямая на которой расположены точки, на прямой параллельной Oy (x=const) и отдалённой от вершины заданной кривой на расстоянии L.

Источники света равномерно располагаются на заданной прямой с шагом h.

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

Рисунок 3.1- Построение отражения луча

В качестве источника света (рис.3.1) возьмем прямую (1), из которой будут выходить лучи света, заданные через направляющий вектор (2). В работе я буду рассматривать различные вариации направления вектора и начальных данных прямой. Исследую и рассмотрю различные прямые и различные источники света , а также различное количество лучей падающий на заданную кривую.

Геометрическая оптика

Геометрическая оптика - это раздел оптики, рассматривающий законы излучения света в различных средах и отражения света от различного вида поверхностей. каустика компьютерный maple

Закон отражения света

Луч света в определенной среде прямолинеен до того момента, пока он не достигнет границы данной среды с другой средой. На границе этих сред луч света изменяет свое направление. Часть света (а в ряде случаев и весь свет) возвращается в первую среду. Это явление называется отражением света. Одновременно свет частично проходит во вторую среду, меняя при этом направление своего распространения - преломляется.

Вычисление отражённого луча

Если использовать вектора, то решение находиться в более простом виде (рис.3.2):

Рисунок 3.2- Геометрическое представление отражения луча

Для того чтобы найти вектор отражения нам нужно из вектора направления света вычесть удвоенное произведение вектора нормали на отношение скалярного произведения вектора направления света и нормали к скалярному произведению вектора нормали самого на себя:

,

Делит на скалярное произведение нормали самой на себя не нужно, если данная нормаль уже нормирована. Если прямая задана точкой (, ) и вектором направления (, ), то вектор нормали (ненормированный). В некоторых случаях нужно знать знак нормали , чтобы знать, какая сторона прямой «внешняя».

Алгоритм построения для первого источника света(параллельные лучи) (Рис.3.3):

1. Построение кривой. Кривая должна быть задана в параметрическом виде.

2. Задаем прямую на которой будут располагаться источники света.

3. Задаем точку на данной прямой из которой будет исходить луч света.

4.Задаем направление вектора источника света.

5. При помощи точки и направляющего вектора вычисляем уравнение прямой.

6. Строим отрезок соединяющий точку на прямой и точку пересечения.

7. Находим нормаль.

8.Строим направление отраженной от кривой луча.

9.Строим прямую, определяющую направление отраженного луча.

Рисунок 3.3- Параллельно направленные лучи

Рисунок 3.4- Пучок света

Алгоритм построения для второго источника света(Пучок)(Рис.3.4):

1. Построение кривой .Кривая должна быть задана в параметрическом виде.

2. Задаем точку источники света.

3. Задаем прямую на которой будут располагаться координаты направляющих векторов.

4.Задаем направление вектора источника света .

5. При помощи точки и направляющего вектора вычисляем уравнение прямой.

6. Строим отрезок соединяющий точку на прямой и точку пересечения.

7. Находим нормаль.

8.Строим направление отраженной от кривой луча

9.Строим прямую, определяющую направление отраженного луча

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

Ее уравнение в параметрическом виде будет выглядеть следующим образом:

, (3.2)

где t-параметр.

Уравнение прямой будет выведено при помощи начальной точки и вектора направления:

, (3.3)

где k-параметр , - координата начальной точки на оси Ox, -координата начальной точки на оси Oy , -координата направления вектора на оси Ox,-координата направления вектора на оси Oy.

Для нахождения точек пересечение запишем наше уравнение в векторном виде:

, (3.4)

Затем нужно найти точки пересечения, точки пересечение получим приравняв по координатам части пар метрически заданных функций:

, (3.5)

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

3.1 Построение модели каустики для плоскости, заданной в параметрическом виде

Построение каустик в пространстве производиться подобно двумерному случаю.

Алгоритм

1. Строим геометрические фигуры, с определенными ограничениями.

2. Задаем плоскость, которая будет выступать в роли источника света.

3. Задаем точку на плоскости, из которой будет исходить луч света

4. Задаем направление вектора при помощи второй точки.

5. Через начальную точку, и направление вектора находим точку пересечения луча с плоскостью.

6. Строим отрезок соединяющий точку на прямой и точку пересечения.

7. Находим нормаль.

8. Строим направление отраженного от плоскости луча.

9. Строим прямую, определяющую направление отраженного луча.

3.2 Написание программных процедур СКМ Maple

Двумерный случай

Для начала задаем параметрическое уравнение кривой второго порядка:

r:=[t^2/(2*3),t]:

Далее вводим координаты начальной точки:

x[0]:=10;

y[0]:=5;

Задаем направляющий вектор:

x_dir[0]:=-1;

y_dir[0]:=.3;

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

if x_dir[0]=0 then

a:=[x[0],y_dir[0]*k+y[0]];

else

a:=[x_dir[0]*k+x[0],y_dir[0]*k+y[0]]:

end if:

Описываем уравнение наше кривой и ограничения на которых она будет строиться:

plt[01]:=plot([op(r),t=-20..20],scaling=constrained):

Описываем точку, при помощи которой будем задавать направление луча:

plt[02]:=point([x[0],y[0]]):

Описываем точку, которая будет задавать направления луча света

выводим все значения, которые мы записали:

plt[03]:=point([x[0]+x_dir[0],y[0]+y_dir[0]]):

Описываем уравнение нашей прямой и ограничения на которых она будет задаваться:

plt[04]:=plot([op(a),k=-20..20],scaling=constrained):

Выводим все значения, которые мы получили (Рис.3.4):

display([plt[01],plt[02],plt[03],plt[04]],scaling=constrained,axes=none);

Рисунок 3.5- Построение кривой, начальной точки, и вектора направления

Следующим шагом записываем систему уравнений, для нахождения точки падения луча:

tmp1:=solve(eq,{t,k});

Находим точки пересечения прямой и кривой:

y[1]:=rhs(tmp1[1][2]):

x[1]:=subs(t=rhs(tmp1[1][2]),r[1]):

y[2]:=rhs(tmp1[2][2]):

x[2]:=subs(t=rhs(tmp1[2][2]),r[1]):

Рассчитываем расстояние между корнями получившихся уравнений и начальной точкой:

per1:=sqrt((x[1]-x[0])^2+(y[1]-y[0])^2):

per2:=sqrt((x[2]-x[0])^2+(y[2]-y[0])^2):

Выбираем подходящую нам точку при помощи задания условия:

if evalf(sqrt((x[1]-x[0])^2+(y[1]-y[0])^2))<(sqrt((x[2]-x[0])^2+(y[2]-y[0])^2)) then

x[11]:=x[1]

else x[11]:=x[2]

end if;

if evalf(sqrt((x[1]-x[0])^2+(y[1]-y[0])^2))<(sqrt((x[2]-x[0])^2+(y[2]-y[0])^2)) then

y[11]:=y[1]

else y[11]:=y[2]

end if;

Для вычисления касательной находим производную:

dr:=diff(r,t);

Находим касательную:

kas:=evalf(subs(t=y[11],dr));

Задаем условие для вывода нормали и выводим нормаль:

norm1:=[kas[2],-kas[1]];

if norm1[1]*(x[0]-x[11])+norm1[2]*(y[0]-y[11])<0

then norm1:=[-kas[2],kas[1]];

end if;

Описываем точку определяющую вектор нормали:

plt[07]:=point([x[11]+norm1[1],y[11]+norm1[2]]):

Выводим все значения, которые мы получили (Рис.3.5):

display([plt[01],plt[02],plt[04],plt[07]],scaling=constrained,axes=none);

Рисунок 3.6- Построение кривой, начальной точки, точки пересечения и направления нормали

По ранее выведенным формулам находим поэтапно вектор отражения.
Первым этапом находим отношение скалярного произведения вектора направления и вектору нормали к скалярному произведению вектора нормали самого на себя:

n1:=(x_dir[0]*norm1[1]+y_dir[0]*norm1[2])/(norm1[1]*norm1[1]+norm1[2]*norm1[2]):

Затем находим удвоенное произведение вектора нормали на получившуюся константу n1:

n2:=[norm1[1]*2*n1,norm1[2]*2*n1]:

Вычитаем из вектора направления вектор n2:

l:=[x_dir[0]-n2[1],y_dir[0]-n2[2]]:

Получившийся вектор l и будет вектором отражения. Запишем уравнение отражённой прямой:

lk:=solve((x-x[11])/l[1]=(y-y[11])/l[2],y);

Описываем уравнение отраженной прямой:

plt[08]:=plot(lk,x=x[11]-5..x[11],scaling=constrained):

Выводим все значения которые мы получили (Рис.3.6):

display([plt[01],plt[02],plt[04],plt[05],plt[08]],scaling=constrained,axes=none);

Рисунок 3.7- Построение кривой, начальной точки, и вектора направления

Далее пишем процедуру для некоторого количества лучей.

Для начала зададим входные параметры : кривую в параметрическом виде и ограничения для нее:

r1:=[t^2/(2*60),t]:

t1:=-10:

t2:=10:

1)Затем перейдем к первой процедуре. Первая процедура будет заполнять заданный нами массив определенными значениями. В данной процедуре будут заполняться только две точки, первая из которых является начальной, а вторая характеризует вектор направления:

prbRefLines:=proc(L,h,d1,d2,N)

global Line_, r1;

local dh,dir,i;

dir:=[d1,d2]:

dh:=(h/N):

for i from 1 to N do

Line_[i]:=[[L,-h/2+(i-1)*dh],dir,[0,0],[0,0]];

end do:

end proc:

2)Вторая процедура будет считать точку пересечения и точку характеризующую вектор направления луча отражения:

prbRefArray:=proc(L,N)

global Line_, r1:

local dir_,x,y,a_,tmp1,kas,per1,per2,norm,l,n1,n2,k,i,dr;

# вектор направления

for i from 1 to N do

# расчет пересечения:

a_:=[k*Line_[i][2][1]+Line_[i][1][1],k*Line_[i][2][2]+Line_[i][1][2]]:

if Line_[i][2][1]=0 then

a_:=x=Line_[i][1][1]:

else

a_:=[k*Line_[i][2][1]+Line_[i][1][1],k*Line_[i][2][2]+Line_[i][1][2]]:

end if:

solve({r1[1]=a_[1],r1[2]=a_[2]},{t,k}):

tmp1:=solve({r1[1]=a_[1],r1[2]=a_[2]},{t,k}):

y[1]:=rhs(tmp1[1][2]):

x[1]:=subs(t=rhs(tmp1[1][2]),r1[1]):

y[2]:=rhs(tmp1[2][2]):

x[2]:=subs(t=rhs(tmp1[2][2]),r1[1]):

per1:=evalf(sqrt((x[1]-Line_[i][1][1])^2+(y[1]-Line_[i][1][2])^2)):

per2:=evalf(sqrt((x[2]-Line_[i][1][1])^2+(y[2]-Line_[i][1][2])^2)):

if evalf(sqrt((x[1]-Line_[i][1][1])^2+(y[1]-Line_[i][1][2])^2))<evalf(sqrt((x[2]-Line_[i][1][1])^2+(y[2]-Line_[i][1][2])^2)) then

Line_[i][3][1]:=x[1]

else Line_[i][3][1]:=x[2]

end if:

if evalf(sqrt((x[1]-Line_[i][1][1])^2+(y[1]-Line_[i][1][2])^2))<evalf(sqrt((x[2]-Line_[i][1][1])^2+(y[2]-Line_[i][1][2])^2)) then

Line_[i][3][2]:=y[1]

else Line_[i][3][2]:=y[2]

end if:

# Нормаль в новой точке

dr:=diff(r1,t):

kas:=evalf(subs(t=Line_[i][3][2],dr)):

norm:=[kas[2],-kas[1]]:

if evalf(norm[1]*(Line_[i][1][1]-Line_[i][2][1])+norm[2]*(Line_[i][1][2]-Line_[i][2][2]))<0 then norm:=[-kas[2],kas[1]]:

end if:

#Вектор направления отражения

n1:=(Line_[i][2][1]*norm[1]+Line_[i][2][2]*norm[2])/(norm[1]*norm[1]+norm[2]*norm[2]):

n2:=[norm[1]*2*n1,norm[2]*2*n1]:

l:=[Line_[i][2][1]-n2[1],Line_[i][2][2]-n2[2]]:

#точка отраженная

Line_[i][4][1]:=l[1]:

Line_[i][4][2]:=l[2]:

end do:

end proc:

3) Третья процедура будет демонстрировать лучи падения и лучи отражения:

pprbLines:=proc(L,h,N)

global r1,t1,t2:

local pltprb,pltLines,pltLines1;

print(r1);

pltprb:=plot([op(r1),t=t1..t2],scaling=constrained,

color=black,

thickness=3):

pltLines:=display(

seq(

line(

Line_[i][1],

Line_[i][3],

color=red),

i=1..N),

insequence=false,

scaling=constrained

);

pltLines1:=display(

seq(

line(

Line_[i][3],

Line_[i][4],

color=green),

i=1..N),

insequence=false,

scaling=constrained

);

display([pltLines,pltprb,pltLines1],scaling=constrained,axes=none);

end proc:

И самая главная процедура которая будет включать три предыдущие и выводить наши отражения:

Mainproc:=proc(L,h,d1,d2,N)

global r1,t1,t2:

prbRefLines(L,h,d1,d2,N):

prbRefArray(L,N):

pprbLines(L,h,N):

end proc:

Mainproc(20,20,-10,-.1,10);

eval(Line_):

В результате получим следующую картинку (Рис.3.7).

Рисунок 3.8- Каустика, при отражении лучей от параболы (параллельно падающие)

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

Рисунок 3.9- Каустика, при отражении лучей от параболы(пучок)

Трехмерный случай

Отражение на плоскости будем рассматривать на примере параболоида.

Задаем начальные условия для прямой:

x[0]:=0:

y[0]:=0:

z[0]:=0:

ax:=1:

ay:=-.3:

az:=10:

Задаем уравнение плоскости и уравнения прямой:

a:=x^2+y^2-z;

b:=x-x[0]/ax=y-y[0]/ay;

c:=y-y[0]/ay=(z-z[0])/az;

Рисуем прямую и параболоид:

pl_b:=spacecurve([ax*t+x[0],ay*t+y[0],az*t+z[0]],t=-10..10):

pl_a:=implicitplot3d(a,x=-10..10,y=-10..10,z=-10..10,numpoints=5000):

Находим точку пересечения прямой и плоскости:

sol:=evalf(solve({a,b,c},{x,y,z}));

x_:=evalf(subs(sol,x));

y_:=evalf(subs(sol,y));

z_:=evalf(subs(sol,z));

pl_b:=spacecurve([ax*t+x[0],ay*t+y[0],az*t+z[0]],t=-1..1):

pl_a:=implicitplot3d(a,x=-10..10,y=-10..10,z=-10..10,numpoints=5000):

pl_c:=pointplot3d([x_,y_,z_],color=red);

Находим производные в точках :

x1:=subs({x=x_,y=y_,z=z_},diff(a,x)):

y1:=subs({x=x_,y=y_,z=z_},diff(a,y)):

z1:=subs({x=x_,y=y_,z=z_},diff(a,z)):

Вектор прямой задается следующим образом:

l:=[ax,ay,az];

Вектор нормали задается следующим образом:

n1:=[x1,y1,z1];4

Уравнение нормали и вывод:

pl_e:=spacecurve([x1*t+x_,y1*t+y_,z1*t+z_],t=-8..4,color=green):

Аналогично двумерному случаю находим вектор отражения при помощи вектора падения луча и вектора нормали:

k:=dotprod(l,n1)/dotprod(n1,n1);

p:=[2*k*n1[1],2*k*n1[2],2*k*n1[3]];

r:=l-p;

Вектор l будет вектором отражения.

Задаем уравнение отраженного луча, и обозначаем его:

b1:=(x-x_)/r[1]=(y-y_)/r[2];

c1:=(y-y_)/r[2]=(z-z_)/r[3];

pl_d:=spacecurve([r[1]*t+x_,r[2]*t+y_,r[3]*t+z_],t=-1..1,color=yellow):

Выводим луч падения (фиолетовый), нормаль (зеленая), отраженный луч (желтый) (Рис.3.8).

Рисунок 3.10- Отражение луча от плоскости.

Заключение

В ходе данной работы был рассмотрен теоретический материал по теме каустик и были изучены их свойства .Также в ходе магистерской диссертации была изучена среда СКМ Maple. Была создана процедура для моделирования каустик для кривых второго порядка.

Таким образом, цели, поставленные в квалификационной работе, выполнены.

Список использованной литературы

1. Burridge, R. Asymptotic evaluation of integrals related to time-domain fields near caustics, SIAM J. Appl. Math., 55:2, 1995.

2. Андреев, А.Н. Каустики на плоскости/ А.Н. Андреев, А.А. Панов «Квант» -2010. -№3.

3. Арнольд, В. И. Особенности каустик и волновых фронтов, В.И. Арнольд - М.: Фазис, 1996.

4. Арнольд, В. И. Теория катастроф / Арнольд В. И. М.: Наука, 1990.

5. Баев, А. В. Математическое моделирование волн в слоистых средах вблизи каустики/ А. В. Баев// Матем. Моделирование-2013- 25:12-С.83-102

6. Гольдин, С.В. Сейсмическое волновое поле в близи каустик: анализ во временной области/ С.В. Гольдин, А.А. Дучков //Физика Земли. - 2002.- №7. С.56-66.

7. Дьяконов, В.П. Maple 9.5/10 в математике, физике и образовании/ В.П. Дьяконов- М.: СОЛОН-Пресс, 2006. - 720 с.

8. Кирсанов, М. Н. Задачи по теоретической механике с решениями в Maple 11. М.: Физматлит, 2010, 264с.

9. Кирсанов, М.Н. Maple и Maplet. Решения задач механики / Кирсанов М.Н.-М.: Лань, 2012. -512с.

10. Лонгейр, М. Крупномасштабная структура Вселенной/ Ред. М. Лонгейр, Я. Эйнасто. - М.: Мир, 1981.

11. Постон, Т. Теория катастроф и ее применения/ Постон Т., Стюарт И. - М.: Мир, 1980.

12. Яновская, Т.Б. Численный метод расчета поля поверхностной волны при наличии каустик / Яновская Т.Б., Гейгер М.А.//Физика Земли. - 2007.

Приложение

Программные процедуры моделирования каустик

#Отражение от произвольной кривой(параллельное падение лучей)

> restart:

with(plots):

with(plottools):

> prbRefLines:=proc(L,h,d1,d2,N)

global Line_;

local dh,dir,i;

dir:=[d1,d2]:

dh:=(h/N):

for i from 1 to N do

Line_[i]:=[[L,-h/2+(i-1)*dh],dir,[0,0],[0,0]];

end do:

end proc:

> prbRefLines(5,10,-1,-.1,50);

eval(Line_):

> prbRefArray:=proc(p,L,N)

global Line_:

local dir_,x,y,a_,r1,tmp1,kas,per1,per2,norm,l,n1,n2,k,i,dr;

#print(Line_[1]);

# вектор направления

for i from 1 to N do

#print(Line_[i][2][1]):

Line_[i][2][2]:

# расчет пересечения:

a_:=[k*Line_[i][2][1]+Line_[i][1][1],k*Line_[i][2][2]+Line_[i][1][2]]:

if Line_[i][2][1]=0 then

a_:=x=Line_[i][1][1]:

else

a_:=[k*Line_[i][2][1]+Line_[i][1][1],k*Line_[i][2][2]+Line_[i][1][2]]:

end if:

#print(a_);

r1:=[t^2/(2*p),t]:

solve({r1[1]=a_[1],r1[2]=a_[2]},{t,k}):

tmp1:=solve({r1[1]=a_[1],r1[2]=a_[2]},{t,k});

y[1]:=rhs(tmp1[1][2]):

x[1]:=subs(t=rhs(tmp1[1][2]),r1[1]):

y[2]:=rhs(tmp1[2][2]):

x[2]:=subs(t=rhs(tmp1[2][2]),r1[1]):

per1:=sqrt((x[1]-Line_[i][1][1])^2+(y[1]-Line_[i][1][2])^2):

per2:=sqrt((x[2]-Line_[i][1][1])^2+(y[2]-Line_[i][1][2])^2):

#print([per1,per2]):

if evalf(sqrt((x[1]-Line_[i][1][1])^2+(y[1]-Line_[i][1][2])^2))<evalf(sqrt((x[2]-Line_[i][1][1])^2+(y[2]-Line_[i][1][2])^2)) then

Line_[i][3][1]:=x[1]

else Line_[i][3][1]:=x[2]

end if:

if evalf(sqrt((x[1]-Line_[i][1][1])^2+(y[1]-Line_[i][1][2])^2))<evalf(sqrt((x[2]-Line_[i][1][1])^2+(y[2]-Line_[i][1][2])^2)) then

Line_[i][3][2]:=y[1]

else Line_[i][3][2]:=y[2]

end if:

# Нормаль в новой точке

dr:=diff(r1,t):

kas:=evalf(subs(t=Line_[i][3][2],dr)):

norm:=[kas[2],-kas[1]]:

if evalf(norm[1]*(Line_[i][1][1]-Line_[i][2][1])+norm[2]*(Line_[i][1][2]-Line_[i][2][2]))<0 then norm:=[-kas[2],kas[1]]:

end if;

#norm1:

#Вектор направления отражения

n1:=(Line_[i][2][1]*norm[1]+Line_[i][2][2]*norm[2])/(norm[1]*norm[1]+norm[2]*norm[2]):

n2:=[norm[1]*2*n1,norm[2]*2*n1]:

l:=[Line_[i][2][1]-n2[1],Line_[i][2][2]-n2[2]]:

#точка отраженная

Line_[i][4][1]:=l[1]:

Line_[i][4][2]:=l[2]:

end do:

end proc:

> prbRefArray(60,10,50):

> pprbLines:=proc(p,L,h,N)

local pltprb,pltLines,pltLines1,r1;

#

r1:=[t^2/(2*p),t]:

print(r1);

pltprb:=plot([op(r1),t=-10..10],scaling=constrained,

color=black,

thickness=3):

#

pltLines:=display(

seq(

line(

Line_[i][1],

Line_[i][3],

color=red),

i=1..N),

insequence=false,

scaling=constrained

);

pltLines1:=display(

seq(

line(

Line_[i][3],

Line_[i][4],

color=red),

i=1..N),

insequence=false,

scaling=constrained

);

display([pltLines,pltprb,pltLines1],scaling=constrained,axes=none);

end proc:

> pprbLines(60,200,10,10);

#Отражение от произвольной кривой(пучок лучей)

> restart:

with(plots):

with(plottools):

> r1:=[t^2/(200),t]:

t1:=-20:

t2:=20:

> prbRefLines:=proc(L,h,N)

global Line_, r1;

local dh,dir,i,dL;

dL:=L/2;

dh:=(h/N):

for i from 1 to N do

Line_[i]:=[[L,0],[L-dL-L,-h/2+(i-1)*dh],[0,0],[0,0]];

end do:

end proc:

> prbRefLines(5,10,5);

> prbRefArray:=proc(L,N)

global Line_, r1:

local dir_,x,y,a_,tmp1,kas,per1,per2,norm,l,n1,n2,k,i,dr;

# вектор направления

for i from 1 to N do

# расчет пересечения:

a_:=[k*Line_[i][2][1]+Line_[i][1][1],k*Line_[i][2][2]+Line_[i][1][2]]:

if Line_[i][2][1]=0 then

a_:=x=Line_[i][1][1]:

else

a_:=[k*Line_[i][2][1]+Line_[i][1][1],k*Line_[i][2][2]+Line_[i][1][2]]:

end if:

solve({r1[1]=a_[1],r1[2]=a_[2]},{t,k}):

tmp1:=evalf(solve({r1[1]=a_[1],r1[2]=a_[2]},{t,k})):

Line_[i][3][1]:=subs(k=rhs(tmp1[1]),a_[1]):

Line_[i][3][2]:=subs(k=rhs(tmp1[1]),a_[2]):

dr:=diff(r1,t):

kas:=evalf(subs(t=Line_[i][3][2],dr)):

norm:=[kas[2],-kas[1]]:

if evalf(norm[1]*(Line_[i][1][1]-Line_[i][2][1])+norm[2]*(Line_[i][1][2]-Line_[i][2][2]))<0 then norm:=[-kas[2],kas[1]]:

end if:

#Вектор направления отражения

n1:=(Line_[i][2][1]*norm[1]+Line_[i][2][2]*norm[2])/(norm[1]*norm[1]+norm[2]*norm[2]):

n2:=[norm[1]*2*n1,norm[2]*2*n1]:

l:=[Line_[i][2][1]-n2[1],Line_[i][2][2]-n2[2]]:

#точка отраженная

Line_[i][4][1]:=l[1]:

Line_[i][4][2]:=l[2]:

end do:

end proc:

> prbRefArray(10,5):

> pprbLines:=proc(L,h,N)

global r1,t1,t2:

local pltprb,pltLines,pltLines1;

pltprb:=plot([op(r1),t=t1..t2],scaling=constrained,

color=black,

thickness=3):

pltLines:=display(

seq(

line(

Line_[i][1],

Line_[i][3],

color=red),

i=1..N),

insequence=false,

scaling=constrained

);

pltLines1:=display(

seq(

line(

Line_[i][3],

2*Line_[i][4],

color=green),

i=1..N),

insequence=false,

scaling=constrained

);

display([pltLines,pltprb,pltLines1],scaling=constrained,axes=none);

end proc:

> pprbLines(1,20,1);

> pprbLines(200,.5,2):

> Mainproc:=proc(L,h,N)

global r1,t1,t2:

prbRefLines(L,h,N):

prbRefArray(L,N):

pprbLines(L,h,N):

end proc:

> Mainproc(100,20,10);

#Отражение от параметрически заданной плоскости

restart:

with(plots):

with(plottools):

with(linalg):

x[0]:=0:

y[0]:=0:

z[0]:=0:

ax:=1:

ay:=-.3:

az:=10:

a:=x^2+y^2-z;

b:=x-x[0]/ax=y-y[0]/ay;

c:=y-y[0]/ay=(z-z[0])/az;

diff(a,y);

pl_b:=spacecurve([ax*t+x[0],ay*t+y[0],az*t+z[0]],t=-10..10,color=black):

pl_a:=implicitplot3d(a,x=-10..10,y=-10..10,z=-10..10,numpoints=5000):

display([pl_a,pl_b]);

sol:=evalf(solve({a,b,c},{x,y,z}));

x_:=evalf(subs(sol,x));

y_:=evalf(subs(sol,y));

z_:=evalf(subs(sol,z));

pl_b:=spacecurve([ax*t+x[0],ay*t+y[0],az*t+z[0]],t=-1..1):

pl_a:=implicitplot3d(a,x=-10..10,y=-10..10,z=-10..10,numpoints=5000):

pl_c:=pointplot3d([x_,y_,z_],color=red);

display([pl_a,pl_b,pl_c]);

x1:=subs({x=x_,y=y_,z=z_},diff(a,x)):

y1:=subs({x=x_,y=y_,z=z_},diff(a,y)):

z1:=subs({x=x_,y=y_,z=z_},diff(a,z)):

l:=[ax,ay,az];

n1:=[x1,y1,z1];

pl_e:=spacecurve([x1*t+x_,y1*t+y_,z1*t+z_],t=-8..4,color=green):

n1[1];

k:=dotprod(l,n1)/dotprod(n1,n1);

p:=[2*k*n1[1],2*k*n1[2],2*k*n1[3]];

r:=l-p;

b1:=(x-x_)/r[1]=(y-y_)/r[2];

c1:=(y-y_)/r[2]=(z-z_)/r[3];

pl_d:=spacecurve([r[1]*t+x_,r[2]*t+y_,r[3]*t+z_],t=-1..1,color=yellow):

display([pl_a,pl_b,pl_d,pl_e]);

#Частные случаи изображения каустики> restart:

with(plots):

with(plottools):

> r:=[u,u^2];

r[2];

> pl_a:=plot([op(r),u=-4..4],scaling=constrained);

> cx:=r[1]-(diff(r[2],u))*((diff(r[1],u))^2+(diff(r[2],u))^2)/((diff(r[1],u))*(diff(r[2],u$2))-(diff(r[2],u))*(diff(r[1],u$2)));

cy:=r[2]+(diff(r[1],u))*((diff(r[1],u))^2+(diff(r[2],u))^2)/((diff(r[1],u))*(diff(r[2],u$2))-(diff(r[2],u))*(diff(r[1],u$2)));

> cx:=r[1]-(diff(r[2],u))*((diff(r[1],u))^2+(diff(r[2],u))^2)/((diff(r[1],u))*(diff(r[2],u$2))-(diff(r[2],u))*(diff(r[1],u$2)));

cy:=r[2]+(diff(r[1],u))*((diff(r[1],u))^2+(diff(r[2],u))^2)/((diff(r[1],u))*(diff(r[2],u$2))-(diff(r[2],u))*(diff(r[1],u$2)));

> l:=[cx,cy];

> pl_b:=plot([op(l),u=-0.7..0.7],scaling=constrained,color=blue);

> display([pl_a,pl_b]);

> restart:

with(plots):

with(plottools):

> a:=2;

b:=3;

> r:=[a*cos(u),b*sin(u)];

r[2];

> pl_a:=plot([op(r),u=1/2*Pi..3/2*Pi],scaling=constrained);

plot([op(r),u=1/2*Pi..3/2*Pi],scaling=constrained);

> cx:=r[1]-(diff(r[2],u))*((diff(r[1],u))^2+(diff(r[2],u))^2)/((diff(r[1],u))*(diff(r[2],u$2))-(diff(r[2],u))*(diff(r[1],u$2)));

cy:=r[2]+(diff(r[1],u))*((diff(r[1],u))^2+(diff(r[2],u))^2)/((diff(r[1],u))*(diff(r[2],u$2))-(diff(r[2],u))*(diff(r[1],u$2)));

> l:=[cx,cy];

> pl_b:=plot([op(l),u=-4..4],scaling=constrained,color=blue);

> display([pl_a,pl_b]);

> restart:

with(plots):

with(plottools):

> a:=6;

b:=20;

> r:=[a*cosh(u),b*sinh(u)];

r[2];

> pl_a:=plot([op(r),u=-2*Pi..2*Pi],scaling=constrained);

plot([op(r),u=-2*Pi..2*Pi],scaling=constrained);

> cx:=r[1]-(diff(r[2],u))*((diff(r[1],u))^2+(diff(r[2],u))^2)/((diff(r[1],u))*(diff(r[2],u$2))-(diff(r[2],u))*(diff(r[1],u$2)));

cy:=r[2]+(diff(r[1],u))*((diff(r[1],u))^2+(diff(r[2],u))^2)/((diff(r[1],u))*(diff(r[2],u$2))-(diff(r[2],u))*(diff(r[1],u$2)));

> l:=[cx,cy];

> pl_b:=plot([op(l),u=-2..2],scaling=constrained,color=blue);

> display([pl_a,pl_b]);

Размещено на Allbest.ru

...

Подобные документы

  • Раскрытие понятия "системы компьютерной математики", история ее развития. Внутренняя архитектура и составляющие СКМ. Основные принципы работы системы Maple. Ее возможности для решения линейных и нелинейных уравнений и неравенств. Применение функции solve.

    курсовая работа [189,4 K], добавлен 16.09.2017

  • Понятие информационной безопасности. Общая информация о Delphi. Способы несанкционированного съема информации с волоконно-оптических линий и методы её защиты. Применение квантовой криптографии в качестве средства защиты. Контактное подключение к линии.

    дипломная работа [3,8 M], добавлен 04.02.2013

  • Определение понятия трехмерной компьютерной графики. Особенности создания 3D-объектов при помощи булевых операций, редактируемых поверхностей, на основе примитивов. Моделирование трехмерных объектов при помощи программного пакета Autodesk 3ds Max.

    дипломная работа [4,2 M], добавлен 13.04.2014

  • Оптический компьютер как устройство обработки информации с использованием квантов света или фотонов. Типы оптических процессоров. Аналоговые операции, ими производимые. Принципы построения голографии. Параметры и каскад первого оптического транзистора.

    презентация [5,5 M], добавлен 19.11.2015

  • Команды, используемые при решении уравнений и их систем, неравенств и их систем в системе аналитических вычислений Maple. Выражения, соединенные знаком равенства. Проверка типа переменной. Решение одного уравнения относительно заданной переменной.

    лабораторная работа [41,7 K], добавлен 15.07.2009

  • Стадии и этапы разработки программы для моделирования распространения тепла в стержне (бесконечном, полубесконечном и ограниченном) методом разделения переменных. Возможности системы компьютерной математики Maple. Описание логической структуры программы.

    курсовая работа [307,5 K], добавлен 04.06.2013

  • Анализ закономерностей восприятия с применением оптических иллюзий. Принципы проявления визуальных иллюзий в условиях воздействия психологических и физических факторов. Изучение оптических иллюзий и способы их использования в искусстве и дизайн-среде.

    дипломная работа [1,4 M], добавлен 29.08.2017

  • Команды, используемые при вычислении обыкновенных и частных производных аналитического выражения по одной или нескольким переменным в системе вычислений Maple, при интегрировании аналитических выражений и при вычислении пределов, сумм, рядов функций.

    лабораторная работа [62,1 K], добавлен 15.07.2009

  • Алгебраїчні перетворення в Maple за допомогою вбудованих функцій елементарних перетворень. Позбавлення від ірраціональності в знаменнику. Побудування графіку функції в пакеті Maple-8. Пакет plottools – пакет для створення та роботи з графічними об’єктами.

    контрольная работа [2,4 M], добавлен 18.07.2010

  • Основные понятия компьютерного моделирования. Функциональная схема робота. Системы компьютерной математики. Исследование поведения одного звена робота с использованием системы MathCAD. Влияние значений изменяемого параметра на амплитуду угла поворота.

    курсовая работа [1,2 M], добавлен 26.03.2013

  • Команды, используемые для построения графиков функций одной переменной (двумерная графика). Назначение и возможности команды plot (), расположенной в системной библиотеке Maple, ее операции и принцип работы. Порядок отображения графиков функций.

    лабораторная работа [141,8 K], добавлен 15.07.2009

  • Характеристика, свойства и возможности программного пакета Maple. Применение аналитических, численных, графических возможностей системы Maple для моделирования физических явлений. Использование графики и анимации в системе Maple в педагогическом процессе.

    курсовая работа [1,5 M], добавлен 12.01.2016

  • Определение понятия веб-сайта. Рассмотрение и анализ этапов построения информационного ресурса. Изучение и характеристика особенностей процесса расположения сайта в сети интернет. Ознакомление с порядком регистрации доменного имени и аренды хостинга.

    дипломная работа [4,7 M], добавлен 08.06.2019

  • Общий вид и назначение интерактивной системы аналитических вычислений Maple, выполняемые ею операции и правила их оформления. Простейшие объекты, с которыми работает программа: числа, константы и строки, сферы и особенности их практического применения.

    лабораторная работа [35,2 K], добавлен 15.07.2009

  • Изучение структуры рабочего документа MathCad - программы, предназначенной для автоматизации математических расчетов. Работа с переменными, функциями и матрицами. Применение MathCad для построения графиков, решения уравнений и символьных вычислений.

    презентация [639,2 K], добавлен 07.03.2013

  • Теория кривых и поверхностей. Кривизна кривой. Трехгранник Френе. Натуральные уравнения кривой. Гладкие поверхности - определения, параметрические уравнения. Формулы Гаусса-Петерсона-Кодацци. Моделирование поверхностей, заданных квадратичными формами.

    курсовая работа [1,1 M], добавлен 02.11.2015

  • Организация доступа в Интернет на основе оптических технологий в сетях доступа. Технологии построения городских сетей Интернет-доступа на основе коммутаторов Ethernet второго и третьего уровня. Основные преимущества оптических технологий в сетях доступа.

    презентация [135,5 K], добавлен 14.09.2013

  • Використання встроених функцій елементарних перетворень пакету Maple. Зображення основних геометричних фігур. Використання функції RootOf для позначення будь-якого кореня виразу, заданого як її параметр. Оператор виділення повного квадрату в чисельнику.

    контрольная работа [2,8 M], добавлен 18.07.2010

  • Обзор учебно-методической, научной литературы и анализ имеющейся методики изучения содержательной линии информатики "Моделирование и формализация". Технология разработки информационно-компьютерной среды для реализации учебно-методического комплекса.

    дипломная работа [105,6 K], добавлен 05.08.2011

  • Общее понятие о компакт-дисках, их техническая характеристика, устройство, назначение и правила эксплуатации. Структура записывающих оптических дисков, технология их изготовления и требования к качеству. Отличительные особенности DVD и форматы записи.

    реферат [713,0 K], добавлен 06.08.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.