簡體   English   中英

如何編寫一個包含數值積分的函數?

[英]How to write a function which includes numerical integration?

我需要在許多方面計算積分。 所以,

f = f(r,theta,k,phi); 
q =integral2(f,0,1,0,2*pi,'AbsTol',0,'RelTol',1e-10); % integration should be by k and phi

我希望q是r和theta的函數,我可以隨時調用它來計算給定r和theta點的積分。 我怎樣才能做到這一點? 問題是我不能使用不確定的@ function或matlabFunction()方法,因為似乎首先完成了集成,並且當Matlab檢測到未定義所有參數時,會帶來一些錯誤。

這就是您要查找的全部內容(我仍然不知道f返回什么)嗎?:

r = ...     % Define
theta = ... % Define
g = @(k,phi)f(r,theta,k,phi); % g is now a function of k and phi
q = integral2(g,0,1,0,2*pi,'AbsTol',0,'RelTol',1e-10);

這將創建一個匿名函數g ,其中rtheta的值被捕獲為參數,而ktheta仍然是參數。 這個概念在計算機科學中被稱為閉包

如果要將整個事情都變成rtheta的函數並返回q ,則可以創建以下匿名函數:

q = @(r,theta)integral2(@(k,phi)f(r,theta,k,phi),0,1,0,2*pi,'AbsTol',0,'RelTol',1e-10);

您可以使用q(r,theta)進行調用。 當然,您同樣可以只使用常規函數(通常更快,並且使您的代碼更易於他人理解)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM