function [f,g] = spline(xopt,knoten,ya)
% ---------------------------------------------------------------
% Loesung eines Optimalsteuerungsproblems
% Spline-Problems
%
% In diesem File wird die zu minimierende Funktion f und die
% Nebenbedingungen g definiert.
% Die Nebenbedingungen sind allsamt Gleichungsnebenbedingungen.
% ---------------------------------------------------------------
% Eingabe - Parameter
% xopt : Vektor der zu optimierenden Variablen. In den letzten n 
%        Komponenten sind die n Variablen der zu bestimmenden Steuerung 
%        an den ersten n Knoten abgelegt.
% knoten : Das diskretisierte Integrationsintervall
% ya   : Anfangswerte fuer alle Differentialgleichungen
% ---------------------------------------------------------------
% Ausgabe - Parameter
% f : f(u), wobei f die zu minimierende skalare Funktion ist.
% g : g(u), wobei g die vektorwertige Funktion der Nebenbedingungen ist.
% ---------------------------------------------------------------
% 12.1.1999   Helge Baumann
% 
%

% generelle Abkuerzungen definieren
N1 = size(knoten,1);      % n+1 = Anzahl der Knoten
N = N1 - 1;               % n = Anzahl der Diskretisierungsintervalle
nopt = size(xopt,1);      % Anzahl der zu bestimmenden Variablen
u = xopt(nopt-N+1:nopt);  % In den letzten n Komponenten von xopt ist die 
                          % Steuerung u an den Knoten gespeichert
nx = size(ya,1);          % Anzahl der Differentialgleichungen

% Optionen fuer den DGL-Loeser:
% options = odeset('AbsTol',1e-3,'Refine',1);
options = odeset;

% ======================================================================
% Ab hier muss die Datei an die konkrete Aufgabenstellung angepasst werden.
% ======================================================================

% Abkuerzungen fuer die konkrete Aufgabe definieren
parameter = [];

% zu optimierende Anfangswerte aus dem Vektor xopt 
% in den Vektor der Anfangswerte zum Loesen der DGL uebertragen.

% Integration der Zustandsgroessen:
xdgl = gety('dglspline',options,knoten,ya,u,parameter);

% Definiton von f, der zu minimierenden Funktion.
f = xdgl(N1,3);

% Definition der Nebenbedingungen in Form der Funktion g:
% Interpolationsbedingungen am Ende:
g(1) = xdgl(N1,1);	
g(2) = xdgl(N1,2)-1;

return;








