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

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Федеральне агентство освіти і науки Російської Федерації
ДЕРЖАВНИЙ УНІВЕРСИТЕТ СИСТЕМ
УПРАВЛІННЯ ТА РАДІОЕЛЕКТРОНІКИ
Кафедра надвисокочастотної та квантової радіотехніки
Застосування методів обчислювальної математики
Пояснювальна записка до курсової роботи з інформатики

Студент групи 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я тиждень.
4. Рекомендована література:
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 с.: Іл.
5. Додаткову літературу студент шукає самостійно в залежності
від теми і складності завдання.
6. Вихідні дані:
Визначити профілі мод ТІ в планарному хвилеводі, якщо профіль компоненти Е у заданий у трьох шарах як:
, 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.
- Введення вихідних даних організувати за допомогою меню.
7. Склад пояснювальної записки:
7.1. Титульний аркуш.
7.2. Анотація.
7.3. Лист завдання з підписом викладача.
7.4. Зміст.
7.5. Введення. Постановка завдання.
7.6. Математичне опис використовуваного методу для вирішення задачі. Коротко, зрозуміло, лаконічно виклад теорії.
7.7. Опис алгоритму розв'язання задачі та схема алгоритму.
7.8. Опис програми. Результати рішення.
7.9. Інтерпретація результатів і висновки по виконаній роботі.
7.10. Список використаної літератури.
7.11. Роздруківка програми з коментарями (у вигляді додатка).
8. Звітність по роботі:
8.1. У ході виконання роботи - звітність по фактичному матеріалу в робочому зошиті (у відповідності з термінами виконання основних етапів, зазначених у п.3).
8.2. Пояснювальна записка, в обов'язковому порядку з усіма розділами по п.7. без винятку.
8.3. На дискеті - передається: файл програми, докладний опис програми.
8.4. Після оформлення пояснювальної записки - захист на кафедрі.
Дата видачі завдання.
Підпис керівника _____________
Підпис студента _____________

Зміст:


РТФ КР. 201129 .001 ПЗ

Змін Лист № Документа Підпис Дата

Розробник.

Перевірив

Літ. Лист Листів

                    5 2 6
 

 


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] розташований один корінь, який необхідно уточнити з похибкою e.
Метод дихотомії, або половинного ділення, полягає в наступному. Визначаємо середину відрізка [а, b]
Х = (а + b) / 2
і обчислюємо функцію f (Х). Далі робимо вибір, яку з двох частин відрізка взяти для подальшого уточнення кореня. Якщо ліва частина рівняння f (x) є неперервна функція аргументу х, то корінь буде знаходитися в тій половині відрізка, на кінцях якої f (x) має різні знакі.Ето буде відрізок [а, Х], тобто для чергового кроку уточнення точку b переміщаємо в середину відрізка Х і продовжуємо процес розподілу як з початковим відрізком [а, b].
Ітераційний (повторюваний) процес будемо продовжувати до тих пір, поки інтервал [а, b] не стане менше заданої похибки e.
Слід враховувати, що функція f (x) обчислюється з деякою абсолютною похибкою e 1. Поблизу кореня значення функції f (x) малі за абсолютною величиною і можуть виявитися порівнянними з похибкою її обчислення. Іншими словами, при підході до кореня ми можемо потрапити в смугу шумів 2e 1 і подальше уточнення кореня виявиться неможливим. Тому треба задати ширину смуги шумів і припинити ітераційний процес при попаданні в неї. Також необхідно мати на увазі, що при зменшенні інтервалу [а, b] збільшується похибка обчислення його довжини (b - а) за рахунок віднімання близьких чисел.
Метод дихотомії дозволяє значно зменшити обсяг обчислень у порівнянні з графічним методом. Так як за кожну ітерацію інтервал, де розташований корінь, зменшується в два рази, то через n ітерацій інтервал буде дорівнює (b - а) / 2 n. За 10 ітерацій інтервал зменшиться в 2 10 = 1024 разів, за 20 ітерацій - в 2 20 = 1048576 разів.

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

Основне завдання, що вирішується в цій програмі, це рішення наведеного далі рівняння щодо :
, (3.1)
де
- Товщина хвилеводу;
- Довжина хвилі запускається пучка світла;
- Спрямовує кут;
- Порядок моди;
- Показники заломлення хвилеводу і оточуючих його речовин.
У програмі рішення даного рівняння реалізавано методом дихотомії, схема якого наведена нижче.

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

4. ОПИС ПРОГРАМИ.

Вид програми представлений на малюнку 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 (ab)> 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.




Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
65.2кб. | скачати


Схожі роботи:
Розробка програмного забезпечення для пошуку коренів біквадратні рівняння
Розробка бази даних і прикладного програмного забезпечення для автобусного парку
Розробка програмного забезпечення для реалізації арифметичних операцій над комплексними числами
Розробка програмного забезпечення для вирішення рівнянь з однією змінною методом Ньютона дотичних
Розробка програмного забезпечення
Розробка інтернет магазину з продажу програмного забезпечення
Розробка програмного забезпечення з автоматизації навчального процесу в коледжі
Аналіз прикладного програмного забезпечення що для розробки бізнесплан
Аналіз прикладного програмного забезпечення що для розробки бізнес плану
© Усі права захищені
написати до нас