1
我想評估一個使用quadgk的數值積分,因爲我不是matlab專家,我很難得到下面的代碼來工作。 我有矩陣g(i,j),我正在評估g的每個元素的參數phi的積分。這部分代碼工作正常,但是當我想改變矩陣g的大小時,問題就開始了,在這種情況下,只有第一個值是正確的,並且對於更高大小(k)的所有g元素,它返回零。在多個參數上迭代quadgk
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
這裏是對於k = 2和輸出,
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
我試圖尋找的功能處理陣列,和幾個不同的東西,但似乎沒有解決的問題,所以遠。
嗨edwinksl,非常感謝你的答案,現在它的工作完美!但是我仍然感到困惑,因爲我的代碼爲k的每個單獨的值產生了正確的結果,即使對索引i進行迭代,所以這就是爲什麼我不認爲使用{i}創建了問題。 – setareh