Calculate the numerical hessian

15 Ansichten (letzte 30 Tage)
amine&&
amine&& am 5 Nov. 2016
Kommentiert: Walter Roberson am 7 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!

Antworten (2)

Walter Roberson
Walter Roberson am 6 Nov. 2016
  4 Kommentare
amine&&
amine&& am 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 am 7 Nov. 2016
mse = arrayfun(@(alpha,beta) mseFunction(alpha, beta, Donnee_6_jours), ALPHA, BETA);

Melden Sie sich an, um zu kommentieren.


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

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by