clear; clc;% clear
the screen and memory
Nx=41; %number of
space nodes
Nt=82; %number of
time nodes
Lx=2; %length of
space (m)
Lt=1; %length of
time (s)
dx=Lx/(Nx-1); %grid
spacing
dt=Lt/(Nt-1); %time step
c=2; %speed of
wave (constant)
a=c*dt/dx;
u=ones(Nx,1); %initialization
of solution matrix
x=zeros(Nx,1); %initialization
of space
hold on
for i=1:Nx-1 %space
loop
x(i+1)=x(i)+dx;
end
for i=0.5/dx:1/dx %initial
conditions
u(i)=2;
end
for t=1:Nt %time loop
un=u; %u(i,t)
for i=2:Nx %solution loop, backward in
space forward in time
u(i)=un(i)-a*(un(i)-un(i-1)); %discretized
equation, u(i,t+1)
end
plot(x,u,'k') %plotting
pause(0.1)
end
New Code, with the CFL condition satisfied.
New Code, with the CFL condition satisfied.
clear; clc;% clear
the screen and memory
Nx=13; %number of
space nodes
Lx=2; %length of
space (m)
Lt=1; %length of
time (s)
dx=Lx/(Nx-1); %grid
spacing
c=2; %speed of
wave (constant)
dt=dx*0.1/c; %time
step, Courant number = 0.1
Nt=(Lt/dt)+1; %number of
time nodes
a=c*dt/dx;
u=ones(Nx,1); %initialization
of solution matrix
x=zeros(Nx,1); %initialization
of space
t=zeros(fix(Nt),1); %initialization
of space
hold on
for i=1:Nt-1
t(i+1)=t(i)+dt;
end
for i=1:Nx-1 %space
loop
x(i+1)=x(i)+dx;
end
for i=0.5/dx:1/dx %initial
conditions
u(i)=2;
end
for j=0:dt:Lt %time loop
un=u; %u(i,t)
for i=2:Nx %solution loop, backward in
space forward in time
u(i)=un(i)-a*(un(i)-un(i-1)); %discretized
equation, u(i,t+1)
end
plot(x,u,'k') %plotting
pause(0.1)
end