Рисунок 3.1 - блок-схема метода дихотомии.
Рисунок 4.1 - Основной вид программы, закладка для ввода исходных данных.
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;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit5KeyPress(Sender: TObject; var Key: Char);
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure PageControl1Change(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure About1Click(Sender: TObject);
Страницы: 1, 2, 3