Please how will I insert this initial data u(x)=1 for -1<x<0 and u(x)=-1/2 for 0<x<=1 in advection equation using backward finite difference

1 次查看(过去 30 天)
Lmax = -1 t0 1; % Maximum length %Tmax = (4/400); % Maximum time c = 2.0; % Advection velocity % Parameters needed to solve the equation within the Lax method maxt = 40; % Number of time steps dt=(1/400); %dt = Tmax/maxt; n = 200; % Number of space steps nint=40; % The wave-front: intermediate point from which u=0 %(nint<n)!! h = Lmax/n; b = c*dt/(2.*h); % Initial data for i = 1:(n+1) if i < nint u(i,1)=1.; else u(i,1)=-1/2.; end x(i) =(i-1)*h; end
% boundary condition for k=1:maxt+1 u(1,k) = 1.; u(n+1,k) =-1/2.; time(k) = (k-1)*dt; end % Implementation of the Lax friedrich method for k=1:maxt % Time loop for i=2:n % Space loop u(i,k+1) =u(i,k)-b*(u(i,k)-u(i-1,k)); end end
% Graphical representations of the evolution of the eqaution figure(1) mesh(x,time,u') title('Square-wave test within the BDF Method') xlabel('X') ylabel('T') figure(2) plot(x,u(:,10),'-',x,u(:,20),'-',x,u(:,30),'-',x,u(:,40),'-') title('Square-wave test within the BDF Method') xlabel('X') ylabel('Amplitude(X)')

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Behavior and Psychophysics 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by