
function main()
%Startwerte fuer x
x0=[??;??];
%Startwert fuer lambda
lambda0=??;
%Toleranz
TOL=??;
%Maximale Iterationszahl
maxiter=??;
%Aufruf des Newtonverfahrens
[x_fin,lambda_fin]=newton_it(x0,lambda0,TOL,maxiter);
%Hier beginnt das Plotten
[X,Y] = meshgrid(1:.02:3,0:.02:1);
%In Z sind die Daten fuer den Plot des unbeschraenkten Problem
Z=??;
%Plot der Nebenbedingung
x_g=[0:0.01:2];
y_g=??;
contour(X,Y,Z,20)
title('Contour-Plot')
hold on
plot(x_g,y_g)
hold on
%Plot der optimalen Loesung des unbeschraenkten Problems
plot(??,??,'r*','LineWidth',2,'MarkerSize',12)
hold on
plot(x_fin(1),x_fin(2),'mo',...
                'LineWidth',2,...
                'MarkerSize',12)
%Nebenbedingung erfuellt?
disp(['Nebenbedingung:',num2str(??)])
%KKT Toleranz erfuellt?
disp(['KKT-Bedingungen:',num2str(??)])

            
%Newton Iteration  
function [x_rueck,lambda_rueck]=newton_it(x,lambda,TOL,maxiter)
iter=0;
%Wie gross ist das Inkrement, das gleich Null werden soll?
inkrement=norm(??);
x_k=[x;lambda];
while (inkrement>TOL)
    if (iter==maxiter)
        disp('Maxiter erreicht!')
        break
    end
    %Hier ist das Newtonverfahren. Beachte: Inversen koennen sehr einfach
    %mit Hilfe des problems inv() berechnet werden.
    x_k=??;
    iter=iter+1;
    %Ist das Inkrement klein genug?
    inkrement=??;

end
disp(['Inkrement ',num2str(inkrement),'< TOL'])
disp(['Anzahl der Iterationen: ',num2str(iter)])
%Rueckgabe der optimalen Werte
x_rueck=[??,??];
lambda_rueck=??;


%Gradient der lagrangefunktion einschliesslich der Gleichungsnebenbedingung
function g=func_newton(x,lambda)
g=[??;??;??];

%Berechnung der Jacobimatrix fuer das Newtonverfahren
function H=jac_newton(x,lambda)
H=[??,??,??;...
    ??,??,??;...
    ??,??,??];