| tianmen |
2011-06-12 18:33 |
求解光孤子或超短脉冲耦合方程的Matlab程序
计算脉冲在非线性耦合器中演化的Matlab 程序 fuHNsrNlm })@xWU6! % This Matlab script file solves the coupled nonlinear Schrodinger equations of J:uFQWxZ
% soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of ) xV>Va8) % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear $Nvox<d0 % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 +7WpJ;C4 @/As|) %fid=fopen('e21.dat','w'); dmkGIg} N = 128; % Number of Fourier modes (Time domain sampling points) U"@p3$2QW M1 =3000; % Total number of space steps |I"&Z+m J =100; % Steps between output of space @fo(#i& T =10; % length of time windows:T*T0 T<nK/lp1t T0=0.1; % input pulse width ^o Ds*F MN1=0; % initial value for the space output location Q rSO%Rm1* dt = T/N; % time step wDiq~! n = [-N/2:1:N/2-1]'; % Index A9Ea}v9: t = n.*dt; ||cI~qg u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10 c3fi<?0&| u20=u10.*0.0; % input to waveguide 2 G^ <m0ew| u1=u10; u2=u20; H
9/m6F U1 = u1; 1GR|$E U2 = u2; % Compute initial condition; save it in U w"M!**bP ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. UZiL NKc w=2*pi*n./T; P&c O2 g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T ri3*~?k00 L=4; % length of evoluation to compare with S. Trillo's paper I`@>v%0 dz=L/M1; % space step, make sure nonlinear<0.05 56C'<# for m1 = 1:1:M1 % Start space evolution s&WE' u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS S9b=?? M) u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; OHngpe4 ca1 = fftshift(fft(u1)); % Take Fourier transform kp?_ir ca2 = fftshift(fft(u2)); t]3:vp5N] c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation I)%bOK] c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift g rQ,J u2 = ifft(fftshift(c2)); % Return to physical space fWg3gRI u1 = ifft(fftshift(c1)); XI ><;# if rem(m1,J) == 0 % Save output every J steps. #cD$
DA U1 = [U1 u1]; % put solutions in U array xw~oR|`U U2=[U2 u2]; 4rCw#mVtB MN1=[MN1 m1]; f0g_Gn $ z1=dz*MN1'; % output location ;L],i<F end }DvT6 end - t4F hg=abs(U1').*abs(U1'); % for data write to excel 8-L -W[ ha=[z1 hg]; % for data write to excel b\NY!)B t1=[0 t']; ~:0U.v_V hh=[t1' ha']; % for data write to excel file %&'[? LXD %dlmwrite('aa',hh,'\t'); % save data in the excel format X"f] figure(1) Kx;l a waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn c;
1f$$>b figure(2) b9Eb" waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn aNICSxDN @%MGLR{pH 非线性超快脉冲耦合的数值方法的Matlab程序 .q 4FGPWz uXGAcUx( 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。 T%PUV \LV Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 ncR]@8 /I`- >#;>6q9_ K9RRY,JB % This Matlab script file solves the nonlinear Schrodinger equations dHn,;Vv^6 % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of M;.:YkrUH % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear )5diX
+
k % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 xiC.M6/ N40DL_- C=1; kf' 4C
"} M1=120, % integer for amplitude QcdAg%"yy M3=5000; % integer for length of coupler pe\]}& N = 512; % Number of Fourier modes (Time domain sampling points) #("E)P dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05. ,G$<J0R1 T =40; % length of time:T*T0. S;!7/z dt = T/N; % time step I<&) P#" n = [-N/2:1:N/2-1]'; % Index YO.+06X t = n.*dt; $C{-gx+: ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. |)ALJJ=+ w=2*pi*n./T; f Lns^ g1=-i*ww./2; jpiBHi]5+ g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; .Jc<Gg g3=-i*ww./2; s<LYSr d P1=0; R{Me~L? P2=0; 7a%)/)<D P3=1;
}K 2fwE P=0; 2B=BRVtSs for m1=1:M1 #/>OW2Ny p=0.032*m1; %input amplitude Ch&2{ng s10=p.*sech(p.*t); %input soliton pulse in waveguide 1 $)jf s1=s10; 0ol*!@? s20=0.*s10; %input in waveguide 2 mw${3j~& s30=0.*s10; %input in waveguide 3 #t&L}=G{% s2=s20; yzL6oU-{& s3=s30; 5&Le? -/\ p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1)))); c38ENf %energy in waveguide 1 Vfr.Yoy p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1)))); Dgz^s^fxU %energy in waveguide 2 14 hE<u p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1)))); ;c# jO:A5 %energy in waveguide 3 e6'y S81 for m3 = 1:1:M3 % Start space evolution '!XVz$C s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS %Wg8dy| s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2; 6L&_(/{Uw s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3; zhC5%R &n/ sca1 = fftshift(fft(s1)); % Take Fourier transform EUuk%<q7C( sca2 = fftshift(fft(s2)); ?Lquf&`vP sca3 = fftshift(fft(s3)); z7O$o/E-* sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift B d?{ldg sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz); iq`caoi sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz); ys}I~MK - s3 = ifft(fftshift(sc3)); z7]GZF s2 = ifft(fftshift(sc2)); % Return to physical space ~|8-Mo1ce s1 = ifft(fftshift(sc1)); `z6I][Uf end 39Tlt~Psz p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1)))); OP\m~1 p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1)))); d01]5'f?o p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1)))); =a_ >") P1=[P1 p1/p10]; 2j-^F P2=[P2 p2/p10]; "VQ7Y`,+ P3=[P3 p3/p10]; iiTt{ab\Y P=[P p*p]; Y/,Cy0! end Qis/'9a figure(1) p2(Z(V7* plot(P,P1, P,P2, P,P3); ?%i~~hfH#N 9<1dps=c 转自:http://blog.163.com/opto_wang/
|
|