function Blatt9

% Initialisiere
Deltat = 0.05;
eta = [0.3 0 -0.3 0 0.3 0 -0.3 0]';
k = 1;
timesteps = 300;
% baue A
A = diag([1,k,1,k,1,k,1],1) + diag([-2*k,0,-2*k,0,-2*k,0,-2*k],-1) + diag([k,0,k,0,k],-3);
n = size(A,1);
% einmalige LU-Zerlegung von I-Deltat*A
[L,U] = lu(eye(n,n) - Deltat*A);

% Fall eta_alt bei rechter Seite -> eta_neu = (I + Deltat*A)*eta_alt
for j = 1:timesteps
  Zeichne(eta); % zeichne Frame
  eta = (eye(n,n)+Deltat*A)*eta; % update eta
end

% Falls eta_neu bei rechter Seite -> eta_neu = (I-Deltat*A)^-1*eta_alt ==> eta_neu = U\(L\eta_alt), vgl. Bem 2.3
% eta reinitialisieren
eta = [0.3 0 -0.3 0 0.3 0 -0.3 0]';
for j = 1:timesteps
  Zeichne(eta); % zeichne Frame
  eta = U\(L\eta); % update eta
end

end


% Kopie des plot-Befehls vom Aufgabenblatt
function Zeichne(eta)
figure(1); set(gcf,'Color','w'); clf;axis([-0.5 10.5 -2 2]); axis equal; hold on; axis tight; axis off;
[x01,y01]=MaleFeder(0,2+eta(1));
[x12,y12]=MaleFeder(2+eta(1),4+eta(3));
[x23,y23]=MaleFeder(4+eta(3),6+eta(5));
[x34,y34]=MaleFeder(6+eta(5),8+eta(7));
[x45,y45]=MaleFeder(8+eta(7),10);
plot([x01, x12, x23, x34, x45],[y01, y12, y23, y34, y45]);
patch([-0.2 0 0 -0.2],[-1 -1 1 1],'r');
patch([10.2 10 10 10.2],[-1 -1 1 1],'r');
plot([2,4,6,8]+eta([1,3,5,7])',zeros(1,4),'o','MarkerSize',20,...
    'MarkerEdgeColor','k','MarkerFaceColor','r');
end


function [x,y]=MaleFeder(a,b)
x=[a linspace(a+0.35,b-0.35,10) b];
y=[0 0 1 -1 1 -1 1 -1 1 -1 0 0]/5;
end