| tianmen |
2011-06-12 18:33 |
求解光孤子或超短脉冲耦合方程的Matlab程序
计算脉冲在非线性耦合器中演化的Matlab 程序 q6a7o=BP] U,2H) {l/ % This Matlab script file solves the coupled nonlinear Schrodinger equations of FvVR \a % soliton in 2 cores coupler. The output pulse evolution plot is shown in Fig.1 of n0rAOkW % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear /_.1f|{B % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 1b4/ "yA=Tw %fid=fopen('e21.dat','w'); g;To}0H N = 128; % Number of Fourier modes (Time domain sampling points) i^2-PKPg{ M1 =3000; % Total number of space steps yHIZpU|(j J =100; % Steps between output of space |fhYft T =10; % length of time windows:T*T0 W34_@,GD T0=0.1; % input pulse width `_Fxb@"R MN1=0; % initial value for the space output location h}SP` dt = T/N; % time step x}B_;&>&"_ n = [-N/2:1:N/2-1]'; % Index lz>>{ t = n.*dt; ~H1ZQ[ u10=1.*sech(1*t); % input to waveguide1 amplitude: power=u10*u10 %|\Af>o4d u20=u10.*0.0; % input to waveguide 2 6Ud6F t6 u1=u10; u2=u20; Tw0GG8(c U1 = u1; %Z]c[V. U2 = u2; % Compute initial condition; save it in U |O4LR,{G.w ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. 3]cW08"c w=2*pi*n./T; `y0u(m5 g=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./T n1J;)VyR L=4; % length of evoluation to compare with S. Trillo's paper Ka+N5 T.f dz=L/M1; % space step, make sure nonlinear<0.05 L-z9n@=8\ for m1 = 1:1:M1 % Start space evolution h5^qo ^;g7 u1 = exp(dz*i*(abs(u1).*abs(u1))).*u1; % 1st sSolve nonlinear part of NLS yh:Wg$qx u2 = exp(dz*i*(abs(u2).*abs(u2))).*u2; J*FUJT ca1 = fftshift(fft(u1)); % Take Fourier transform R?L?6~/q ca2 = fftshift(fft(u2)); fs,]%g^ c2=exp(g.*dz).*(ca2+i*1*ca1.*dz); % approximation 0LD$"0v/C3 c1=exp(g.*dz).*(ca1+i*1*ca2.*dz); % frequency domain phase shift %(YU*Tf~ u2 = ifft(fftshift(c2)); % Return to physical space Wkj0z]]? u1 = ifft(fftshift(c1)); CD:$22*] if rem(m1,J) == 0 % Save output every J steps. YQ$EN>.eO U1 = [U1 u1]; % put solutions in U array K);)$8K U2=[U2 u2]; G%FLt[ MN1=[MN1 m1]; i2&I<: z1=dz*MN1'; % output location 4157!w'\y end "
.<>(bE end 7Adg; hg=abs(U1').*abs(U1'); % for data write to excel "%E<%g ha=[z1 hg]; % for data write to excel %|AXVv7IN> t1=[0 t']; >O$JS, hh=[t1' ha']; % for data write to excel file Xt9vTCox %dlmwrite('aa',hh,'\t'); % save data in the excel format ;]\>jC figure(1) gUWW}*\ U waterfall(t',z1',abs(U1').*abs(U1')) % t' is 1xn, z' is 1xm, and U1' is mxn tQWjNP~ figure(2) sEzl4I waterfall(t',z1',abs(U2').*abs(U2')) % t' is 1xn, z' is 1xm, and U1' is mxn +Z=%4 Hzc5BC 非线性超快脉冲耦合的数值方法的Matlab程序 -,a@bF: J5"d|i 在研究脉冲在非线性耦合器中的演变时,我们需要求解非线性偏微分方程组。在如下的论文中,我们提出了一种简洁的数值方法。 这里我们提供给大家用Matlab编写的计算程序。 ;m#_Rj6 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 wmB_)`QNP L"Dos + ,Z$!:U p>9|JMk % This Matlab script file solves the nonlinear Schrodinger equations ;}KT 3Q<^ % for 3 cores nonlinear coupler. The output plot is shown in Fig.2 of Y?#aUQc % Youfa Wang and Wenfeng Wang, “A simple and effective numerical method for nonlinear ?DgeKA"A % pulse propagation in N-core optical couplers”, IEEE Photonics Technology lett. Vol.16, No.4, pp1077-1079, 2004 C/#?S=w`4 X+[h]A C=1; 7xh91EU:4 M1=120, % integer for amplitude w:nLm, M3=5000; % integer for length of coupler S8k<}5 N = 512; % Number of Fourier modes (Time domain sampling points) !D|c2
dz =3.14159/(sqrt(2.)*C)/M3; % length of coupler is divided into M3 segments, make sure nonlinearity<0.05. f)1*%zg% T =40; % length of time:T*T0. w`I+4&/h dt = T/N; % time step L}= t"y n = [-N/2:1:N/2-1]'; % Index zGaqYbQD t = n.*dt; Oj8xc!d' ww = 4*n.*n*pi*pi/T/T; % Square of frequency. Note i^2=-1. r)|6H"n#]S w=2*pi*n./T; ;Z.sK-NJ4 g1=-i*ww./2; j.kv!;Rj= g2=-i*ww./2; % w=2*pi*f*n./N, f=1/dt=N/T,so w=2*pi*n./TP=0; wJF(&P g3=-i*ww./2; YkF52_^_ P1=0; 3g87i r P2=0; ~B\O{5W P3=1; $bFH%EA. P=0; utU;M* for m1=1:M1 &fe67#0r) p=0.032*m1; %input amplitude 4L/nEZ!Nsu s10=p.*sech(p.*t); %input soliton pulse in waveguide 1 +FH@|~^O s1=s10; oS^g "hQ`\ s20=0.*s10; %input in waveguide 2
4 z^7T s30=0.*s10; %input in waveguide 3 oq9gFJG( s2=s20; ]]9VI0
s3=s30; 1Vx>\A p10=dt*(sum(abs(s10').*abs(s10'))-0.5*(abs(s10(N,1)*s10(N,1))+abs(s10(1,1)*s10(1,1)))); _sAcvKH %energy in waveguide 1 a"m-&mN p20=dt*(sum(abs(s20').*abs(s20'))-0.5*(abs(s20(N,1)*s20(N,1))+abs(s20(1,1)*s20(1,1)))); 3w}ul~>j %energy in waveguide 2 6
\}.l p30=dt*(sum(abs(s30').*abs(s30'))-0.5*(abs(s30(N,1)*s30(N,1))+abs(s30(1,1)*s30(1,1)))); $6]1T> %energy in waveguide 3 Q9k;PJ`@ for m3 = 1:1:M3 % Start space evolution 2(km]H^ s1 = exp(dz*i*(abs(s1).*abs(s1))).*s1; % 1st step, Solve nonlinear part of NLS z:oi@q s2 = exp(dz*i*(abs(s2).*abs(s2))).*s2; m:Fdgu9 s3 = exp(dz*i*(abs(s3).*abs(s3))).*s3; *X
uIA-9 sca1 = fftshift(fft(s1)); % Take Fourier transform eCjyx|:J sca2 = fftshift(fft(s2)); 4m!w<c0NL sca3 = fftshift(fft(s3)); xbzO'C sc1=exp(g1.*dz).*(sca1+i*C*sca2.*dz); % 2nd step, frequency domain phase shift cq~~a(IS sc2=exp(g2.*dz).*(sca2+i*C*(sca1+sca3).*dz); v;#0h7qd sc3=exp(g3.*dz).*(sca3+i*C*sca2.*dz); ?OFfU 4 s3 = ifft(fftshift(sc3)); 4mvnFY} s2 = ifft(fftshift(sc2)); % Return to physical space gjzU%{T? s1 = ifft(fftshift(sc1)); Y-+JDrK end Ym?VF{e, p1=dt*(sum(abs(s1').*abs(s1'))-0.5*(abs(s1(N,1)*s1(N,1))+abs(s1(1,1)*s1(1,1)))); N<XMSt p2=dt*(sum(abs(s2').*abs(s2'))-0.5*(abs(s2(N,1)*s2(N,1))+abs(s2(1,1)*s2(1,1)))); DD}YbuO7 p3=dt*(sum(abs(s3').*abs(s3'))-0.5*(abs(s3(N,1)*s3(N,1))+abs(s3(1,1)*s3(1,1)))); M_h8{ P1=[P1 p1/p10]; <07]w$m/ P2=[P2 p2/p10]; w\a6ga!xt" P3=[P3 p3/p10]; =w7+Yt P=[P p*p]; |3BxNFe`% end
0:$pJtx" figure(1) e4FR)d0x plot(P,P1, P,P2, P,P3); <B!DwMk;. piFZu/~Gq\ 转自:http://blog.163.com/opto_wang/
|
|