clear all;
close all;
n=5 % Zahl der Unbekannten
% wir holen die Daten
x=[1.0249  0.9499  0.8661  0.7734  0.6714 ...
        0.5595  0.4371  0.3030  0.1555  0.0075]';
y=[0.3893  0.3229  0.2653  0.2166  0.1772 ...
        0.1476  0.1286  0.1214  0.1273  0.1489]';
% und zaehlen sie ab
m=length(x);
a=[y.^2 x.*y x y ones(m,1)]; % Anpassungsmatrix laut Aufgabe                   
b=x.^2;  % rechte Seite 
[q, a, p, rk]=qrpivot(a);   % Aufruf QR mit Pivotisierung
c=q'*b;           % Transformation im Bildraum
loes=a\c;            % Loesung modulo Permutation
coeff=loes(p(:));    % Rueckpermutierte Loesung
plot(x,y,'rx')    % Datenplot, rote kleine x gesetzt
title('Aufgabe 20')
hold on          % wir wollen auch die Loesung plotten 
yp=0:0.001:2.5;  % diese Grenzen muss man ausprobieren
% Wir loesen nach x auf, und brauchen 
% den Radikanden der pq Formel
rad=coeff(1)*yp.^2+coeff(4)*yp+...
      coeff(5)+((coeff(3)+coeff(2)*yp).^2)/4;
% hole die Indizes, wo der Radikand positiv ist
posi=find(rad>=0);
% fuer diese Indizes gibt es je einen x-Wert,
% SEHR INEFFIZIENT gerechnet:
xprechts=(coeff(3)+coeff(2)*yp(posi))/2+sqrt(rad(posi));
xplinks =(coeff(3)+coeff(2)*yp(posi))/2-sqrt(rad(posi));
plot(xprechts,yp(posi))
hold on 
plot(xplinks,yp(posi))
legend('Daten','Ellipse')
xlabel('x')
ylabel('y')

