Курсовая

Курсовая на тему Разработка програмного обеспечения для расчёта дисперсионной характеристики планарного волновода

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 26.12.2024


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

ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ

УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ

Кафедра сверхвысокочастотной и квантовой радиотехники

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



Пояснительная записка к курсовой работе по информатике


Студент группы 164


__________.

«___»__________г.



Руководитель

Аспирант кафедры

_________

«___»__________.


РЕФЕРАТ.

Курсовая работа 26 с., 9 рис., 2 источника, 3 приложения.

МЕТОД ДИХОТОМИИ, ДИСПЕРСИОННАЯ ХАРАКТЕРИСТИКА, НАПРАВЛЯЮЩИЕ УГЛЫ, ПЛАНАРНЫЙ ВОЛНОВОД, ПРОФИЛИ ТЕ-МОД.

Объектом исследования является асимметричный планарный волновод, предназначенный для распространения в нём ТЕ-мод.

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

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

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

Пояснительная записка к дипломной работе выполнена в текстовом редакторе Microsoft Word 2002.

"УТВЕРЖДАЮ"

Зав.каф.

________.

"___" г.

ЗАДАНИЕ № 9

на курсовую работу по дисциплине "ИНФОРМАТИКА"

студенту гр.

(фамилия, имя, отчество)

  1. Тема работы: применение методов вычислительной математики

  2. Срок сдачи работы на кафедру -

  3. Содержание работы и сроки выполнения работы:

3.1. Изучение задания и рекомендованной литературы - 2я неделя.

3.2. Разработка алгоритма решения и составление схемы алгоритма - 4я неделя.

3.3. Составление программы для решения задачи в пакете MATHCAD - 7я неделя.

3.4. Написание программы и создание пользовательского интерфейса в среде программирования “Borland Delphi”. - 10я неделя.

3.5. Отладка программы на ПК. - 12я неделя.

3.6. Выполнение вычислений на ПК. - 14я неделя.

3.7. Оформление пояснительной записки в соответствии с требованиями к оформлению курсовых работ. - 15я неделя.

  1. Рекомендуемая литература:

4.1. Фигурнов В.Э. IBM PC для пользователя. - М.: Финансы и статистика, 1990г, - 240с.

4.2. Сергиевский М.В., Шалашов А.В., Турбо Паскаль 7.0., Язык, среда, программирования. - М.: Машиностроение. - 1994. - 254с.

4.3. Мудров А.Е., Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль. - Томск : МП "РАСКО", 1991. - 272с.

4.4. Дьяконов В.П. Система MathCAD: Справочник, - М.: Радио и связь, 1993. - 128с.

4.5. Кудрявцев Е.М. Mathcad2000 Pro: - М.: ДМК Пресс, 2001. – 576 с.: ил.

  1. Дополнительную литературу студент ищет самостоятельно в зависимости

от темы и сложности задания.

  1. Исходные данные:

    1. Определить профили мод ТЕ в планарном волноводе, если профиль компоненты Еу задан в трех слоях как:

, x£0

,

где - поперечные волновые числа 1, 2 и 3-й сред соответственно.

6.2.Дисперсионная характеристика для ТЕ-мод в планарном волноводе задается выражением:

где n1, n2, n3 – показатели преломления трех сред;

m – порядок моды;

θ – угол падения луча на границу раздела сред;

d – толщина волноводного слоя;

l - длина волны света в вакууме.

- Построить семейство диспесионных характериситик для заданных значений n1, n2, n3, l;

- Для заданного значения d определить количесвто направляемых мод и соответствующие углы ввода для каждой из них;

- Построить профили ТЕ мод распрастроняющихся в волноводе с заданными конструктивными параметрами.

6.3. Пункт 6.1.-6.2. повторить на пакете MATHCAD.

- Точность вычислений обеспечить не хуже 10-3.

- Ввод исходных данных организовать с помощью меню.

  1. Состав пояснительной записки:

7.1. Титульный лист.

7.2. Аннотация.

