function [ ] = leapfrog( )
lambda = 0.8;
h = 1/40;
M = round(4/h);
k = lambda*h;
N = round(6/k);
u0 = setInitialCondition(M);
u = LeapFrog (M, N, u0, lambda);
figure(1); clf;
F(N) = struct('cdata',[],'colormap',[]);
x = linspace(-1,3,M+1);
for l = 1:N
plot(x, u(l,:));
axis([0,3, -0.2, 1]);
drawnow;
F(l) = getframe;
end
movie(F);
end
function [u0] = setInitialCondition(M)
x = linspace(-1,3,M+1);
u0 = zeros(1,M+1);
ind = (x>=-0.5) & (x <= 0.5);
u0(ind) = cos(pi*x(ind)).^2;
end
function [u] = LeapFrog(M, N, u0, lambda)
u = zeros(N+1, M+1);
u(1,:) = u0;
u(2, 2:M) = u(1,2:M) - 0.5*lambda*u(1,3:(M+1)) + 0.5*lambda*u(1,1:(M-1));
u(2,1) = 0;
u(2,M+1) = u(2,M);
for n=3:(N+1)
u(n, 2:M) = u(n-2,2:M) - lambda*( u(n-1,3:(M+1)) - u(n-1,1:(M-1)) );
u(n,1) = 0;
u(n,M+1) = u(n,M);
end
end