clear all clc set(gca,'FontSize',18) set(gca,'LineWidth',2) name = 'burgers.gif'; eval(['delete ',name]) N = 1024; x = linspace(-10,10,N); delta_x = x(2) - x(1); delta_k = 2*pi/(N*delta_x); k = [0:delta_k:(N/2-1)*delta_k,0,-(N/2-1)*delta_k:delta_k:-delta_k]; u = zeros(size(x)); for n = 1:length(x); if (x(n) < 3) && (x(n) > -3) u(n) = 1; end end delta_t = 0.4/N; t=0; nu=0.1; tmax = 10; nplt = floor((tmax/10)/delta_t); nmax = round(tmax/delta_t); udata = u.'; tdata = 0; U = fft(u); plot(x,u,'LineWidth',2) axis([-10,10,0,1.2]) xlabel('x') ylabel('u') text(6,0.7,'t=0.0','FontSize',18) gif_add_frame(gcf,name,2); for n = 1:nmax t = n*delta_t; % first do the linear part U = U.*exp(-nu*k.^2*delta_t); % then solve the nonlinear part U = U - 1/2*(1i*k*delta_t).*fft((real(ifft(U))).^2); if mod(n,nplt) == 0 u = real(ifft(U)); udata = [udata u.']; tdata = [tdata t]; plot(x,u,'LineWidth',2) axis([-10,10,0,1.2]) xlabel('x') ylabel('u') text(6,0.7,['t=',num2str(t,'%0.1f')],'FontSize',18) gif_add_frame(gcf,name,2); end end