% Berechnet die Wurzel einer (pos.) reellen Zahl a mittels des Heron-Verfahrens.
% y = wurzel(a,n,x_0) berechnet eine Annaeherung an die Wurzel von a mit n Schritten des Heron-Verfahrens mit Anfangswert x_0.
function y = wurzel(a,n,x_0)
if(a <= 0)
	error('Die Zahl a ist nicht positiv.') % Bei nichtpositiver Zahl a wird Fehlermeldung erzeugt.
elseif(x_0 <= 0)
	error('Der Startwert x_0 ist nicht positiv.') % Nichtpositiver Startwert ist ebenfalls nicht erlaubt.
elseif(n < 1)
	error('Ungueltige Anzahl von Iterationen n.') % Es muss mindestens eine Iteration geben.
end
format long; % detailliertes Ausgabeformat
n = floor(n); % Iterationenzahl wird abgerundet - nicht noetig.
y = 0.5*(x_0 + (a/x_0)); % Erste Iteration wird direkt in der Ausgabevariable y gespeichert.
fprintf('Startwert:\n\nx_0 = %g\n\nIterationen:\n\nx_1 = %14.14f\n',x_0,y); % Formatierter Text wird auf der Konsole ausgegeben.
if(n >= 2) % Ist die Anzahl der Iterationen groesser als 1, wird eine Schleife erzeugt, die die restlichen Iterationen berechnet und auf der Konsole ausgibt.
	for i = 2:n
		y = 0.5*(y + (a/y));
		fprintf('x_%d = %14.14f\n',i,y);
	endfor
end
end
