% BabyWave.m % MST 383/683 % Fall 2020 % % Forward Euler, Central Difference for u_t = u_x % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear,clc h = 0.001; delta = 0.01; % delta = 0.04; % delta = 0.1; % delta = 0.001; t = 0:h:1; x = 0:delta:1; u = NaN(length(x),length(t)); u(:,1) = cos(2*pi*x); v = u; % Update matrix for Forward Euler, Central Difference M = 1*diag(ones(1,length(x)),0) + (h/(2*delta))*diag(ones(1,length(x)-1),1) ... + (-h/(2*delta))*diag(ones(1,length(x)-1),-1); M(end,1) = h/(2*delta); M(1,end) = -h/(2*delta); % Update matrix for Backward Euler, Central Difference A = 1*diag(ones(1,length(x)),0) + (-h/(2*delta))*diag(ones(1,length(x)-1),1) ... + (h/(2*delta))*diag(ones(1,length(x)-1),-1); A(end,1) = -h/(2*delta); A(1,end) = h/(2*delta); for i = 1:length(t)-1 u(:,i+1) = M*u(:,i); v(:,i+1) = A\v(:,i); end % Plotting [T,X] = meshgrid(t,x); figure mesh(T,X,u) xlabel('t') ylabel('x') zlabel('u') figure mesh(T,X,v)