%% Grevilleův algoritmus
% A je daná matice, A_k submatice tvořena prvními k sloupci, a_k je k-tý sloupec, známe A_{k-1}^+
%% Řádková verze
% Položíme:
% d_k=a_kA_{k-1}^+\\
% c_k=a_k-d_kA_{k-1}\\
% b_k=\left\{
% \begin{array}{lcl}
% 	c_k^+&\quad& c_k\neq\mathbf{o}\\
% 	&\quad& \\
% 	\frac{1}{1+d_k d_k^*}A_{k-1}^+d_k^*&\quad& c_k=\mathbf{o}\\
% \end{array}
% \right.\\
% A_k^+=\left(A_{k-1}^+-b_kd_k|b_k\right)
%% Sloupcová verze
% Položíme
% d_k=A_{k-1}^+a_k\\
% 	c_k=a_k-A_{k-1}d_k\\
% 	b_k=\left\{
% 	\begin{array}{lcl}
% 		c_k^+&\quad& c_k\neq\mathbf{o}\\
% 		&\quad& \\
% 		\frac{1}{1+d_k d_k^*}d_k^*A_{k-1}^+&\quad& c_k=\mathbf{o}\\
% 	\end{array}
% 	\right.\\
% 	A_k^+=\left(
% \begin{array}{c}
% A_{k-1}^+-d_kb_k	\\
% ------\\
% b_k
% \end{array}
% \right)

A=[1 2 3;4 5 6;7 8 9];

%

function AP=greville(A)
% funkce pro vypocet pseudoinverzni matice pomoci Grevilleova algoritmu

end