clc, clear all, close all
tic
k1 = 1E-02:0.1:1E+02;
k2 = 1E-02:0.1:1E+02;
k3 = 1E-02:0.1:1E+02;
k = sqrt(k1.^2+k2.^2+k3.^2);
c = 1.476;
gamma = 3.9;
colors = {'b'};
Ek = (1.453*k.^4)./((1 + k.^2).^(17/6));
E = @(k) (1.453*k.^4)./((1 + k.^2).^(17/6));
E_int = zeros(1,numel(k));
E_int(1) = 1.5;
for i = 2:numel(k)
if k(i) < 400
E_int(i) = E_int(i-1) - integral(E,k(i-1),k(i));
elseif k(i) > 400
E_int(i) = 2.180/(k(i)^(2/3));
end %end if
end %end i
beta = (c*gamma)./(k.*sqrt(E_int));
figure
plot(k,beta,colors{1})
count = 0;
%F_11 = zeros(1,numel(k1));
F_33 = zeros(1,numel(k1));
之後,我應該算F_33作爲
for i = 1:numel(k1)
count = count + 1;
phi_33 = @(k2,k3) (1.453./(4.*pi)).*(((k1(i)^2+k2.^2+(k3 + beta(i).*k1(i)).^2).^2)./((k1(i)^2+k2.^2+k3.^2).^2)).*((k1(i)^2+k2.^2)./((1+k1(i)^2+k2.^2+(k3+beta(i).*k1(i)).^2).^(17/6)));
F_33(count) = 4*integral2(phi_33,0,1000,0,1000);
end
現在讓我們來我的問題。我從紙張知道:
k = sqrt(k1.^2+k2.^2+k3.^2);
k30 = k3 + beta.*k1;
k0 = sqrt(k1.^2+k2.^2+k30.^2);
E_k0 = 1.453.*(k0.^4./((1+k0.^2).^(17/6)));
因此,對於phi_33表達會導致
phi_33 = (E_k0./(4*pi.*(k.^4))).*(k1.^2+k2.^2);
的問題是:我怎麼能利用這最後的表達insted的長一個我的目前使用(在for循環中)?
phi_33的最後一個表達式更容易處理(特別是因爲在編寫前者時魯莽的錯誤)並且它會「通過引用」(k2,k3),這是獨立變量。
任何暗示都是值得歡迎的。
最好的問候, FPE
如果你能提煉出你所問的內容的真相,那麼這個問題將更具可讀性。我不明白,如果你只是想矢量化你的代碼? – bla
'E_int(400)'的值是多少? – Shai
@natan我不想矢量化。我希望for循環中的句柄函數使用phi_33的最後一個表達式,而不是我目前使用的擴展表達式。 – fpe