% Numerik fuer Mathematiker SS 2015
% Einfuehrung in MATLAB
%
% Skript zum grundlegenden Umgang mit Matrizen in MATLAB

%% (1) Erzeugen von Vektoren und Matrizen
%
% Vektoren und Matrizen koennen mittels "[" und "]" direkt angelegt
% werden.
% Ein Komma "," oder Leerzeichen " " trennt dabei die ???
% ein Semikolon die ???
[1, 2, 3]
x = [1; 2; 3]
A = [1 2 3; 4 5 6]

% Es koennen auch existierende Vektoren und Matrizen zur Konstruktion
% genutzt werden
[x, x]
[x; x]
B = [A 2*A; -A A]

% MATLAB bietet auch vordefinierte Funktionen zur Erzeugung von Vektoren 
% und Matrizen an
-1:10           % generiert ???
-1:3:10         % generiert ???
zeros(1,4)      % generiert ???
ones(4,3)       % generiert ???
eye(3)          % generiert ???
magic(3)        % generiert ???
rand(4,3)       % generiert ???
diag(1:4)       % generiert ???

%% (2) Zugriff auf Matrizen
A = magic(4);

% Auf die Eintraege einer angelegten Matrix A kann man mittels 
% "A(... , ...)" zugreifen.

% Folgende Befehle liefern 
A(2,2)          % ???
A(1,:)          % ???
A(2, [1,3])     % ???
A(1:2, 3:4)     % ???

% Zuweisungen zu einzelnen Eintraegen koennen analog getaetigt werden
A(1:2, 1:2) = eye(2)

%% (3) Arithmetik mit Matrizen
%
% Mit "'" wird ein Vektor/eine Matrix ???
[1 2 3]'
[1:3, 4:6, 7:9]'

% Addition und Subtraktion
[1 2 3] + [0 1 2]
[1 2 3] + 1
ones(3) + [1:3; 4:6; 7:9]

% Multiplikation mit einem Skalar
2 * [1:3; 4:6; 7:9]

% ???
ones(3) * [1 0 1; 0 1 0; 0 0 1]

% ???
ones(3) .* [1 0 1; 0 1 0; 0 0 1]

% Potenzen von Matrizen
%
% ???
A = [1 2; 0 3]; A^2

% ???
A.^2

% Matrizen und Division
%
% ???
A \ eye(2)

% ???
A .\ ones(2)

% ???
A \ [1; 1]


%% (4) Spezielle Funktionen fuer Vektoren und Matrizen
x = 1:10; A = [1:3; 1 1 1; 2 1 0];

length(x)       % ???
sum(x)          % ???
diff(x)         % ???
cumsum(x)       % ???
prod(x)         % ???
min(x)          % ???

size(A)         % ???
det(A)          % ???
diag(A)         % ???
max(A)          % ???