7.3. Лист задания с подписью преподавателя.

7.4. Содержание.

7.5. Введение. Постановка задачи.

7.6. Математическое описание используемого метода для решения задачи. Кратко, понятно, лаконично изложение теории.

7.7. Описание алгоритма решения задачи и схема алгоритма.

7.8. Описание программы. Результаты решения.

7.9. Интерпретация результатов и выводы по проделанной работе.

7.10. Список используемой литературы.

7.11. Распечатка программы с комментариями (в виде приложения).

  1. Отчетность по работе:

8.1. В ходе выполнения работы - отчетность по фактическому материалу в рабочей тетради ( в соответствии со сроками выполнения основных этапов, указанных в п.3).

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

8.3. На дискете - передается: файл программы, подробное описание программы.

8.4. После оформления пояснительной записки - защита на кафедре.

Дата выдачи задания .

Подпись руководителя _____________

Подпись студента _____________

Содержание:

1

Введение

6

2

Математическое описание использованного для решения задачи метода

7

3

Описание алгоритма решения задачи и схема алгоритма

8

4

Описание программы

15

5

Результаты решения, их интерпретация и выводы по проделанной работе

10


5.1

Результаты работы программы

10


5.2

Результаты проверки в пакете «MathCAD»

12


5.3

Интерпретация результатов и выводы по проделанной работе

13

6

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

14

7

Приложение А

15

8

Приложение В

18

9

Приложение С

25


  1. Введение

В этой работе перед нами ставится цель научиться применять некоторые численные методы при решении метематических задач при помощи ПК. Математическое моделирование процессов и явлений в различных областях науки и техники является одним из основных способов получения новых знаний и технологических решений. Для решения поставленной в этом курсовом проекте задачи необходи иметь основные навыки программирования на языке «Pascal» и в объектно-ориентированной среде «Delphi». Эти знания могут пригодиться и в будущем, при написании каких-либо программ вычислительного характера.

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

2. Математическое описание использованного

для решения задачи МЕТОДА.

Нажождение корня уравнения методом дихотомии.

Считаем, что на отрезке [а, b] расположен один корень, который необходимо уточнить с погреш­ностью .

Метод дихотомии, или половинного деления, заключается в следующем. Определяем середину отрезка [а, b]

Х= (а + b)/2

и вычисляем функцию f(Х). Далее делаем выбор, какую из двух частей отрезка взять для дальнейшего уточнения корня. Если левая часть уравнения f(x) есть непрерывная функция аргумента х, то корень будет находиться в той половине отрезка, на концах которой f(x) имеет разные знаки.Это будет отрезок [а, Х], т.е. для очередного шага уточнения точку b перемещаем в середину отрезка Х и продолжаем процесс деления как с первоначальным отрезком [а,b].

Итерационный (повторяющийся) процесс будем продолжать до тех пор, пока интервал [а,b] не станет меньше заданной погрешности .

Следует учитывать, что функция f(x) вычисляется с некоторой абсолютной погрешностью . Вблизи корня значения функции f(x) малы по абсолютной величине и могут оказаться сравнимыми с погрешностью ее вычисления. Другими словами, при подходе к корню мы можем попасть в полосу шумов и дальнейшее уточнение корня окажется невозможным. Поэтому надо задать ширину полосы шумов и прекратить итерационный процесс при попадании в нее. Также необходимо иметь в виду, что при уменьшении интервала [а,b] увеличивается погрешность вычисления его длины (b – а) за счет вычитания близких чисел.

Метод дихотомии позволяет значительно уменьшить объем вычислений по сравнению с графическим методом. Так как за каждую итерацию интервал, где расположен корень, уменьшается в два раза, то через n итераций интервал будет равен (b - а)/2n. За 10 итераций интервал уменьшится в 2 10 =1024 раз, за 20 итераций - в 220=1048576 раз.

3. Описание алгоритма решения задачи и схема алгоритма.

Основная задача, которая решается в этой программе, это решение приведённого далее уравнения относительно :

