1
我想評估一個需要用戶定義函數集成的表達式。
我有3個輸入到積分表達式,E,F和B. F和B是存儲在單獨的數組中的值。 E是我想要整合的參數,從0到B的值。 我正在嘗試使用用戶定義函數的積分函數,儘管我不斷收到一個矩陣尺寸的錯誤,但是我沒有理解爲F,B(我認爲)的所有值都是作爲標量輸入傳遞的。集成用戶定義函數的最佳方法
但是,我意識到對於循環的每次迭代,我都定義了一個新函數,這看起來「不雅」。關於 的任何建議1.爲什麼它不會按原樣運行(即使用*的錯誤,內部矩陣尺寸必須一致) 2.任何更優雅的解決方案?
這裏是環
for i=1:51
% DEFINE energy integrand, without prefixes
[email protected](E,F,B) sqrt(E)*exp(-8*pi*(m*q)^(0.5)*(B-E)/(3*h*F))/(exp(E/(k*Temp))+1);
% Integrate over energy range, store
J(i)=q*mu*8*pi*sqrt(2)*m.^1.5/h^3*Farray(1,i)*integral(@(E)nrgInt(E,Farray(1,i),Barray(i)),0,Barray(i));
clear nrgInt
end
非常感謝
謝謝,我明白*是爲矩陣,但我認爲我只是通過它的標量。我會繼續討論你的解決方案,看起來更好,但是好奇的是,如果E,F和B是標量,爲什麼它給了我*錯誤。 – daFireman
嗨,這似乎並不奏效,而且似乎與積分函數有關。如果我簡單地定義我的nrgInt並從命令行調用它,它可以正常工作,但如果我嘗試將它集成,它會給我*問題,即使我不傳遞矩陣。我如何整合我的功能? (E,F,B)sqrt(E)* exp(-8 * pi *(m * q)^(0.5)*(BE)/(3 * h * F))/(exp (E /(k * Temp))+ 1);' '積分(@(E)nrgInt(E,0.1,1),0,1) 使用* 時出現錯誤內部矩陣維度必須一致。 – daFireman
Nevermind,解決方案不如我想象的那麼有趣。 Integral必須按照定義使用數組操作,我試圖通過使用*而不是。*和/來代替./來強制執行矩陣操作。 RTFM來拯救。 – daFireman