function f = functional(u)

global n;
global x0;
global Ad;
global Bd;
global Cd;
global Dd;
global dt;

%Berechnung der Zustände
x1(1)=x0(1);
x2(1)=x0(2);
for i=1:n-1
    x_temp1=[x1(i);x2(i)];
    x_temp2=Ad*x_temp1+Bd*u(i);
    x1(i+1)=x_temp2(1);
    x2(i+1)=x_temp2(2);
end
%Berechnung der Ausgänge
y=Cd*[x1;x2]+Dd*u;

global z;
global a;
global b;
f1=0.5*z*sum(y(1,:).^2)*dt; 
f2=0.5*a*sum((x1.^2))*dt;
f3=0.5*b*sum(y(2,:).^2)*dt;
f=f1+f2+f3;

end