%
% Approximation der 2D Poisson-Gleichung mit Dirichlet-Randbedingungen
% mit der Finite-Differenzen-Methode (Serie 3, Aufgabe 5)
%
% T. Mitkova, September 2009
%

% Modellproblem
solution = inline(..);
f = inline(..);

n = ..; % Anzahl von inneren Punkten
h = ..; % Schrittweite

% Auswertung der exakten Loesung
u_exact = zeros(n*n, 1);
for i = ..
   for j = ..
     u_exact(..) = ..;
   end
end

% Aufstellung der Matrix A im sparse-Format
A = spdiags(..);

% Aufstellung der rechten Seite
rhs = zeros(n*n,1);   
for i = ..
    for j = ..
       rhs(..) = ..;
   end
end

% Beruecksichtigung der Randbedingungen
for i = ..
   rhs(..) = ..; % Rand-Teil: y = 0
   rhs(..) = ..; % Rand-Teil: x = 1
end

for i = ..
   rhs(..) = ..; % Rand-Teil: y = 1
   rhs(..) = ..; % Rand-Teil: x = 0
end

% Beruecksichtigung der Eckrandpunkte
rhs(..) = ..; % Punkt (h, h)

rhs(..) = ..; % Punkt (1-h, h)
              
rhs(..) = ..; % Punkt (1-h, 1-h)
                  
rhs(..) = ..; % Punkt (h, 1-h)

% Loesung des Gleichungssystem
uh = A\rhs;

err = norm(..) % Fehler

% Graphische Darstellung der Loesungen
% (ohne Randpunkten)
x = linspace(h, 1-h, n); 
y = linspace(h, 1-h, n);

[X,Y] = meshgrid(x,y);

uh = reshape(uh, n, n);

figure(1)
%mesh(X, Y, uh')
surf(X, Y, uh')
title('Numerische Loesung');
xlabel('x');
ylabel('y');
zlabel('u_{h}')

% figure(2)
% mesh(X, Y, solution(X, Y))
% title('Exakte Loesung');
% xlabel('x');
% ylabel('y');
% zlabel('u_{exact}')