% % Written by: % -- % John L. Weatherwax 2009-04-21 % % email: wax@alum.mit.edu % % Please send comments and especially bug reports to the % above email address. % %----- close all; drawnow; clc; clear; clear functions; n = 24; % Part (a): Holt's method: % beta_0_n = 30; beta_1_n = 2; alpha_1 = 0.2; alpha_2 = 0.1; omega_1 = 1 - alpha_1; omega_2 = 1 - alpha_2; % the values of the new measurements: Zs = [ 28, 31, 36 ]; % implement the first Hold update by hand: mu_0 = beta_0_n; beta_0 = beta_1_n; mus = zeros(3,1); betas = zeros(3,1); z_pred = zeros(3,2); mus(1) = ( 1 - omega_1 ) * Zs(1) + omega_1 * ( mu_0 + beta_0 ); betas(1) = ( 1 - omega_2 ) * ( mus(1) - mu_0 ) + omega_2 * beta_0; z_pred(1,1) = mus(1) + betas(1) * 1; z_pred(1,2) = mus(1) + betas(1) * 2; for ni=2:3 mus(ni) = ( 1 - omega_1 ) * Zs(ni) + omega_1 * ( mus(ni-1) + betas(ni-1) ); betas(ni) = ( 1 - omega_2 ) * ( mus(ni) - mus(ni-1) ) + omega_2 * betas(ni-1); z_pred(ni,1) = mus(ni) + betas(ni) * 1; z_pred(ni,2) = mus(ni) + betas(ni) * 2; end % Part (b): Double exponential smoothing: % % first convert the initial values of beta_1_n and beta_0_n ... into initial values of our smooth (Equation 3.43 in the book): % alpha = 0.1; w = 1 - alpha; S_0_1 = beta_0_n - ( w / ( 1 - w ) ) * beta_1_n; % these are S_0^{[1]}, and S_0^{[2]} S_0_2 = beta_0_n - ( 2 * w / ( 1 - w ) ) * beta_1_n; [xHats, S_1, S_2, et, MSE ] = double_exp_smoothing( Zs, 1-alpha, S_0_1, S_0_2 ); % compute the two step look ahead values from S_1 and S_2: % xHats_2 = ( 2 + (alpha/w) * 2 ) * S_1 - ( 1 + (alpha/w) * 2 ) * S_2; [ xHats, xHats_2 ]