%% Metoda nejmenších čtverců
% Systém lineárních rovnic: Ax=b
% Reziduum pro x: r_x=b-Ax
% Řešení ve smyslu NČ \hat x: minimalizuje normu rezidua \|r_x\|\rightarrow\min
% Věta 1: Řešení ve smyslu NČ vždy existuje a je řešením normálního systému rovnic A^*Ax=A^*b.
% Věta 2: Řešení ve smyslu NČ je jediné, pokud sloupce matice A jsou lineárně nezávislé. V tom případě platí \hat x=(A^*A)^{-1}A^*b.
%% Příklad 1:

format short
A=[ones(1,5);1:5]',b=[2:6]'

% Přesné řešení v tomto případě existuje, je rovno [1,1]^T.

x0=inv(A'*A)*A'*b

% Chyba řešení:

x0-[1;1]

% Norma rezidua:

r0=b-A*x0
norm(r0)

% Řešení s využitím maticového dělení:

x1=A\b
x1-[1;1]
r1=b-A*x1
norm(r1)

%
% Upravíme pravou stranu:

b(1)=1

% Reziduum pro předchozí řešení:

r0=b-A*[1;1]

% Řešení ve smyslu NČ a jeho reziduum:

x1=inv(A'*A)*A'*b
r1=b-A*x1
norm(r1)

% Totéž pomocí maticového dělení:

x2=A\b
r2=b-A*x2
norm(r2)
x1-x2

%
%% Příklad 2: Matice se závislými sloupci

A=[1 2 3;4 5 6;7 8 9],b=sum(A,2)

% Přesné řešení existuje, čemu je rovno? Je jediné?
%