Дифракция электромагнитного поля миллиметрового диапазона на плоских объектах. Струков И.Ф. - 36 стр.

UptoLike

Составители: 

Рубрика: 

3) Программа для расчета на ЭВМ одномерного распределения
интенсивности поля дифракции от прямоугольного отверстия в
непрозрачном экране. Программа составлена на языке Pascal. Поле
рассчитывается в дальней зоне по формуле (3.43)
2
2
2
22
max
max
x
sin(sin)
(,0)
|(,)|
2z
x
|(,)|
(,0)
(sin)
2z
ka
G
Uxz
ka
Uxz
G
α
ω
ω
α



==
. (3.43)
program LabRab_Difraction_3;
uses Graph; const pi=3.1415926;
var GraphDriver, GraphMode, ErrorCode, Xm, Ym, i : integer;
max, a, z, x, t, lambda, alfa: real;
m : array [-400..400] of real;
{ Задание функции U(x) - вычисление ДН по формуле }
function U (x:real):real;
function sinc(x:real):real;
begin if x=0 then sinc:=1 else sinc:=sin(x)/x; end;
begin
t:=pi*a*(x/z-sin(alfa));
U:=sqr(sinc(t))*sqr(cos(arctan(x/z)/2))*1/(sqr(x)+sqr(z));
end;
{ Процедура инициализации графики }
procedure init;
begin GraphDriver:=Detect;
InitGraph (GraphDriver, GraphMode, '');
ErrorCode:=GraphResult;
if ErrorCode<>grOk then begin
writeln ('Error: ', GraphErrorMsg(ErrorCode)); readln; end; end;
{ Процедура построения координатной сетки }
procedure XYplot; begin Line (Xm, 0, Xm, round(Ym*0.9));
Line (0, Round(0.9*Ym), Xm*2, Round(0.9*Ym));
OutTextXY (Xm+15, 5, 'I(x)');
OutTextXY (Xm+8, Round(Ym*0.45), '0.5');
OutTextXY (Xm+8, Round(Ym*0.26), '0.7');
OutTextXY (Xm*2-55, Round(0.9*Ym)-10, 'x, у.е.');
for i:=-5 to 5 do begin
line(round(Xm+i/5*Xm),round(Ym*0.9)+5,round(Xm+i/5*Xm),round(
Ym*0.9));
OutTextXY (round(Xm+i/5*Xm*0.985)-3, Round(0.92*Ym)+5,
chr(48+abs(i))+'0');
end;
end;
BEGIN Writeln('Интенсивность поля дифракции от прямоугольного
отверстия в дальней зоне .');
3) П рограмма для расч ета на Э В М         одномерного распределени я
и нтенси вности поля ди ф ракци и от прямоугольного отверсти я в
непрозрач ном экране. П рограмма составлена на язы ке Pascal. П оле
рассч и ты ваетсявдальней зоне по ф ормуле(3.43)
                                                           2
                                            ka x         
                               2       sin  ( − sin α ) 
  | U ( x, z ) |2    G (ω ,0)              2 z            .
                   =                 =                          (3.43)
| U ( x, z ) |2 max G (ω ,0) 2            ka x
                                              ( − sin α )
                               max
                                           2 z
program LabRab_Difraction_3;
uses Graph; const pi=3.1415926;
var GraphDriver, GraphMode, ErrorCode, Xm, Ym, i : integer;
   max, a, z, x, t, lambda, alfa: real;
   m : array [-400..400] of real;
{ Задани еф ункци и U(x) - вы ч и слени еД Н по ф ормуле }
function U (x:real):real;
  function sinc(x:real):real;
  begin if x=0 then sinc:=1 else sinc:=sin(x)/x; end;
begin
   t:=pi*a*(x/z-sin(alfa));
   U:=sqr(sinc(t))*sqr(cos(arctan(x/z)/2))*1/(sqr(x)+sqr(z));
end;
{     П роцедураи ни ци али заци и граф и ки }
procedure init;
begin GraphDriver:=Detect;
InitGraph (GraphDriver, GraphMode, '');
ErrorCode:=GraphResult;
if ErrorCode<>grOk then begin
writeln ('Error: ', GraphErrorMsg(ErrorCode)); readln; end; end;
{ П роцедурапостроени якоорди натной сетки }
procedure XYplot; begin Line (Xm, 0, Xm, round(Ym*0.9));
Line (0, Round(0.9*Ym), Xm*2, Round(0.9*Ym));
OutTextXY (Xm+15, 5, 'I(x)');
OutTextXY (Xm+8, Round(Ym*0.45), '0.5');
OutTextXY (Xm+8, Round(Ym*0.26), '0.7');
OutTextXY (Xm*2-55, Round(0.9*Ym)-10, 'x, у.е.');
for i:=-5 to 5 do begin
      line(round(Xm+i/5*Xm),round(Ym*0.9)+5,round(Xm+i/5*Xm),round(
      Ym*0.9));
  OutTextXY (round(Xm+i/5*Xm*0.985)-3, Round(0.92*Ym)+5,
      chr(48+abs(i))+'0');
end;
end;
BEGIN Writeln('И нтенси вность поляди фракци и от прям оуголь ного
      отверсти яв даль ней зоне.');