
%çàäà÷à 26

%du/dt=d^2u/dx^2+xt^2
%u(0,t)=u(1,t)=0
%u(x,0)=cos(pi*x)
function omm26

%êîëè÷åñòâî ðàçáèåíèé
N = 50; 
S = 100; 

%ïîëíîå âðåìÿ. À äëèíà îòðåçêà (0,1).
T = 5;


%øàã ïî êîîðäèíàòå è ïî âðåìåíè
h   = (1/N); 
tau = (T/S);

%èíèöèàëèçàöèÿ ìàññèâîâ
a=zeros(1,N+1); % 1 ñòðîêà. Í ñòîëáöîâ.
b=zeros(1,N+1);
y=zeros(N+1,S+1);
%F=zeros(1,N+1); ìàññèâ íå íóæ¸í. áèíãî. ïèó-ïèó-òððððð

Xrange = 0:h:1;
Yrange = 0:tau:T;


%çäåñü îáíóëÿëàñü ñåòî÷íàÿ ô-ÿ, òåïåðü íå íàäî
%for n=0:N,
%    for s=0:S,
%        y(n+1,s+1)=0;
%    end;
%end;

%çàäà¸ì íà÷àëüíîå óñòîâèå y(x,0)=cos(pi*x). Âåðíî äëÿ âñåõ n.
for n=1:N+1,
    y(n,1)=cos(pi*n*h);
end;

%çàäà¸ì ãðàíè÷íûå óñëîâè. y(0,s)=y(1,s)=0. Äëÿ n=1, n=N+1. Äëÿ âñåõ s.
%for s=1:S+1,  íà### öèêë. åñëè ô-ÿ çàíóëåíà âåçäå?
    y(1,1)=0;
    y(N+1,1)=0;
%end;


%à, áå, öå
A=1/(h.^2);
B=1/(h.^2);
C=2/(h.^2) + 1/tau;

%àëüôà è áåòà
a(1)=0;
b(1)=0;

for s=1:1:S,

    for n=2:N,
        F =  (1/tau)*y(n,s)+ (n*h)*(s*tau)^2;
        a(n+1)=B/(C - a(n)*A);
        b(n+1)=(A*b(n) + F)/(C - a(n)*A);
    end;
   %y(N+1,s)=0;
    for i=N:-1:2,
        y(i,s+1)=a(i+1).*y(i+1,s+1)+b(i+1);%âîò òóò #### íåóâÿçî÷êà áûëà, èç-çà êîòîðîé ÿ óáèë ñóòêè ñâîåé ìîëîäîñòè. S+1
    end;
end;

clf;
surf(Yrange,Xrange,y);
colormap hsv
xlabel('T');
ylabel('X');
zlabel('Y');


end
