Effacer les filtres
Effacer les filtres

Calculate the numerical hessian

34 vues (au cours des 30 derniers jours)
amine&&
amine&& le 5 Nov 2016
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
Walter Roberson le 6 Nov 2016
  4 commentaires
amine&&
amine&& le 7 Nov 2016
Hello Roberson,
the fourth line generates an error
mse = arrayfun(@alpha,beta) mseFunction(alpha, beta, Donnee_6_jours), ALPHA, BETA);
|
Error: Unexpected MATLAB expression.
what you think of the following function use to compute the gradient :
function grad_x=gradIent(x1,x2,Donnee_6_jours)
x=zeros(2,1);
x(1)=x1;
x(2)=x2;
h=1*10^-2;
v=eye(2,2);
grad_x=zeros(2,1);
for i=1:2
T1=x+h.*v(:,i);
T2=x-h.*v(:,i);
grad_x(i)=(mseFunction(T1(1),T1(2),Donnee_6_jours)-mseFunction(T2(1),T2(2),Donnee_6_jours))/(2*h);
end
Thanks Roberson.
Walter Roberson
Walter Roberson le 7 Nov 2016
mse = arrayfun(@(alpha,beta) mseFunction(alpha, beta, Donnee_6_jours), ALPHA, BETA);

Connectez-vous pour commenter.


Matt J
Matt J le 7 Nov 2016
Have a look at this FEX submission, in particular at hessian(fun,x0).

Catégories

En savoir plus sur NaNs dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by