%% Upggift L.2.25 i kursen TMA671
% Program skrivet av: Johannes Borgqvist
% Datum: 2018-04-06
% Linjär algebra boken av Holmåker och Gustavsson
% Kapitel 2, Upplaga 1
%% Uppgiftsbeskrivning
% Beräkna det minsta av ståndet från P=(0, 2, 4, 1, 6)
% och skärningen mellan de två affina mängderna
% x1+x2-x3+x5=0         (1)
% x1-x2+3*x3+x4-x5=0    (2)
% R^5
%% Lösning
% Metoden är indelad i fyra steg
%  (1) Hitta en mängd som generar nollrummet till Matrisen A
% definierad enligt 
% A = [1, 1, -1, 0, 1; 1, -1, 3, 1, -1];
%  (2) Generera en ON-bas utifrån denna mängd
%  (3) Beräkna projektionen Ppr av P på rummet
%      som spänns av ON basen
%  (4) Beräkna längden på vektorn "Ppr-P" vilken
%      är avståndet.

%% Steg 1: Hitta en mängd som genererar nollrummet
% Defniera matrisen A
A = [1, 1, -1, 0, 1; 1, -1, 3, 1, -1];
% Defniera punkten P
P = [0; 2; 4; 1; 6];
% Vi definierar våra basvektorer till N(A)'
v1 = A(1,:)';
v2  = A(2,:)';

%% Steg 2: Skapaen ON-bas via Gram-Schmidt
% Definiera första basen
e1 = v1;
% Definiera konstantent
alpha = ((v2'*e1)/(e1'*e1));
% Definiera andra basvektorn
e2 = e1 - alpha*v2;
% Normalisera första basvektorn
e1 = (1/norm(e1)).*e1;
% Normalisera andra basvektorn
e2 = (1/norm(e2)).*e2;

%% Steg 4: Beräkna den ortogonala projektionen
Pbis = ((P'*e1).*e1) + ((P'*e2).*e2);
%% Steg 5: Beräkna avståndet
dist = norm(Pbis)