📄 2001011820209.m
字号:
clear
int16 number;
int16 m1;
int16 n1;
int16 m2;
int16 n2;
double expl;
double u20;
double u10;
wavel=1.55e-2;
k=2*pi/wavel;
N=21; % N 必须为奇数
M=(N+1)/2;
L=100000;
u1=ones(N,N);
u2=zeros(N,N);
Bmn=ones(N,N);
u1bf=zeros(N,N);
Bmn=u1-u1bf;
Bmn=abs(Bmn);
maxBmn=max(Bmn);
maxBmn=max(maxBmn);
number=0;
while(max(maxBmn)>7.0e-16)
for m2=1:N % 由u1计算u2
for n2=1:N
u2(m2,n2)=0;
for m1=1:N
for n1=1:N
expl=exp(-i*k*((m1-m2)*(m1-m2)+(n1-n2)*(n1-n2))/2/L);
u2(m2,n2)=u2(m2,n2)+i*k*u1(m1,n1)*exp(-i*k*L)*expl/L/pi/2;
end
end
end
end
u20=u2(M,M); % 归一化
u2=u2/u20;
u1bf=u1; %由u2计算u1
for m1=1:N
for n1=1:N
u1(m1,n1)=0;
for m2=1:N
for n2=1:N
expl=exp(-i*k*((m1-m2)*(m1-m2)+(n1-n2)*(n1-n2))/2/L);
u1(m1,n1)=u1(m1,n1)+i*k*u2(m2,n2)*exp(-i*k*L)*expl/L/pi/2;
end
end
end
end
u10=u1(M,M) ; %归一化
u1=u1/u10;
Bmn=u1-u1bf; %u1前后对比
Bmn=abs(Bmn);
maxBmn=max(Bmn);
maxBmn=max(maxBmn);
number=number+1;
end
number;
u1bf=abs(u1); %作图
z1=angle(u1);
x=[1:N];
y=[1:N];
z=u1bf(x,y);
subplot(3,3,1);
mesh(z);
subplot(3,3,2);
mesh(z1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -