ダイポールアンテナの解析

2003/5 平野拓一（東京工業大学）
Takuichi Hirano (Tokyo Institute of Technology)

Calculate Pattern
稲垣直樹, 電磁波工学, 丸善株式会社, p.117

{Cos[θ], -Sin[θ]}*(Integrate[
              i0*Sin[k0*(h - z)]*Exp[I*k0*z*Cos[θ]], {z, 0, h}] + 
            Integrate[
              i0*Sin[k0*(h + z)]*Exp[I*k0*z*Cos[θ]], {z, -h, 
                0}])  //  FullSimplify

Radiation Pattern

Polar Pattern

<< 
        Graphics`Graphics`;
λ0 = 
        1;
k0 = ((2*π)/λ)0;
i0 = 
        1;
h = λ(0/4);
pat[θ_] := 
        If[θ ≠ -π  &&  θ ≠ -(π/2)  &&  θ ≠ 
              0  &&  θ ≠ (π/2)  &&  θ ≠ π, ((i0 (Cos[h k0] - Cos[h k0 Cos[θ]]) Csc[(θ/2)] Sec[(θ/2)])/k0), 0];
NDigit[
          r_, n_] := 
        N[r] - FractionalPart[
              N[r]*(10^n)]*(10^(-n));
AntennaPolarPlot[f_, reg_, dbrange_, opt___]:=Module[{},
rot[θ_]:=(({{Cos[θ], -Sin[θ]}, {Sin[θ], Cos[θ]}}));
var = reg[[1]];
patdb[θ_] := 
                Module[{vlin}, 
vlin = 
                    Abs[f]; 
If[
                    vlin < (10^(-9)), -100, 
                    20*Log[10, vlin]]
];
afdbmax = 
                Max[Table[patdb[θ*(π/180)], {θ, 0, 180}]];
patpol[var_] := 
                Module[{ret}, 
ret = 
                    patdb[var] - afdbmax + dbrange; 
If[
                    ret < 0, 0, ret]
];
ParametricPlot[
                patpol[var]*rot[90  °] . {Cos[var], Sin[var]}, 
                reg, 
AspectRatio -> 
                  Automatic, 
PlotRange -> {{-dbrange, dbrange}, {-dbrange, 
                      dbrange}}, 
Prolog -> {{RGBColor[
                        0, 0, 0.5], 
                      Dashing[{0.02, 0.02}], 
Table[
                        Circle[{0, 0}, r], {r, 0, dbrange, 
                          dbrange/5}], 
Map[Line, 
                        Table[{rot[(i - 1)*30  °] . {dbrange, 0}, 
                            rot[(i - 1)*30  °] . {-dbrange, 
                                0}}, {i, 1, 
                            6}]]}}, 
Ticks -> {Table[{r, r - dbrange}, {r, 0, dbrange, dbrange/5}], 
                    Table[{r, r - dbrange}, {r, 0, dbrange, 
                        dbrange/5}]}, 
opt]
];
\(Do[
AntennaPolarPlot[
        pat[θ], {θ, \(-π\), π}, 
        50, 
PlotPoints -> 
          200, 
PlotLabel -> 
          StringJoin["l= ", 
            ToString[
              NDigit[2*h, 
                2]], " wavelength"], 
PlotStyle -> {AbsoluteThickness[2], RGBColor[1, 0, 0]}], 
{h, λ0/
          16, 3*λ0, λ0/16}]\)