给出计算光纤倏逝场分布的三维matlab程序不得使用matlab工具箱里的函数
由于计算光纤倏逝场分布需要考虑光的传播和衍射,因此需要使用数值解法来求解。以下是一个基于有限差分法的三维matlab程序,用于计算光纤倏逝场分布。
clc;
clear;
close all;
%% Parameters
lambda = 1550e-9; % wavelength (m)
n_core = 1.45; % core refractive index
n_clad = 1.44; % cladding refractive index
a = 5e-6; % core radius (m)
NA = sqrt(n_core^2 - n_clad^2); % numerical aperture
k = 2*pi/lambda; % wave number (1/m)
dx = 1e-7; % spatial step size (m)
dy = dx;
dz = dx;
x = (-100e-6:dx:100e-6)';
y = x;
z = (0:dz:2e-2)';
Nx = length(x);
Ny = length(y);
Nz = length(z);
%% Initialization
Ex = zeros(Nx, Ny, Nz);
Ey = zeros(Nx, Ny, Nz);
Ez = zeros(Nx, Ny, Nz);
% Define the core region
r = sqrt(x.^2 + y.^2);
core = r <= a;
n = core*n_core + (~core)*n_clad; % refractive index distribution
% Define the initial field
E0 = exp(-(r/((2/NA)*a)).^2); % Gaussian beam
Ez(:,:,1) = E0;
%% Finite Difference Method
for nz = 2:Nz
% Update Ex
for nx = 2:Nx-1
for ny = 2:Ny-1
Ex(nx,ny,nz) = Ex(nx,ny,nz-1) - k^2*n(nx,ny)*Ez(nx,ny,nz-1)*dz;
Ex(nx,ny,nz) = Ex(nx,ny,nz) - (Ez(nx,ny+1,nz-1) - Ez(nx,ny-1,nz-1))/(2*dy);
Ex(nx,ny,nz) = Ex(nx,ny,nz) + (Ez(nx+1,ny,nz-1) - Ez(nx-1,ny,nz-1))/(2*dx);
end
end
% Update Ey
for nx = 2:Nx-1
for ny = 2:Ny-1
Ey(nx,ny,nz) = Ey(nx,ny,nz-1) - k^2*n(nx,ny)*Ez(nx,ny,nz-1)*dz;
Ey(nx,ny,nz) = Ey(nx,ny,nz) - (Ez(nx+1,ny,nz-1) - Ez(nx-1,ny,nz-1))/(2*dx);
Ey(nx,ny,nz) = Ey(nx,ny,nz) + (Ez(nx,ny+1,nz-1) - Ez(nx,ny-1,nz-1))/(2*dy);
end
end
% Update Ez
for nx = 2:Nx-1
for ny = 2:Ny-1
Ez(nx,ny,nz) = Ez(nx,ny,nz-1) - k^2*n(nx,ny)*Ez(nx,ny,nz-1)*dz;
Ez(nx,ny,nz) = Ez(nx,ny,nz) - (Ey(nx+1,ny,nz) - Ey(nx-1,ny,nz))/(2*dx);
Ez(nx,ny,nz) = Ez(nx,ny,nz) + (Ex(nx,ny+1,nz) - Ex(nx,ny-1,nz))/(2*dy);
end
end
end
%% Plotting
figure(1);
imagesc(x*1e6, y*1e6, abs(E0).^2);
title('Initial Field');
xlabel('x (um)');
ylabel('y (um)');
axis equal tight;
figure(2);
imagesc(x*1e6, y*1e6, abs(Ez(:,:,end)).^2);
title('Final Field');
xlabel('x (um)');
ylabel('y (um)');
axis equal tight;
该程序首先定义了光纤的基本参数,如波长、折射率、NA、核心半径等。然后通过有限差分法计算光场在三维空间中的分布。最后将初始场和最终场绘制出来进行比较。需要注意的是,该程序中没有使用matlab工具箱里的函数,所有运算都是手动计算
原文地址: https://www.cveoy.top/t/topic/ck8U 著作权归作者所有。请勿转载和采集!