I know why the error is the zeroes?

1 view (last 30 days)
Ous Chkiri
Ous Chkiri on 7 Nov 2019
Edited: Hiroki Okawa on 8 Nov 2019
clear all;
close all;
clc;
dt=0.25;
x=-40:450;
ui=0.5.*exp(-log(2).*(x./3).^2);
figure(1)
plot (x,ui)
xlabel('x-axis')
ylabel('u(x,0)')
xlim([-40 450])
ui=0.5.*exp(-log(2).*((x-400)./3).^2);
figure(2)
plot (x,ui)
xlabel('x-axis')
ylabel('u(x,400)')
xlim([350 450])
ylim([-0.2 0.6])
%%Central difference
unew=zeroes(1,471);
uold=ui;
for j=1:1600
unew(1)=uold(1)-dt*((uold(2)-uold(1))/2);
for i=2:length(ui)-1
unew=uold(i)-dt*((uold(i+1)-uold(i-1))/2);
end
uold=unew;
j*dt;
end
figure
plot(x,ui(x,400))
hold on
plot(x,unew)
hold off
title('central difference @dt=0.25')
  2 Comments
Star Strider
Star Strider on 7 Nov 2019
Not spelled correctly. Should be:
unew = zeros(1,471);
darova
darova on 7 Nov 2019
unew has no index?
unew=uold(i)-dt*((uold(i+1)-uold(i-1))/2);

Sign in to comment.

Answers (1)

Hiroki Okawa
Hiroki Okawa on 8 Nov 2019
Edited: Hiroki Okawa on 8 Nov 2019
1.
% unew = zeros(1,471);
unew = zeros(size(ui));
2.
% unew=uold(i)-dt*((uold(i+1)-uold(i-1))/2);
unew(i)=uold(i)-dt*((uold(i+1)-uold(i-1))/2);
3.
% plot(x,ui(x,400))
plot(x,ui)

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!