Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Програма для рішення інтегрального рівняння Фредгольма другого роду простим методом, заснованим на одночленних рекурентних формулахСодержание книги
Поиск на нашем сайте
Програма написана мовою програмування "Фортран" відповідно до алгоритму, приведеним у дипломній роботі. Відзначимо деякі особливості, що були використані при написанні програм, приведених у додатках. Уведення вихідних даних виробляється з файлу input.txt. Висновок результатів виробляється у файл result.txt. Для наближеного обчислення визначених інтегралів виду
використовувався метод Симпсона (метод парабол) чисельного інтегрування [22,23] відповідно до якого:
де Функція Ханкеля другого роду нульового порядку, рівна J0(x) = l-2,2499997(x/3)2 + l,2656208(x/3)4 -0,3163866(x/3)6 + + 0,0444479(x/3)8 -0,0039444(x/3)10 + 0,00021(x/3)12,
+0,25300117(x/3)6-0,04261214(x/3)8+0,00427916(x/3)10 -0,00024846(x/3)12
при 3 ≤ х < ∞:
-0,00054125(3/ x)4-0,00029333(3/x)5+0,00013558(3/x)6, θ0=х-0,78539816-0,04166397(3/х)-0,00003954(3/х)2+0,00262573(3/х) ³ - -0,00054125(3 /x)4-0,00029333(3/x)5+0,00013558(3/x)6. * Програма обчислення коефіцієнта придушення однорідної і неоднорідної структури
* визначення типу перемінних character pop,pap,pup,pep,pok,pro,prr,ptt,prp,ppr,ptr double precision yn,yk,pi,ba,t,hpd,shr,hpp,sg,ni,ki,an * підготовка файлів для введення (уведення данних.txt) і висновку даних (результат.txt) open(2,file='данные.txt',status='old') open(1,file='etta_rez.xlt',status='new') open(3,file='lambda.xlt',status='new') open(4,file='impedance.xlt',status='new') open(5,file='modul_J.xlt',status='new') open(6,file='real_J.xlt',status='new') open(7,file='im_J.xlt',status='new') read(2,*)pop read(2,*)nn read(2,*)pap read(2,*)yn read(2,*)pup read(2,*)yk read(2,*)pep read(2,*)ba read(2,*)prr read(2,*)hpp read(2,*)pok read(2,*)lp read(2,*)pro read(2,*)ni read(2,*)ptr read(2,*)ki read(2,*)prp read(2,*)sg read(2,*)ptt read(2,*)shr read(2,*)ppr read(2,*)hpd pi=3.14159265359D0 t=(yk-yn)/nn * Передача даних підпрограмі рішення інтегрального рівняння
call integr(nn,yn,yk,t,pi,ba,lp,hpd,shr,hpp,sg,ni,ki) stop end
* Підпрограма рішення інтегрального рівняння * Визначення типу перемінних subroutine integr(nn,yn,yk,t,pi,ba,lp,hpd,shr,hpp,sg,ni,ki) complex*16 mat,f,fx,ro,jot1,dr,fy,u1,fun,fn,rez,han,han1,imp,ss,u2 double precision a0,a1,a2,a3,a4,a5,a6,b0,b1,b2,b3,b4,b5,b6,pi,kof double precision d0,d1,d2,d3,d4,d5,z0,z1,z2,z3,z4,z5,z6,ba,t,ck double precision am,h,a,x,yhn,yhk,at,b,d,q,p,ot,al,y1,yn,yk,ww,hpd double precision shr,hpp,aa,ab,ac,ad,af,yy,xx,yx,fu,ff,y,yyy double precision vvs,vas,vvas,sks,sg,ni,ki,bda dimension mat(1000),jot1(1000,1000),ro(1000),fy(1000),ss(1000) dimension u1(1000),fun(1000,1000),at(1000),ot(1000),fu(1000) dimension han(1000,1000),han1(1000,1000),ww(1000),u2(1000) dimension ff(1000),fn(1000),yyy(1000),rez(1000)
if(hpp-ba)22,23,24 22 write(1,*)'Неправильні дані кінцевого значення довжини хвилі' return 24 kkk=(hpp-ba)/0.01d0 do 333 llll=1,kkk+1 if(hpp-ba)26,27,26 27 return 26 bda=ba+(llll-1)*0.01d0 goto 25 23 bda=ba
25 ck=2.d0*pi/bda lll=((ki-ni)+sg)/sg do 123 ll=1,lll m=500 am=m h=t/(2.d0*am) m1=m-1
* Визначення коефіцієнтів для функцій Бесселя a0=0.79788456d0 a1=-0.00000077d0 a2=-0.00552740d0 a3=-0.00009512d0 a4=0.00137237d0 a5=-0.00072805d0 a6=0.00014476d0 b0=-0.78539816d0 b1=-0.04166397d0 b2=-0.00003954d0 b3=0.00262573d0 b4=-0.00054125d0 b5=-0.00029333d0 b6=0.00013558d0 d0=-2.2499997d0 d1=1.2656208d0 d2=-0.3163866d0 d3=0.0444479d0 d4=-0.0039444d0 d5=0.00021d0 z0=0.36746691d0 z1=0.60559366d0 z2=-0.74350384d0 z3=0.25300117d0 z4=-0.04261214d0 z5=0.00427916d0 z6=-0.00024846d0 f=dcmplx(0.d0,1.d0) sks=1.d0/(120.d0*bda) * Блок визначення проходження елементарних проміжків y1=yn+t/2.d0 do 1 j=1,nn do 1300 i=1,nn 1300 yyy(i)=yn+t*(i-1) yhn=yyy(j) yhk=yhn+t * Інтегрування функції Ганкеля по формулі Симпсона * GANKEL-A a=ck*(y1-yhn) aa=ck*(y1-yhk) if(a)50,51,51 50 a=dabs(ck*(yhn-y1)) aa=dabs(ck*(y1-yhk)) ab=ck*(yhk-y1) ac=ab ad=ck*(y1-yhn) af=ck*(yhn-y1) goto 52 51 if(aa)70,70,71 70 a=dabs(ck*(y1-yhn)) aa=dabs(ck*(y1-yhk)) ab=ck*(yhk-y1) ac=ab ad=ck*(y1-yhn) af=ad goto 52 71 a=dabs(ck*(y1-yhn)) aa=dabs(ck*(y1-yhk)) ab=ck*(yhk-y1) ac=ck*(y1-yhk) ad=ck*(y1-yhn) af=ad 52 if(a -3.d0)4,4,5 4 if(aa-3.d0)72,72,5 72 x=af yx=ac xx=ab yy=ad at(j)=(d0/(3.d0**2))*((xx**3+yy**3)/3.d0) at(j)=at(j)+(d1/(3.d0**4))*((xx**5+yy**5)/5.d0) at(j)=at(j)+(d2/(3.d0**6))*((xx**7+yy**7)/7.d0) at(j)=at(j)+(d3/(3.d0**8))*((xx**9+yy**9)/9.d0) at(j)=at(j)+(d4/(3.d0**10))*((xx**11+yy**11)/11.d0) at(j)=at(j)+(d5/(3.d0**12))*((xx**13+yy**13)/13.d0) at(j)=(yhk-yhn)+at(j)/ck ot(j)=(xx*(dlog(yx/2.d0)-1.)+yy*(dlog(x/2.d0)-1.d0))/ck kof=(2.*d0*((2.d0/3.d0)**2))/(3.d0*ck) ot(j)=ot(j)+(dlog(yx/2.d0)-1.d0/3.d0)*((xx/2.d0)**3)*kof ot(j)=ot(j)+(dlog(x/2.d0)-1.d0/3.d0)*((yy/2.d0)**3)*kof kof=(2.d0*d1*((2.d0/3.d0)**4))/(5.d0*ck) ot(j)=ot(j)+(dlog(yx/2.d0)-1.d0/5.d0)*((xx/2.d0)**5)*kof ot(j)=ot(j)+(dlog(x/2.d0)-1.d0/5.d0)*((yy/2.d0)**5)*kof kof=(2.d0*d2*((2.d0/3.d0)**6))/(7.d0*ck) ot(j)=ot(j)+(dlog(yx/2.d0)-1.d0/7.d0)*((xx/2.d0)**7)*kof ot(j)=ot(j)+(dlog(x/2.d0)-1.d0/7.d0)*((yy/2.d0)**7)*kof kof=(2.d0*d3*((2.d0/3.d0)**8))/(9.d0*ck) ot(j)=ot(j)+(dlog(yx/2.d0)-1.d0/9.d0)*((xx/2.d0)**9)*kof ot(j)=ot(j)+(dlog(x/2.d0)-1.d0/9.d0)*((yy/2.d0)**9)*kof kof=(2.d0*d4*((2.d0/3.d0)**10))/(11.d0*ck) ot(j)=ot(j)+(dlog(yx/2.d0)-1.d0/11.d0)*((xx/2.d0)**11)*kof ot(j)=ot(j)+(dlog(x/2.d0)-1.d0/11.d0)*((yy/2.d0)**11)*kof kof=(2.d0*d5*((2.D0/3.d0)**12))/(13.d0*ck) ot(j)=ot(j)+(dlog(yx/2.d0)-1.d0/13.d0)*((xx/2.d0)**13)*kof ot(j)=ot(j)+(dlog(x/2.d0)-1.d0/13.d0)*((yy/2.d0)**13)*kof ot(j)=(2.d0/pi)*ot(j) ot(j)=ot(j)+z0*(yhk-yhn) ot(j)=ot(j)+(z1/((3.d0**2)*ck))*((xx**3+yy**3)/3.d0) ot(j)=ot(j)+(z2/((3.d0**4)*ck))*((xx**5+yy**5)/5.d0) ot(j)=ot(j)+(z3/((3.d0**6)*ck))*((xx**7+yy**7)/7.d0) ot(j)=ot(j)+(z4/((3.d0**8)*ck))*((xx**9+yy**9)/9.d0) ot(j)=ot(j)+(z5/((3.d0**10)*ck))*((xx**11+yy**11)/11.d0) ot(j)=ot(j)+(z6/((3.d0**12)*ck))*((xx**13+yy**13)/13.d0) fn(j)=dcmplx(at(j),-ot(j)) goto 1 5 a=dabs(ck*(yhn-y1)) x=3.d0/a at(j)=a0+a1*x+a2*(x**2)+a3*(x**3)+a4*(x**4)+a5*(x**5) at(j)=at(j)+a6*(x**6) ww(j)=at(j)/dsqrt(a) ot(j)=a+b0+b1*x+b2*(x**2)+b3*(x**3)+b4*(x**4)+b5*(x**5) ot(j)=ot(j)+b6*(x**6) at(j)=ww(j)*dcos(ot(j)) ot(j)=ww(j)*dsin(ot(j)) fu(j)=at(j) ff(j)=ot(j) * GANKEL-B b=dabs(ck*(yhk-y1)) x=3.d0/b at(j)=a0+a1*x+a2*(x**2)+a3*(x**3)+a4*(x**4)+a5*(x**5) at(j)=at(j)+a6*(x**6) ww(j)=at(j)/dsqrt(b) ot(j)=b+b0+b1*x+b2*(x**2)+b3*(x**3)+b4*(x**4)+b5*(x**5) ot(j)=ot(j)+b6*(x**6) at(j)=ww(j)*dcos(ot(j)) ot(j)=ww(j)*dsin(ot(j)) fu(j)=fu(j)+at(j) ff(j)=ff(j)+ot(j) * GANKEL-(B-H) d=dabs(ck*((yhk-h)-y1)) x=3.d0/d at(j)=a0+a1*x+a2*(x**2)+a3*(x**3)+a4*(x**4)+a5*(x**5)+a6*(x**6) ww(j)=at(j)/dsqrt(d) ot(j)=d+b0+b1*x+b2*(x**2)+b3*(x**3)+b4*(x**4)+b5*(x**5) ot(j)=ot(j)+b6*(x**6) at(j)=ww(j)*dcos(ot(j)) ot(j)=ww(j)*dsin(ot(j)) fu(j)=fu(j)+4.d0*at(j) ff(j)=ff(j)+4.d0*ot(j)
do 40 l=1,m1 al=l * GANKEL-(A+(2*AK-1)*H) q=dabs(ck*(yhn+(2.d0*al-1.d0)*h-y1)) x=3.d0/q at(j)=a0+a1*x+a2*(x**2)+a3*(x**3)+a4*(x**4)+a5*(x**5)+a6*(x**6) ww(j)=at(j)/dsqrt(q) ot(j)=q+b0+b1*x+b2*(x**2)+b3*(x**3)+b4*(x**4)+b5*(x**5) ot(J)=ot(j)+b6*(x**6) at(j)=ww(j)*dcos(ot(j)) ot(j)=ww(j)*dsin(ot(j)) fu(j)=fu(j)+4.d0*at(j) ff(j)=ff(j)+4.d0*ot(j) * GANKEL-(A+2*AK*H) p=dabs(ck*(yhn+2.d0*al*h-y1)) x=3.d0/p at(j)=a0+a1*x+a2*(x**2)+a3*(x**3)+a4*(x**4)+a5*(x**5)+a6*(x**6) ww(j)=at(j)/dsqrt(p) ot(j)=p+b0+b1*x+b2*(x**2)+b3*(x**3)+b4*(x**4)+b5*(x**5) ot(j)=ot(j)+b6*(x**6) at(j)=ww(j)*dcos(ot(j)) ot(j)=ww(j)*dsin(ot(j)) fu(j)=fu(j)+2.d0*at(j) 40 ff(j)=ff(j)+2.d0*ot(j) fn(j)=dcmplx(fu(j),-ff(j))*h/3.D0 1 fn(j)=0.5d0*ck*fn(j)
* Складання матриці h(v) do 99 i=1,nn do 99 j=1,nn l=abs(j-i)+1 fun(i,j)=fn(l) han1(i,j)=fn(l) 99 jot1(i,j)=fn(l)
* Визначення правої частини рівняння F(y) do 8411 i=1,nn yyy(i)=yn+t*(i-1) y=ck*(yyy(i)+t/2.d0) if(y-3.d0) 842,842,843 842 at(i)=1.+d0*((y/3.d0)**2)+d1*((y/3.d0)**4)+d2*((y/3.d0)**6) at(i)=at(i)+d3*((y/3.d0)**8)+d4*((y/3.d0)**10)+d5*((y/3.d0)**12) ot(i)=(2.d0/pi)*dlog(y/2.d0)*at(i)+z0+z1*((y/3.d0)**2) ot(i)=ot(i)+z2*((y/3.d0)**4)+z3*((y/3.d0)**6)+z4*((y/3.d0)**8) ot(i)=ot(i)+z5*((y/3.d0)**10)+z6*((y/3.d0)**12) ot(i)=ot(i) goto 841 843 at(i)=a0+a1*(3.d0/y)+a2*((3.d0/y)**2)+a3*((3.d0/y)**3) at(i)=at(i)+a4*((3.d0/y)**4)+a5*((3.d0/y)**5)+a6*((3.d0/y)**6) at(i)=at(i)/dsqrt(y) ot(i)=y+b0+b1*(3.d0/y)+b2*((3.d0/y)**2)+b3*((3.d0/y)**3) ot(i)=ot(i)+b4*((3.d0/y)**4)+b5*((3.d0/y)**5)+b6*((3.d0/y)**6) ww(i)=at(i)*dcos(ot(i)) ot(i)=at(i)*dsin(ot(i)) at(i)=ww(i) 841 fy(i)=sks*dcmplx(-at(i),ot(i)) rez(i)=fy(i) 8411 u1(i)=fy(i)
kl=hpd if(kl-1)33,33,34 33 an=shr*10.d0+(nn-lp-shr*10.d0) goto 35 34 an=shr*10.d0+(nn-lp-shr*kl*10.d0)/(kl-1)
if(hpd)35,35,98 98 if(((nn-lp-shr*kl*10.d0)/(kl-1))-bda)77,77,35 77 write(1,*)'Неправильно введені дані! Відстань м/д канавками!' return
35 ml=an an=shr*10.d0 mm=an
* Обчислення імпедансу 78 if (hpd)66,66,67 66 do 891 j=1,nn-lp 891 ro(j)=dcmplx(0.d0,ni+0.01*(ll-1)) goto 68 67 do 545 i=1,nn-lp ro(i)=dcmplx(0.d0,0.d0) do 87 l=1,kl do 69 j=1+(l-1)*ml,mm+ml*(l-1) 69 ro(j)=dcmplx(0.d0,ni+0.01*(ll-1)) 87 kl=kl 545 m=m
* Обчислення значень щільності струму за допомогою рекурентних формул 68 do 8 k=1,nn dr=ro(k)/(1.d0+ro(k)*jot1(k,k)) do 3 i=1,nn do 3 j=1,nn han(i,j)=jot1(i,j)-dr*jot1(i,k)*jot1(k,j) 3 mat(i)=u1(i)-jot1(i,k)*u1(k)*dr do 11 i=1,nn ss(i)=mat(i) do 11 j=1,nn jot1(i,j)=han(i,j) 11 u1(i)=mat(i) 8 d=d do 911 i=1,nn write(5,*)abs(ss(i)) write(6,*)real(ss(i)) 911 write(7,*)aimag(ss(i)) * Визначення коефіцієнта придушення й обчислення інтегралів виду I(Y,R),I(Y,0) vvas=0.D0 vas=0.D0 do 991 i=nn-lp,nn vvas=vvas+((cdabs(rez(i)))**2)*t 991 vas=vas+((cdabs(ss(i)))**2)*t vvs=10.d0*dlog10(vvas/vas) write(*,*)ll,ni+sg*(ll-1),bda write(4,*)ni+sg*(ll-1) 123 write(1,*)vvs 333 write(3,*)bda return end
Додаток В Копія демонстраційного креслення 1
Рисунок 1-Геометрия задачі
де
Додаток Г Копія демонстраційного креслення 2
де
де
Додаток Д Копія демонстраційного креслення 3
Рисунок 2 - Залежність коефіцієнта придушення h від поверхневого імпедансу
Рисунок 3 - Залежність модуля щільності струму Додаток Е
Копія демонстраційного креслення 4
(товста лінія), (тонка лінія), (пунктирна лінія), при , коли ширина
Додаток Ж Копія демонстраційного креслення 5 Таблиця 1 - Значення коефіцієнта придушення η для величіні імпедансу
Таблиця 2 - Значення коефіцієнта придушення η для величіні імпедансу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-01-26; просмотров: 212; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.20 (0.008 с.) |