, (3.1)

где

- толщина волновода;


- длина волны запускаемого пучка света;


- направляющий угол;


- порядок моды;


- показатели преломления волновода и окружающих его веществ.

В программе решение данного уравнения реализавано методом дихотомии, схема которого приведена ниже.

Рисунок 3.1 – блок-схема метода дихотомии.

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

    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;

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);

private

{ Private declarations }

public

i:boolean;

nn1,nn2,nn3,dd,wll:real;

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit4;

{$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9', chr(8): ;

'-': if length(edit1.text)<>0 then key:=chr(0) else key:=chr(45);

'.': if pos(',',edit1.text)<>0 then key:=chr(0) else key:=chr(44);

',': if pos(',',edit1.text)<>0 then key:=chr(0) else key:=chr(44);

else key:=chr(0);

end;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9', chr(8): ;

'-': if length(edit2.text)<>0 then key:=chr(0) else key:=chr(45);

'.': if pos(',',edit2.text)<>0 then key:=chr(0) else key:=chr(44);

',': if pos(',',edit2.text)<>0 then key:=chr(0) else key:=chr(44);

else key:=chr(0);

end;

end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9', chr(8): ;

'-': if length(edit3.text)<>0 then key:=chr(0) else key:=chr(45);

'.': if pos(',',edit3.text)<>0 then key:=chr(0) else key:=chr(44);

',': if pos(',',edit3.text)<>0 then key:=chr(0) else key:=chr(44);

else key:=chr(0);

end;

end;

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9', chr(8): ;

'-': if length(edit4.text)<>0 then key:=chr(0) else key:=chr(45);

'.': if pos(',',edit4.text)<>0 then key:=chr(0) else key:=chr(44);

',': if pos(',',edit4.text)<>0 then key:=chr(0) else key:=chr(44);

else key:=chr(0);

end;

end;

procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9', chr(8): ;

'-': if length(edit5.text)<>0 then key:=chr(0) else key:=chr(45);

'.': if pos(',',edit5.text)<>0 then key:=chr(0) else key:=chr(44);

',': if pos(',',edit5.text)<>0 then key:=chr(0) else key:=chr(44);

else key:=chr(0);

end;

end;

procedure TForm1.PageControl1Changing(Sender: TObject;

var AllowChange: Boolean);

begin

allowchange:= tschng(strtofloat(edit1.text),strtofloat(edit2.text),strtofloat(edit3.text),strtofloat(edit4.text),strtofloat(edit5.text));

end;

procedure TForm1.PageControl1Change(Sender: TObject);

//основная процедура программы, привязанная к смене закладки

//по её ходу и осуществляются все вычисления и построение графиков

var

n:byte;

k:integer;

a,b,c,f:real;

begin

nn1:=strtofloat(edit1.text);

nn2:=strtofloat(edit2.text);

nn3:=strtofloat(edit3.text);

dd:=strtofloat(edit4.text)/1000000;

wll:=strtofloat(edit5.text)/1000000000;

if pagecontrol1.activepage=(tabsheet1) then

begin

i:=false;

chart1.RemoveAllSeries;

chart2.RemoveAllSeries;

stringgrid1.rowcount:=(2);

stringgrid1.Height:=(52);

stringgrid1.Cells[0,1]:=(' ');

stringgrid1.Cells[1,1]:=(' ');

end

else

begin

if i=false then

begin

n:=0;

while dwl(n,(arcsin(nn1/nn2)+0.00005),nn1,nn2,nn3)<(dd/wll) do

begin

a:=(arcsin(nn1/nn2)+0.001);

b:=(pi/2-0.001);

c:=(a+b)/2;

while (abs(dwl(n,a,nn1,nn2,nn3)-dwl(n,b,nn1,nn2,nn3))>0.001) or (abs(a-b)>0.001) do

begin

dix(a,b,c,(dwl(n,a,nn1,nn2,nn3)-(dd/wll)),(dwl(n,b,nn1,nn2,nn3)-(dd/wll)),(dwl(n,c,nn1,nn2,nn3)-(dd/wll)),a,b,c);

end;

stringgrid1.Cells[0,n+1]:=floattostr(n);

stringgrid1.Cells[1,n+1]:=floattostr(a);

stringgrid1.RowCount:=(stringgrid1.RowCount+1);

if n<14 then stringgrid1.Height:=(stringgrid1.Height+26);

n:=n+1;

end;

stringgrid1.RowCount:=(stringgrid1.RowCount-1);

stringgrid1.Height:=(stringgrid1.Height-26);

for n:=0 to (stringgrid1.RowCount-2) do

begin

Chart1.AddSeries( TlineSeries.Create( Self ) );

chart1.Serieslist[n].SeriesColor:=chart1.getfreeseriescolor(false);

for k:=0 to 269 do

begin

f:=(arcsin(nn1/nn2)+k*(((pi/2)-0.001-arcsin(nn1/nn2))/300));

chart1.Series[n].AddXY(k,dwl(n,f,nn1,nn2,nn3),'',clteecolor);

end;

end;

Chart1.AddSeries( TlineSeries.Create( Self ) );

for k:=1 to 269 do

begin

chart1.Series[chart1.SeriesCount-1].AddXY(k,(dd/wll),'',clteecolor);

end;

for n:=0 to (stringgrid1.RowCount-2) do

begin

Chart2.AddSeries( TlineSeries.Create( Self ) );

chart2.Serieslist[n].SeriesColor:=chart2.getfreeseriescolor(false);

for k:=(-99) to 0 do

begin

chart2.Series[n].AddXY(k,e1(wll,dd,nn1,nn2,nn3,strtofloat(stringgrid1.Cells[1,n+1]),(k*dd/100)),'',clteecolor);

end;

for k:=0 to 99 do

begin

chart2.Series[n].AddXY(k,e2(wll,dd,nn1,nn2,nn3,strtofloat(stringgrid1.cells[1,n+1]),(k*dd/100)),'',clteecolor);

end;

for k:=100 to 199 do

begin

chart2.Series[n].AddXY(k,e3(wll,dd,nn1,nn2,nn3,strtofloat(stringgrid1.Cells[1,n+1]),(k*dd/100)),'',clteecolor);

end;

end;

label7.Caption:=floattostrf(arcsin(nn1/nn2),ffgeneral,3,3);

label8.caption:=floattostrf((pi/2-0.001-(pi/2-arcsin(nn1/nn2))/300),ffgeneral,3,3);

label10.Caption:=floattostr(-dd*1000000);

label11.Caption:=floattostr(2*dd*1000000);

i:=true;

end;

end;

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

i:=false;

stringgrid1.Cells[0,0]:=('Порядок');

stringgrid1.Cells[1,0]:=('Угол (рад)');

end;

procedure TForm1.Exit1Click(Sender: TObject);

begin

close;

end;

procedure TForm1.About1Click(Sender: TObject);

begin

messagedlg('Курсовая работа по информатике, ТУСУР,'

+#13+' 1 курс, специальность 210405.'

+#13+' Выполнил студент группы 164'

+#13+' Филатов Александр.', mtinformation, [mbOK],0);

end;

end.

Вспомогательный модуль, содержащий математические процедуры и функции.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, jpeg, ComCtrls, TeEngine, Series, TeeProcs,

Chart,math;

function tschng(n1,n2,n3,d,wl:real):boolean;

function dwl(m:byte; tetta,n1,n2,n3:real):real;

function q(wl,tetta,n2,n1:real):real;

function h(wl,tetta,n2:real):real;

function p(wl,tetta,n2,n3:real):real;

function e1(wl1,d1,n11,n21,n31,tetta1,x1:real):real;

function e2(wl2,d2,n12,n22,n32,tetta2,x2:real):real;

function e3(wl3,d3,n13,n23,n33,tetta3,x3:real):real;

procedure dix(x1,x2,xm,y1,y2,ym:real; var xx1,xx2,xxm:real);

implementation

function tschng(n1,n2,n3,d,wl:real):boolean;

//осуществляет проверку исходных данных на полноту

begin

if (n1=0) or (n2=0) or (n3=0) or (d=0) or (wl=0) then

begin

messagedlg('Вы должны ввести значения всех параметров!', mtinformation, [mbOK],0);

tschng:=(False);

end

else

tschng:=(True);

end;

function dwl(m:byte; tetta,n1,n2,n3:real):real;

//функция дисперсионной характеристики волновода

var

aa,bb,cc,dd: real;

begin

aa:= sqrt(1-sqr(sin(tetta)));

aa:= 1/(2*pi*n2*aa);

bb:= sqrt(sqr(n2*sin(tetta))-sqr(n3));

cc:= sqrt(sqr(n2*sin(tetta))-sqr(n1));

dd:= n2*sqrt(1-sqr(sin(tetta)));

dwl:=aa*(arctan(bb/dd)+arctan(cc/dd)+pi*m);

end;

function q(wl,tetta,n2,n1:real):real;

//функция, вычисляющая волновое число q

begin

q:=(2*pi*sqrt(sqr(n2*sin(tetta))-n1*n1))/wl;

end;

function h(wl,tetta,n2:real):real;

//функция, вычисляющая волновое число h

begin

h:=(2*pi*cos(tetta)*n2)/wl;

end;

function p(wl,tetta,n2,n3:real):real;

//функция, вычисляющая волновое число p

begin

p:=(2*pi*sqrt(sqr(n2*sin(tetta))-n3*n3))/wl;

end;

function e1(wl1,d1,n11,n21,n31,tetta1,x1:real):real;

//функция, задающая профиль Еу ТЕ моды при условии х<=0

begin

e1:=exp(q(wl1,tetta1,n21,n11)*x1);

end;

function e2(wl2,d2,n12,n22,n32,tetta2,x2:real):real;

//функция, задающая профиль Еу ТЕ моды при условии 0<х<d

begin

e2:=(q(wl2,tetta2,n22,n12)/h(wl2,tetta2,n22))*(sin(x2*h(wl2,tetta2,n22))+(h(wl2,tetta2,n22)/q(wl2,tetta2,n22,n12))*cos(h(wl2,tetta2,n22)*x2));

end;

function e3(wl3,d3,n13,n23,n33,tetta3,x3:real):real;

//функция, задающая профиль Еу ТЕ моды при условии х>=d

begin

e3:=(q(wl3,tetta3,n23,n13)/h(wl3,tetta3,n23))*(sin(d3*h(wl3,tetta3,n23))+(h(wl3,tetta3,n23)/q(wl3,tetta3,n23,n13))*cos(h(wl3,tetta3,n23)*d3))*exp(-p(wl3,tetta3,n23,n33)*(x3-d3));

end;

procedure dix(x1,x2,xm,y1,y2,ym:real; var xx1,xx2,xxm:real);

//процедура, осуществляющая 1 итерацию метода дихотомии

begin

if (y1*ym)<0 then

begin

xx1:=x1;

xx2:=xm;

xxm:=(x1+xm)/2;

end;

if (ym*y2)<0 then

begin

xx1:=xm;

xx2:=x2;

xxm:=(xm+x2)/2;

end;

end;

end.

Приложение c.


1. Реферат на тему Macbeth Essay Research Paper MacBethEveryone who is
2. Реферат на тему Contact
3. Реферат Эпидемический фолликулярный кератоконъюктивит
4. Реферат Негативні петлі зворотнього зв язку затримка і коливання
5. Реферат на тему Change Essay Research Paper ChangeSomebody once said
6. Реферат Застосування систем лінійних рівнянь для апроксимації експериментальних даних
7. Реферат Понятие, цели, задачи выставок
8. Реферат Латинская Америка 19-нач.20 веков. Внешняя политика
9. Курсовая на тему Бюджетная политика на современном этапе развития
10. Реферат Потребности