function p=polynomschleife(x,y,n)
%function p=polynomschleife(x,y,n)
%produziert n Datenfits fuer Messdaten y, mit Polynomen von 1. bis n.
%Grades. Fuer jeden fit wird eine Abbildung erzeugt und der Fehler
%ausgegeben. 
%Ausgabeargument p ist das Polynom, nach dem der Fehler nicht mehr stark 
%abnimmt (Unterschied im Fehler < 1).
%Die Funktion benutzt mitquadfehler.m

%Matrix erstellen, in die die Koeffizienten geschrieben werden, 
%jedes Plolynom in eine Zeile:
p_matrix=zeros(n,n+1);

%Schleife ueber Polynomlaengen:
for i=1:n
    [p,S]=polyfit(x,y,i);          %Kurvenanpassung
    y_schaetz=polyval(p,x,S);      %Schaetzwerte
    p_matrix(i,1:i+1)=p;           %Polynom in  Matrix speichern
    fehlervec(i)=mitquadfehler(y,y_schaetz);  %Mittlerer quadratischer Fehler
    figure(i)                      %Neue Abbildung
    clf
    plot(x,y,'.b',x,y_schaetz,'-r') %Daten und Schaetzung plotten
    legend('Daten','Schaetzung')    %Beschriften
    ts=sprintf('Polynom %g-ten Grades hat Fehler %g',i,fehlervec(i));  %String fuer Ueberschrift
    title(ts);
    disp(ts)                        %Bildschirmausgabe, um alle Fehler in der Uebersicht zu haben
end
    
%Polynom mit dem geringsten n finden, nach dem der Fehler um weniger als 1
%kleiner wird:
i=1;
while fehlervec(i)>fehlervec(i+1)+1;   
    i=i+1;            
end       %Am Ende der Schleife ist i um 1 hoeher gelaufen als das gesuchte n

ts=sprintf('Polynom %g-ten Grades wird zurueckgegeben',i-1);
disp(ts)

p=p_matrix(i-1,1:i); %Rueckgabewert bestimmen. 