% Skript zur Lösung von Aufgabe 1 - Monte-Carlo-Methode

% Setze den 'random seed', um bei jedem Aufruf des Skripts diesselben Ergebnisse zu erhalten
rng(1);

%% ---------------------------------------------------------------
%% Teil a)
%% ---------------------------------------------------------------

% Anzahl an Samples.
n_sim = 100000;

% Erzeuge n_sim Zufallsvektoren in R^2, deren Komponenten gleichverteilt auf [0,1]^2 sind
% X = 

% Berechne die 2-Norm für jeden Vektor
% X_norm = 

% Indiziere die Punkte, deren Radien <= 1 sind
% in_circle = 

% Bilde den Mittelwert und erhalte Schätzung für pi / 4
% pi_est = 
% fprintf('Pi geschätzt: %9.7f  Pi exaxt: %9.7f\n', pi_est, pi)

%% ---------------------------------------------------------------
%% Teil b)
%% ---------------------------------------------------------------

% Begrenzungen
a = -1.5;
b = 1.5;

% Dimension der Grundmenge
d = 3;

% Anzahl an Samples.
n_sim = 100000;

% Erweitere Routine aus Teil a) und lagere sie in Funktion aus
% Beachte: Funktionen können als handle mit dem Identifier '@'
%          übergeben werden
volume_est = estimate_volume(@fig, a, b, n_sim, d)

%% ---------------------------------------------------------------
%% Teil c)
%% ---------------------------------------------------------------

% Initialisiere Datenbereiche für Plots:
j_range = 0:15;
vol_range = zeros(size(j_range));

for j = j_range
	
	N_j = 2^j * 100;
	% Schätze Volumen mit N_j samples
	% vol_range(j+1) 

end % for j = j_range

% figure(1), clf
% plot(j_range, vol_range, 'k+-')
% xlabel('2^j * 100')
% ylabel('vol(M)')

% Möglichkeit, um M zu illustrieren:
figure(2), clf
plotFig(@fig, a, b, d);


function volume_est = estimate_volume(f_handle, a, b, n_sim, d)
% ESTIMATE_VOLUME ist eine Funktion zur approximativen Bestimmung des Volumens einer
% Menge M innerhalb des R^d, genauer innerhalb von [a,b]^d.
% INPUT: f_handle - Funktionenhandle, welche für Koordinaten X (bzw. (x,y,z,...) angibt,
%                   ob Punkt innerhalb von M ist oder nicht)
%               a - Untere Schranke für M
%               b - Obere Schranke für M
%           n_sim - Anzahl der Samples
%               d - Dimension des Grundraums

% dummy Wert
volume_est = 0

% Erzeuge n_sim Zufallsvektoren in R^d, deren Komponenten gleichverteilt auf [0,1]^d sind
% X_uni = 

% Transformieren der Zufallsvariablen auf den Bereich [a, b]^d
% X = 

% Bestimmen, welche Punkte innerhalb von M liegen
% in_M = f_handle(X);

% Schätzung des Volumens
% volume_est = 

end % function 
