% ------------------------------------------------------------
% полагаме tau да е стъпка на времето и h да е стъпка на х
% за 0 < х < 5 и tau = 0.04 , h = 0.4 , 0 < t < 1

h = 0.4;
tau = 0.04;

% сега задаваме откъде докъде се менят променливите и съответните стъпки

x = 0:h:5;          % 0 < x < 5
t = 0:tau:100;      % 0 < t < 100 , по условие е t < 1 (fun)

% задаваме максималните дължини 

N = length(x);   
M = length(t);   

% създаваме двумерен масив пълен с нули и 
% му задаваме крайните стойности на х
% разбирайки u(n,m) = u(x(n),t(m))

u = zeros([N,M]);

% гранични условия
for m = 1:M
u(1,m) = (t(m)+3)*exp(t(m).*(-3)) - 3;  % u(0,t) = (t + 3)*exp^(-3*t) - 3
u(N,m) = sin(5*t(m));                   % u(5,t) = sin(5*t)
end

% начални условия
for n = 1:N
u(n,1) = x(n)*(5 - x(n))*(2 - x(n));  % u(x,0) = x*(5 - x)*(2 - x)
end

% намиране на елементите
for m = 1:M-1
for n = 2:N-1
u(n,m+1) = u(n,m) + (tau/h*h)*(u(n+1,m) - 2*u(n,m) + u(n-1,m));
end
end

for m = 1:M
plot(x,u(:,m))
axis([0,5,-10,10])
MM(m) = getframe;
end
movie (MM,3,1000)