function H=sidp(sidp_parameters, rsss_parameters,system,apriori) %pomocne promenne a konstanty step=[1 sidp_parameters.n_grid sidp_parameters.n_grid^2]; rozsah_min=[1;0;0]; rozsah_max=[sidp_parameters.n_grid; sidp_parameters.n_grid-1; sidp_parameters.n_grid-1]; stav1=zeros(3,1); sigma_na_druhou=system.sigma^2; zero=zeros(sidp_parameters.horizont,3); %zero(1,:) nema smysl, ale takhle je to pekne range=zeros(sidp_parameters.horizont,3); eigvec=zeros(sidp_parameters.horizont,3,3); [H,u]=init_hyperstate(sidp_parameters,system,apriori); %vytvori H a u, nastavi H0 a u* for i=1:sidp_parameters.n_pass i for j=1:sidp_parameters.n_iter j search_region=sidp_parameters.gama^(j-1)*sidp_parameters.lambda^(i-1)*sidp_parameters.search_region_init; [H zero range eigvec u]=update_hyperstate(H,zero, range, eigvec,u,sidp_parameters.n_grid,system.sigma,(i+j>2)); %vygeneruje trajektorie, v zasazenem regionu rovnomerne rozmisti body a prekopiruje nalezena u* for k=sidp_parameters.horizont:-1:1 %pozor na meze level=sidp_parameters.horizont+1-k; k for l=1:size(H,2) %if mod(l,1000)==0 % l %end candidates=generate_candidates(u(k,l), search_region, sidp_parameters.num_of_candidates,sidp_parameters.generate_candidates_mode); %compare candidates %simple comparing realization1=zeros(size(candidates,1),rsss_parameters.n0); for m=1:sidp_parameters.num_of_candidates for n=1:rsss_parameters.n0 %generate realization state=H(k,l,:); best_control=candidates(m); for o=1:level %aplication of best_control %next_state(1)=state(1)+(state(2)+state(3)*randn)*best_control+system.sigma*randn; next_state(1)=state(1)+state(2)*best_control+system.sigma*randn; realization1(m,n)=realization1(m,n)+(next_state(1)-system.yr(k+o))^2; if o