Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Function dih(a,b,eps)
!цикл, пока не достигнута требуемая точность Do while((b-a).gt. eps) !c = середина отрезка [a,b] c=(a+b)/2 !проверка знака функции в середине отрезка [a,b] If(f(c).gt. 0) then !обновление правой границы если F(c) > 0 b=c Else !обновление левой границы если F(c) = 0 a=c Endif Enddo !dih -- решение; F(dih) = 0 с точностью до eps dih=(a+b)/2 Return End
!-------------------------------------------------------------- !Функция F(x) для функции dih Function f(x) !переменные, получаемые из beta1 common /cblock/ a,ak,m
f1 = atan(sqrt(1/x**2-1)) f1 = (f1 + atan(sqrt(ak/x**2-1))) / 3.14159 f = a*x - m - f1 Return End
!-------------------------------------------------------------- 3.3. Метод аппроксимации При решении уравнения (3.3) методом “половинного деления” основная трудность обусловлена необходимостью многократных вычислений достаточно “неудобной” функции Основная идея метода заключается в сведении уравнения (3.3) к квадратному путем введения аппроксимирующей функции для правой части уравнения (3.3). В результате такой аппроксимации решение (3.3) записывается в явном виде, а необходимая точность достигается простой итерационной процедурой, что значительно увеличивает быстродействие и эффективность алгоритма. 3.3.1 Алгоритм решения. На рисунке 3.2 представлена для примера зависимость
Рис. 3.2. К решению трансцендентного уравнения методом аппроксимации. Поскольку в (3.4) берутся главные значения арктангенсов, величина
где b – параметр, определяемый из (3.4) при
С учетом явного вида
где При условии
а их производные по параметру
Выполнение условий (3.12), (3.13) означает, что обе функции имеют одинаковые граничные значения, монотонно убывают и являются выпуклыми в интервале Из условий (3.12), (3.13) следует, что функция
Предельные значения
Задание: получить соотношение (3.15,а) – (3.15,б). Из выражения (3.14) следует, что функция Таблица 1
На рисунке 3.3. для примера представлены зависимость Заменяя функцию
Физическим решением этого уравнения относительно Подставляя
Рис. 3.3. Аппроксимирующие функции. Из рисунка 3.3 следует, что решением уравнения (3.3) является значение
Решение на первом шаге итерации записывается в виде
Если точность
Аналогично (3.19) записывается новое решение Если заданная точность
i=1,2; j=1,2,3…. “Точное” значение
3.3.2. Программная реализация алгоритма по методу аппроксимации на алгоритмическом языке Фортран-90*) Программа "beta2" предназначена для расчета поперечных волновых чисел h в волноведущем диэлектрическом слое для Н-волн планарного однородного изотропного диэлектрического волновода. Входные и выходные данные такие же, что и в программе "beta1" (см. п. 3.2.3). Вначале программа "beta2" вычисляет верхний и нижний пределы параметра кривизны !-------------------------------------------------------------- !Программа расчета волнового числа h в волноводном !диэлектрическом слое для H-волн планарного однородного !изотропного диэлектрического волновода Program beta2 !переменный, общие для beta1 и функций aksi и delta common /cblock/ a,ak,m,b
pi = 3.14159 !входные данные; при указанных значениях !результат для контроля: h = 0.8958030 !длина волны; размерности alambda и t одинаковые alambda = 0.85 !толщина волноведущего слоя t = 5. !отн. диэл. проницаемость покрытия e1 = 2.11 !отн. диэл. проницаемость волноведущего слоя e2 = 2.14 !отн. диэл. проницаемость подложки e3 = 2.12 !номер моды m = 1 !погрешность значения корня eps = 1e-6
!вычисляется коэффициент A a = 2 * sqrt(e2-e3) * t/alambda !вычисляется коэффициент K ak = (e2-e1) / (e2-e3) !вычисляется параметр B по (3.10) b = atan(sqrt(ak-1)) / pi
!подготовка начальных данных для итерационной процедуры !начальное значения параметра кривизны d1 = b - 1 + 2*(1+1/sqrt(ak))/pi If(ak.eq. 1) then !для K=1 d2 = 1 - 2*sqrt(2)/pi Else !для K>1 d2 = 1 - b - 2/pi Endif !нижняя граница области решения aksi1 = aksi(d1) !верхняя граница области решения aksi2 = aksi(d2) !итерационная процедура; !цикл пока не достигнута заданная точность Date: 2016-05-16; view: 376; Нарушение авторских прав |