半波振子的数据表在文章最后。
振子1电流
于是,可以编写程序计算。
- 需要先设置波长、振子长度,垂直距离等参量
- 则变量为水平距离d
- 积分可由求和运算实现,即将变量Z设为列向量,并带入表达式,对结果求和则得到积分结果
- 表达式总共需要求解两次积分,根据积分限来选择Z向量的取值
clear
clc
close all
% 波长
lmd = 1;
% 波数
k = 2*pi/lmd;
% 垂直距离h
h = 0*lmd;
% 振子长度 2l
l = .5*lmd/2;
% 水平距离
d = (0:.005:4)*lmd;
% ======第一次积分=========
% 变量z
dz = 1e-6;
z = (h-l:dz:h)';
r1 = sqrt((z-l).^2+d.^2);
r2 = sqrt((z+l).^2+d.^2);
r0 = sqrt(z.^2+d.^2);
p1 = sin(k*(l-h+z)).*(exp(-1j*k*r1)./r1+...
exp(-1j*k*r2)./r2-2*cos(k*l).*exp(-1j*k*r0)./r0);
p1 = sum(p1*dz);
% ==========over===========
% ===========第二次积分==============
z = (h:dz:h+l)';
r1 = sqrt((z-l).^2+d.^2);
r2 = sqrt((z+l).^2+d.^2);
r0 = sqrt(z.^2+d.^2);
p2 = sin(k*(l+h-z)).*(exp(-1j*k*r1)./r1+...
exp(-1j*k*r2)./r2-2*cos(k*l).*exp(-1j*k*r0)./r0);
p2 = sum(p2*dz);
% ==============over================
z12 = 30j*(p1+p2);
r12 = real(z12);
x12 = imag(z12);
plot(d/lmd, r12, d/lmd, x12)
grid on,grid minor
legend('R12', 'X12')
xlabel('d/λ')
ylabel('X12/R12')
将数据写入表格
outt = 'data.xls';
data(:,1) = roundn(d/lmd,-4);
data(:,2) = roundn(r12, -4);
data(:,3) = roundn(x12,-4);
xlswrite(outt, data, 1)
这个表是稍微加工过的