function [A, f] = LaplaceMatVek(J)
%LAPLACEMATVEK Baut Matrix und rechte Seite einer Laplace-Gleichung auf
% Mittels eines Tensorprodukt-Ansatzes von 1D-Hutfunktionen auf einem
% dyadischen Gitter wird die Laplace-Gleichung
%   -Laplace y = 1  in (0, 1)^2
%            y = 0  auf Rand
% geloest. Dies fuehrt auf ein lineares Gleichungssystem A*y = f, von dem
% die Matrix A und die rechte Seite f zurueckgeliefert werden.
%
% Eingabe:
%   - J: Level der Verfeinerung in X- und Y-Richtung (2^J - 1 Elemente in jeder Richtung)
%
% Ausgabe:
%   - A: Matrix des linearen Gleichungssystems A*y = f, Gram-Matrix der
%        Bilinearform a(y, v) = \int_\Omega (\nabla y) (\nabla v) d\Omega
%   - f: Rechte Seite b des linearen Gleichungssystems
%
% Copyright (C) 2017 Samuel Leweke (Universitaet zu Koeln)

	N = 2^J - 1; %Anz. Elemente

	% Baue 1D-Matrizen auf
	MM = 2^(-J) * spdiags([1/6 * ones(N, 1), 2 / 3 * ones(N, 1), 1 / 6 * ones(N, 1)], -1:1, N, N);
	LM = 2^(J) * spdiags([-ones(N, 1), 2 * ones(N, 1), -ones(N, 1)], -1:1, N, N);

	% Tensoriere 1D-Matrizen um 2D-Problem zu erhalten
	A = kron(LM, MM) + kron(MM, LM);
	f = 2^(-2*J) .* ones(size(A, 1), 1);
end