% Hilbertin matriisi ja "shakkilauta"

%% silmukalla
A = zeros(8);
for ii = 1:8
    for jj = 1:8
        A(ii,jj) = 1./(ii+jj-1);
    end
end


%% tyylikkäästi vektorioperaatiolla
n = 3;
J = 1:n;
J = ones(n,1)*J
%%
% J = repmat(J,n,1);
I = J'I
H = ones(n)./(I+J-1);

%% asiaan a)
b1 = [0.95,0.67,0.52]';
b2 = b1+[0 0 0.01]';

x1 = H\b1
x2 = H\b2

%% tuloanalyysi
% vektorit erosivat toisistaan vain vähän, joten tulostenkin pitäisi erota
% toisistaan vain vähän -- eikö?

b_erotus = norm(b1-b2)
x_erotus = norm(x1-x2)

% suhteelliset virheet

b_suht = b_erotus/norm(b1)
x_suht = x_erotus/norm(x1)

%% d) 
% etstiään kuntoisuusluku (= suurin singulaariarvo jaettuna pienimmällä)
k = cond(H)
k*b_suht
% vaikuttaa ihan hyvältä. 
