clear all
close all

P=[[-1 -1];[1 8];[6 -1]];

Px = P(:,1);  % erste Spalte von P beinhaltet alle x-Werte
Py = P(:,2);  % zweite Spalte von P beinhaltet alle y-Werte
%---------------------------------------------------------------------
N=length(Px);

PxPy = Px'*Py;
PxPx = Px'*Px;
Sx   = sum(Px)/N;
Sy   = sum(Py)/N;

% Die gesuchte Gerade
f  = @(x) (PxPy-N*Sx*Sy)/(PxPx-N*Sx^2)*(x-Sx)+Sy;
% Steigung
m = (PxPy-N*Sx*Sy)/(PxPx-N*Sx^2);
% Offset
b = -Sx*m+Sy;
% Fehler
err = norm(Py-f(Px));

fprintf('Der Fehler zur Gerade f(x)=%.2f * x + (%.2f) betraegt Err = %.1e\n',m,b,err);

DIM = 100;
h  = (max(Px)-min(Px))/(DIM+1);
xx = min(Px):h:max(Px);
yy = f(xx);

plot(xx,yy,'k-',Px,Py,'ro');
%xlim([min(Px)-1,max(Px+1)]);  % Fenster etwas groesser waehlen, dann
%ylim([min(Py)-1,max(Py+1)]);  % sieht man die Punkteverteilung besser
xlim([min(Px),max(Px)]);  % Fenster etwas groesser waehlen, dann
ylim([min(Py),max(Py)]);  % sieht man die Punkteverteilung besser
grid on