| ²é¿´: 668 | »Ø¸´: 5 | ||
| ¡¾½±Àø¡¿ ±¾Ìû±»ÆÀ¼Û2´Î£¬×÷Õß415131606Ôö¼Ó½ð±Ò 1.5 ¸ö | ||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | ||
[×ÊÔ´]
¡¾×ÊÔ´¡¿·ÖÏíÒ»¸öÂö³åµÄ¹âÏßÖд«ÊäµÄmatlab³ÌÐò
|
||
|
ºÃ¶àÑÐ1µÄͬѧ£¬¿ªÊ¼ÓÃmatlab½øÐÐÄ£ÄâµÄʱºò¶¼Ã»ÓÐѧ¹ýmatlab£¬ÏÂÃæÕâ¸ö³ÌÐòΪ¹âÂö³åÔÚ¹âÏËÖд«Êäʱ³ÌÐò£¬ÆäÖÐÓõ½Á˸µÀïÒ¶·Ö²½·¨£¬ÒªÓøµÀïÒ¶·Ö²½·¨µÄͬѧҲ¿ÉÒԲο¼½è¼øÒ»Ï£¬»¹ÓÐÕâ¸ö³ÌÐòÒ²¿ÉÒÔÓÃÀ´×÷ÎªËøÄ£µÄ»úÀíµÄǰÐò£¬´ó¼Ò²Î¿¼ÉÏÃæµÄ³ÌÐòºÜÈÝÒ×±à³öËøÄ£µÄ³ÌÐò£¬Ï£Íû¶Ô´ó¼ÒÓаïÖú£¬×îºóÓõÄÊÇ3DÊä³ö£¬´ó¼ÒÒ²¿ÉÒԲο¼Ò»ÏÂ3DÊä³öµÄ¾ßÌåд·¨£¡ %===== Solving NLSE Using Split-step Fourier Method (SSFM) ======= % The NLSE is like thie: % Uz = i/2*Uxx - i*beta*U/(1+|U|^2) % U(z=0)= sqrt(0.11)*exp(-x.^2/0.85^2); Gauss pulse %****************************************************************** % Split-step fast foruier method % U(z+dz)=(L+N)U(z) L and N are operators % L=i/2 * d/dx^2 Linear operator % N=-i*beta/(1+|U|^2) Nonlinear operator % Linear operator computation with fft in Fourier domain for speed % Nonlinear operator computation in space domain % step: 1. U-->fft(U) = ans % 2. L(dz/2).*ans % 3. ifft(ans) % 4. N(dz).*ans % 5. fft(ans) % 6. L(dz/2).*ans % 7. ifft(ans) =U(z+dz) % Calculate two times L(dz/2) can get a accuracy of O(dz^3) %****************************************************************** clear; clc; beta=1; gamma=0; %****************************************************************** % Set Space & Frequency Windows %****************************************************************** nz = 3000; dz = 0.001; Nstep = nz/10; % For drawing waterfall lines xmax = 10; % x domain [-5,5] nx = 2^9; dx = 2*xmax/nx; x = (-xmax:dx xmax-dx))';fk = 2*pi/dx; xl = length(x)/2; k = (-xl*fk:fk xl-1)*fk)'/nx; % frequency domain [-fk/2,fk/2]%****************************************************************** % Initialization %****************************************************************** u0 =sech(x); u = u0; %****************************************************************** % Preplot %****************************************************************** iplot = 1; zplot(iplot) = 0; Uplot(:,iplot) = u.*conj(u); %****************************************************************** % Linear & Nonlinear Operators %****************************************************************** % in fourier domain %****************************************************************** % Split-Step Fourier Method For NLS %****************************************************************** L=exp(i*dz/4*k.^2); for m = 1:1:nz %%%%%%%%%%% test for self-delfection%%%%%%% absu2=u.*conj(u); %u2xtemp=diff(absu2)./diff(x); %u2x(1)=u2xtemp(1);u2x(2:nx,1)=u2xtemp(1:nx-1); Na=i*dz*beta*u.*conj(u); % in space domain %Nb=-Na/beta*gamma.*u2x; % in space domain %N=exp(Na+Nb); N=exp(Na); %%%%%%%%%%%%%%% end test%%%%%%% f = fftshift(fft(u)); f = L.*f; uhalf = ifft(fftshift(f)); ua = N.*uhalf; f = fftshift(fft(ua)); f = L.*f; uend = ifft(fftshift(f)); % ÌÝÐιæÔò»ý·Ö Á½´Îµü´ú u2 = exp(i/2*dz*beta*(u.*conj(u)+uend.*conj(uend))).*uhalf; f = fftshift(fft(u2)); f = L.*f; uend1 = ifft(fftshift(f)); u3 = exp(i/2*dz*beta.*(u.*conj(u)+uend1.*conj(uend1))).*uhalf; f = fftshift(fft(u3)); f = L.*f; u = ifft(fftshift(f)); er=1e-4; u2a=uend1.*conj(uend1); u2b=u.*conj(u); if(abs(max(u2b-u2a))/max(u2b)) > er; disp('Reduce step length please');break; end % For drawing 3-D graphic if (rem(m,Nstep) == 0) iplot=iplot+1; Uplot(:,iplot)=u.*conj(u); zplot(iplot) = m*dz; end end waterfall(x,zplot,Uplot'); hidden off; view(50,30); title('Soliton Evolution'); xlabel('s','FontSize',18); ylabel('\xi','FontSize',18); zlabel('|U|^2','FontSize',14,'Rotation',0,'Position',[-xmax/1.5,-.1,max(u0)^2]); |
» ²ÂÄãϲ»¶
±¾¿Æ211£¬293·ÖÇëÇóµ÷¼Á
ÒѾÓÐ6È˻ظ´
085600²ÄÁÏÓ뻯¹¤µ÷¼Á
ÒѾÓÐ25È˻ظ´
±¾9Ò»Ö¾Ô¸2 0854µÍ·Öר˶286Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
085600£¬320·ÖÇóµ÷¼Á
ÒѾÓÐ9È˻ظ´
316Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
0856µ÷¼Á
ÒѾÓÐ8È˻ظ´
278Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
0703Çóµ÷¼Á383·Ö
ÒѾÓÐ3È˻ظ´
400·ÖÇóµ÷¼Á
ÒѾÓÐ3È˻ظ´
085701Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
2Â¥2009-05-17 10:42:41
3Â¥2009-05-17 10:43:56
5Â¥2009-05-18 08:39:45
6Â¥2009-05-21 09:56:02
¼òµ¥»Ø¸´
sunxiao4Â¥
2009-05-17 11:44
»Ø¸´
up














xmax-dx))';
»Ø¸´´ËÂ¥
10