分步傅里叶算法的MATLAB程序实现
分步傅里叶算法的MATLAB程序实现举例
模型:
其中:
或
线性部分:
两边同时对x变量作傅里叶变换
两边积分
即
最后有
再对x变量作作傅里叶逆变换
非线性部分:
两边积分
当时
最后有
折射率部分:
两边同时对x变量作傅里叶变换
再对x变量作作傅里叶逆变换
MATLAB程序实现:
clear all
delta=1;
x0=1;
%%-------------------
n=2048;
hx=0.06;
x=(-n/2:n/2-1)*hx;
hw=2*pi/(n*hx);
w=fftshift((-n/2:n/2-1)*hw);
%%-------------------
q=exp(-1*(x-x0).^2/2)+ exp(-1*(x+x0).^2/2);
% q=sech(x);
u1(:,1)=(abs(q).^2)';
%-------------------
L=500;
nm=L*100;
h=L/nm;
%-------------------
for j=1:nm
j;
Dz=exp(delta*j*h)