Dear all,
I am trying to maximize this function
T=1000;z=randn(T,1);u=randn(T,1);k1=0.01;k2=0.01;options=optimset('LargeScale','off','display','off','TolFun',0.0001,'TolX',0.0001,... 'GradObj','off', 'Hessian','off','DerivativeCheck','off');for t=1:T [x,fval,exitflag,output,G_sum,H]=fminunc('funct',u(t),options,... z,k1, k2,t, u,T);end
where
function LL= funct(x,z,k1, k2,t, u,T)if t==1 u=[x; u(2:T) ]; elseif t==T u=[u(1:T-1);x ]; else u=[u(1:t-1);x;u(t+1:T) ]; end e2=(z-u).^2; kk= - 0.5*x^2/k2;LL = -( -.5/k1*sum(e2(t:T))+kk) ;end
However, I am not sure if the function is properly set up in terms of 'x'. As you can see 'x' changes position within 'u'.
I suspect that an alternative approach would be
function LL= funct(x,z,k1, k2,t, u,T)u(t)=x; e2=(z-u).^2; kk= - 0.5*x^2/k2;LL = -( -.5/k1*sum(e2(t:T))+kk );end
Which of the two is more efficient? Is there any alternative solution?
Thanks in advance.
Best Answer