Ich versuche, eine numerische Integration mit Quadgk zu bewerten, da ich kein Experte in Matlab bin, habe ich eine harte Zeit, um den folgenden Code zu arbeiten. Ich habe die Matrix g (i, j), wo ich einen Integral-Over-Parameter phi für jedes Element von g auswerte. Dieser Teil des Codes funktioniert ordnungsgemäß, aber das Problem beginnt, wenn ich die Größe der Matrix g ändern möchte, in diesem Fall ist nur der erste Wert korrekt, und es wird Null für alle Elemente von g für höhere Größen (k) zurückgegeben.Iterieren über Quadgk mit mehreren Parametern
clear;
alpha=2.0;
h=1.0;
lmax=12;
for k=2:2:4
fun = @(phi,t,s) (exp(-i.*(t-s).*phi).*(exp(-i.*phi)-1)./sqrt((1-h.*exp(i.*phi)).*(1-h.*exp(-i.* phi))))./(2.*pi);
for i=1:k
for j=1:k
[email protected](phi) fun(phi,i,j);
g(i,j)=real(quadgk(F,0,2.*pi));
end
end
Y1=mtimes(transpose(g),g)
Y2=mpower(Y1,1./2.);
Z1 = 0.5.*(eye(k) - Y2);
Z2 = 0.5.*(eye(k) + Y2);
C1 = mpower(Z1, alpha) + mpower(Z2, alpha);
M1=diag(log(eig(C1)));
s(k/2)=k;
ent(k/2)=real(trace(M1))./(1-alpha);
end
hier ausgegeben wird für k = 2 und 4,
k =
2
g =
-0.636619772367581 0.636619772367581
-0.212206590789194 -0.636619772367581
Y1 =
0.450316371743723 -0.270189823046234
-0.270189823046234 0.810569469138702
k =
4
g =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Y1 =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
ich für das Array von Funktionsgriffe, und ein paar andere Dinge zu sehen versucht, aber nichts scheint das Problem so zu lösen weit.
Hallo edwinksl, vielen Dank für die Antwort, jetzt funktioniert es perfekt! Aber ich bin immer noch verwirrt, da mein Code für jeden einzelnen Wert von k ein korrektes Ergebnis liefert, selbst bei Iteration über Index i, weshalb ich nicht gedacht habe, dass die Verwendung von {i} das Problem verursacht hat. – setareh