基于Edgar-Guevara-Codina的有限差分光束传输法matlab仿真模拟

目录

1.算法描述

2.matlab算法仿真效果

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       对传统的有限差分光束传播法(FD-BPM)进行修正,通过对亥姆赫兹方程进行更准确的推导展开,提出一种修正后的新算法,并将新算法和传统算法应用于平板波导的计算实例,最后通过计算用来衡量算法精度的参量以及计算所花费的总体时间,将新算法与传统算法进行比较,验证了新算法在精度上有所提高,而计算时间并没有受到影响,有一定的实用价值.

       改进了传统的有限差分光束传播法(FD-BPM),实现了一种新的基于近似传播常数的FD-BPM.该算法与传统方法相比,无论是在计算精度、收敛速度,还是在计算稳定性方面都得到了有效的提高;在传统解析求解方法失效的情况下,该方法在求解复杂折射率分布光波导的传播常数也具有较高的理论参考价值.

2.matlab算法仿真效果

matlab2022a仿真结果如下:

3.MATLAB核心程序

[xx,yy] = meshgrid ([x1:dx:x2-dx],[x1:dx:x2-dx]);
 
% ------------ Generacion del pulso -------------------
modo = exp (-(xx/W0).^2-(yy/W0).^2);    % Pulso Gaussiano en 3D
 
% ---------- Constantes para metodo ADI -----------------
B = j/(2*k0);                       % Constante de difusion
G = B*dz/(dx^2);                    % Parametro de ganancia
d = zeros(1,num_samples);           % Terminos Independientes
 
matrix = zeros(num_samples);        % Inicializa Matriz
 
% --------- Generacion de la matriz tridiagonal ---------
for m = 1:1:num_samples,
    if ((m>1) && (m<num_samples))
        matrix(m,m-1) = -G;
        matrix(m,m) = 1 + 2*G;
        matrix(m,m+1) = -G;
    else
        matrix(1,1) = 1 + 2*G;
        matrix(1,2) = -G;
        matrix(num_samples,num_samples-1) = -G;
        matrix(num_samples,num_samples) = 1 + 2*G;
    end
end
matrix=sparse(matrix);  %la convierte a matriz escasamente poblada
 
% -------------- Posiciona la grafica --------------
scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2]);
 
 
    for ir = 1:1:num_samples,
        for lc = 1:1:num_samples,
            if ((lc>1) && (lc<num_samples))
                d(lc) = G*modo(ir,lc-1) + (1 - 2*G)*modo(ir,lc) + G*modo(ir,lc+1);
            else
                if (lc == 1)
                    d(1) = eps;
                else
                    d(num_samples) = eps;
                end
            end
        end
        modo(:,ir) = matrix\d.';              % Resuelve la i-esima columna
    end
A81

4.完整MATLAB

V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱C编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值