%%                                3-d Graphik

% Sombrero auf [-8,8]^2

x = [-8:.2:8];[X,Y] = meshgrid(x);
r = sqrt(X.^2+Y.^2);
z =  sin(r)./r;

mesh(x,x,z)

% Entfernen der Achsen

axis off

% Kontourlinien

contour(x,x,z)


%%                     Zählschleifen

% Bsp Partialsumme harmonische Reihe

s = 1;    % Initialisiere Summe

n = 100;
for i = 2:n
    s = s + 1/i;
end
s           % Ausgabe der n-ten Summe auf den Schirm

% Vektorisierte Variante
 n= 100;
 s = sum(1./[1:n])

% Bsp
% der Anweisungsblock in folgender Schleife wird NICHT durchlaufen
 clear
for i=2:1
    disp('Schleifendurchlauf'),i
end
i

% Umsetzen der Zählvariable terminiert nicht Schleife

for k=2:4
    k
    k=10
end

% Präallokation (großer) Felder

t=cputime;
for i=1:10000
    x(i) =1/i;
end
cputime-t

% vergleiche mit

t=cputime;
x=zeros(10000,1);
for i=1:10000
    x(i) =1/i;
end
cputime-t

% am effizientesten Vektorisierung

 t=cputime;x=1:10000;x=1./x;cputime-t



% Bsp Aufbau einer n x n Matrix: A(i,j) = i/j
% Verwendung der Symmetrie von A

n= 5; A = eye(n);          % Initialisiere A

for j=2:n
    for i = 1:j-1
        A(i,j) = i/j;
        A(j,i) = A(i,j);  % Symmetrie, vermeide neue Rechnung
    end
end




% Vermeideung der inneren Schleife

n= 5; A = eye(n);
for j= 2:n
    A([1:j-1],j) = [1:j-1]'/j;            % Beachte Transponierung
    A(j,[1:j-1]) = A([1:j-1],j)';         % auf rechter Seite
end




%%                bedingte Schleifen

% Bsp: kleinste positive Maschinenzahl

x = 2;
while x > 0
    y=x;
    x = x/2;
end
[y,y/2]


% Bsp Maschinengenauigkeit
x=1;
while 1+x > 1
    y=x;
    x = x/2;
end
y


(1+y/2)-1






