Основная задача, которая решается в этой программе, это решение приведённого далее уравнения относительно
: , (3.1)где | - толщина волновода; |
- длина волны запускаемого пучка света; | |
- направляющий угол; | |
- порядок моды; | |
- показатели преломления волновода и окружающих его веществ. |
В программе решение данного уравнения реализавано методом дихотомии, схема которого приведена ниже.
Рисунок 3.1 – блок-схема метода дихотомии. |
Далее, используя полученные значения направляющих углов, строится график, отображающий профили ТЕ-мод. График, отображающий правую часть уравнения (3.1), практической ценности для решения задачи не имеет и носит чисто иллюстративный характер.
Вид программы представлен на рисунке 4.1. По своей внешней форме она представляет собой 4 закладки, расположенные на 1 форме. На первой закладке осуществляется ввод исходных данных, на второй строится график дисперсионной характеристики волновода, на третьей выводятся значения направляющих углов, а на чётвертой строятся профили ТЕ-мод.
Рисунок 4.1 - Основной вид программы, закладка для ввода исходных данных. |
Все вычисления и построения графиков производятся при смене закладки с первой на любую другую (событие объекта TPageControl «OnChange»). Перед сменой (событие «OnChanging») осуществляется проверка на полноту исходных данных: если хоть в одном из окон осталось стоящее по умолчанию число «0», то смены закладки не произойдёт, зато возникнет информационное окно, которое укажет пользователю на его ошибку. При повторном переходе с первой закладки на другую будет произведён перерасчёт.
Вычисление направляющих углов осуществляется с указанной в задании точностью – 0,001.
Полная схема и листинг программы находятся в приложении А и В соответственно.
5. Результаты решения, их интерпретация и выводы по проделанной работе.
5.1. результаты работы программы.
Расчёты проводились при следующих исходных данных:
Рисунок 5.1 – ввод исходных данных в программу. |
При таких введённых параметрах программа рассчитала следующую дисперсионную характеристику:
Рисунок 5.2 – дисперсионная характеристика волновода. |
Подсчитанные направляющие углы составили:
Рисунок 5.3 – направляющие углы ТЕ-мод. |
И при этих углах программа построила вот такие профили ТЕ-мод:
Рисунок 5.4 – профили ТЕ-мод. |
5.2. Результаты проверки в пакете «MathCAD».
При аналогичных исходных данных «MathCAD» выдал следующие результаты:
Рисунок 5.5 – график дисперсионной характеристики, полученный при помощи пакета «MathCAD». |
Рисунок 5.6 – график с профилями ТЕ-мод, полученный при помощи пакета «MathCAD» |
Полный листинг решения поставленной задачи в пакете «MathCAD» приведён в приложении С.
5.3. Интерпретация результатов и выводы по проделанной работе.
Проведя сравнительный анализ результатов, полученных при помощи написанной в «Delphi» программы и пакета «MathCAD», мы видим их полное совпадение в пределах заданной погрешности. Кроме того, конечные результаты, а именно профили ТЕ-мод, совпадают со справочными:
Рисунок 5.7 – три низшие ТЕ-моды асимметричного планарного волновода и соответствующие им зигзагообразные лучи. |
Из этого можно сделать вывод, что поставленная задача была решена мною верно и в полном объёме. Я не только создал конечный програмный продукт, ограниченно пригодный для практического использования, но и получил практические навыки программирования в объектно ориентированной среде «Delphi».
6. Список используемой литературы:
1. «Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль». А.Е.Мудров – МП «Раско», Томск, 1992г, 270с.
2. «Оптические волны в кристаллах». А. Ярив, П. Юх – издательство «Мир», Москва, 1987г, 616с.
Приложение А.
Блок-схема тела основной программы.
Рисунок А.1 – блок-схема тела основной программы. |
nn1,nn2,nn3 – показатели преломления, исходные данные, вводимые пользователем;
dd – толщина волновода, вводится пользователем;
wll – длина волны используемого света, вводится пользователем.
Блок-схема Процедуры «OnChanging».
Рисунок А.2 – блок-схема процедуры «OnChanging». |
AllowChange – свойство объекта TPageControl, отвечающее за разрешение/неразрешение смены закладки;
mtInformation – информационное окно, уведомляющее пользователя о том, что он ввёл не все исходные данные.
Блок-схема Процедуры «OnChange».
Рисунок А.3 – блок-схема процедуры «OnChange». |
i – переменная типа boolean, которая отвечает за то, будет ли при смене закладки осуществлён пересчёт;
chart1 – график, отображающий дисперсионную характеристику волновода;
chart2 – график, отображающий профили ТЕ-мод;
stringgrid1 – таблица, которая по ходу выполнения программы заполняется значениями направляющих углов;
n – переменная типа byte, соответствующая порядку моды;
a, b – переменные, задающие диапазон, на котором производится уточнение направляющих углов;
dwl – функция, задающая дисперсионную характеристику волновода (численно равна правой части уравнения (3.1));
dix – процедура, осуществляющая одну итерацию метода дихотомии;
k – вспомогательная переменнная типа integer, используемая для построения графика;
f(k), g(k) – функции от k, выступающие в роли аргумента для других функций;
e1, e2, e3 – функции, определяющие профиль моды в различных средах.
Блок-схема процедуры «dix».
Рисунок А.4 – блок схема процедуры «dix». |
х1, х2, хm – крайние и среднее значения интервала, на котором производится уточнение корня;
y1, y2 ym – значения уточняемой функции от x1, x2 и xm соответственно;
xx1, xx2 , xxm – новые крайние и среднее значения интервала, полученные после его уменьшения вдвое.
Приложение В.
Модуль формы Form1.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg, ComCtrls, TeEngine, Series, TeeProcs,
Chart,math, Grids, Menus;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Image1: TImage;
Image2: TImage;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
TabSheet3: TTabSheet;
Chart1: TChart;
TabSheet4: TTabSheet;
Chart2: TChart;
StringGrid1: TStringGrid;
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
Help1: TMenuItem;
About1: TMenuItem;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;