Calculate the numerical hessian
Afficher commentaires plus anciens
Hello!
I have the following function with the two variables alha and beta:
function MSE=mseFunction(alpha,beta,Donnee_6_jours)
moyenneMobile=zeros(240,1);
%Calcul de la moyenne mobile
for i=1:240
moyenneMobile(i)=1/48.*((Donnee_6_jours(i)/2)+sum(Donnee_6_jours(i+1:i+47))+(Donnee_6_jours(i+48)/2));
end
moyenneMobileCentree = padarray(moyenneMobile,24,'both');
composanteSaisonniaire=Donnee_6_jours(25:264)./moyenneMobileCentree(25:264);
composanteSaisonniaireV2 = padarray(composanteSaisonniaire,24,'both');
MatriceComposanteSaisonniaire = reshape(composanteSaisonniaireV2,[48,6]);
MatriceComposanteSaisonniaire(1:24,1)=NaN;
MatriceComposanteSaisonniaire(25:48,6)=NaN;
MedianneComposantsSaisonniers = nanmedian(MatriceComposanteSaisonniaire,2);
LES=zeros(288,1);
LES(25)=moyenneMobileCentree(25);
for i=26:264;
LES(i)=alpha.*moyenneMobileCentree(i)+(1-alpha).*LES(i-1);
end
S=zeros(264,1);
S(1:48,:)=MedianneComposantsSaisonniers;
for j=49:264;
S(j)=beta.*(Donnee_6_jours(j)./LES(j))+(1-beta).*S(j-48);
end
PREV=zeros(264,1);
PREV(26:264)=S(26:264).*LES(25:263);
PREV2=padarray(PREV(:),24,'post');
MSE = mean((Donnee_6_jours(26:264)-PREV2(26:264)).^2);
is there a way to calculate the numerical hessian.
Thanks!
Réponses (2)
Walter Roberson
le 6 Nov 2016
0 votes
4 commentaires
amine&&
le 6 Nov 2016
Walter Roberson
le 6 Nov 2016
It does not make sense to calculate the numeric Hessian of a function: it only makes sense to calculate the symbolic Hessian, or to calculate the numeric Hessian of a function that has been calculated at particular locations.
For example,
alpha_vals = linspace(.2, .87, 13);
beta_vals = logspace(-3, 2, 19);
[ALPHA, BETA] = ndgrid(alpha_vals, beta_vals);
mse = arrayfun(@alpha,beta) mseFunction(alpha, beta, Donnee_6_jours), ALPHA, BETA);
[gx, gy] = gradient(mse, alpha_vals, beta_vals);
[gxx, gxy] = gradient(gx, alpha_vals, beta_vals);
[gyx, gyy] = gradient(gy, alpha_vals, beta_vals);
subplot(1,5,1)
pcolor(ALPHA, BETA, mse);
title('MSE')
subplot(1,5,2)
pcolor(ALPHA, BETA, gxx)
title('D alpha alpha');
subplot(1,5,3)
pcolor(ALPHA, BETA, gxy)
title('D alpha beta')
and so on.
amine&&
le 7 Nov 2016
Walter Roberson
le 7 Nov 2016
mse = arrayfun(@(alpha,beta) mseFunction(alpha, beta, Donnee_6_jours), ALPHA, BETA);
Matt J
le 7 Nov 2016
0 votes
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!