% Kondensator - Entladung 182732
% Form U(t)= A * exp(-t/tau)
opkt=[10, 20, 30, 40, 50, 60, 70; 25, 20.5, 17, 13.5, 11, 9, 8]';

% Berechnen Hilfsgrösse
pkt=opkt; pkt(:,2)=log(pkt(:,2))

% Lineare Regression mit Hilfsgrösse
fpart=@(x) [  exp(x).^0 x] % 
Ff=fpart(pkt(:,1))
M=Ff'*Ff
ys=Ff'*pkt(:,2)
par=inv(M)*ys % = [a b]

% Lineare Regression mit Hilfsgrösse (alternativ)
SS=cov(pkt) % Matrix der Kovarianz
mux=mean(pkt(:,1)); muy=mean(pkt(:,2))
par=[ 0  0 ]; % Initialisierung
par(2)=SS(1,2)/SS(1,1)   % Steigung
par(1)=muy - par(2)*mux 

% Parameter zurücktransformieren
Aa=exp(par(1))
tau=-1/par(2)

% Funktion und Original-Daten Plotten
ff=@(x)Aa*exp(-x/tau)
plot(opkt(:,1),opkt(:,2),'*')
hold on 
fplot(ff,[10,70])
hold off

% Elektrisches Feld  {701348
% Form E(r)=A/(r-r0)
opkt=[1., 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9 ;2.041, 1.887, 1.733, 1.6, 1.448, 1.412, 1.28, 1.166, 1.146, 1.03]';
% Berechnen Hilfsgrösse
pkt=opkt; pkt(:,2)=1./(pkt(:,2))

% Lineare Regression mit Hilfsgrösse
fpart=@(x) [  exp(x).^0 x] % 
Ff=fpart(pkt(:,1))
M=Ff'*Ff
ys=Ff'*pkt(:,2)
par=inv(M)*ys % = [a b]

% Lineare Regression mit Hilfsgrösse (alternativ)
SS=cov(pkt) % Matrix der Kovarianz
mux=mean(pkt(:,1)); muy=mean(pkt(:,2))
par=[ 0  0 ]; % Initialisierung
par(2)=SS(1,2)/SS(1,1)   % Steigung
par(1)=muy - par(2)*mux 

% Parameter zurücktransformieren
Aa=1/par(2)
r0=-par(1)*Aa

% Funktion und Original-Daten Plotten
ff=@(x)Aa  ./(x - r0)
plot(opkt(:,1),opkt(:,2),'*')
hold on 
fplot(ff,[0.9,2])
hold off

% Exponent bestimmen 376904 
% Form y(x)= A   * x^b
opkt=[1., 11., 21., 31., 41., 51.;4.088, 1605.21, 8083.71, 21402.4, 43054.5, 74299.5]';
% Berechnen Hilfsgrösse
pkt=opkt; pkt=log(pkt)

% Lineare Regression mit Hilfsgrösse
fpart=@(x) [  exp(x).^0 x] % 
Ff=fpart(pkt(:,1))
M=Ff'*Ff
ys=Ff'*pkt(:,2)
par=inv(M)*ys % = [a b]

% Lineare Regression mit Hilfsgrösse (alternativ)
SS=cov(pkt) % Matrix der Kovarianz
mux=mean(pkt(:,1)); muy=mean(pkt(:,2))
par=[ 0  0 ]; % Initialisierung
par(2)=SS(1,2)/SS(1,1)   % Steigung
par(1)=muy - par(2)*mux 


% Parameter zurücktransformieren
b=par(2)
Aa=exp(par(1))

% Funktion und Original-Daten Plotten
ff=@(x)Aa.*x.^(b) 
plot(opkt(:,1),opkt(:,2),'*')
hold on 
fplot(ff,[0.9 52])
hold off
