matlab中帶參數定積分的求解

1、首先,如果要對quad函數傳遞附加參數(Extra Parameters),應該先搞清楚quad函數的調用格式:

1
q = quad(fun,a,b,tol,trace)

其中,第4、5個參數分別是tol和trace,不能想當然。你如果要傳遞附加參數,應該從第6個參數開始——儘管文檔中並沒有提及,但quad函數的確可以接受附加參數。類似地函數還有很多,例如fsolve、fmincon等函數的函數

 

在傳遞附加參數時,需要把前面的參數補齊,即使你不知道也不關心那些參數到底是幹什麼用的。幸運的是,這類函數絕大多數(如果不是所有的話)都支持用空數組作爲佔位符,例如:

 
q = quad(fun,a,b,[],[],r)

這樣,你也就可以不用管tol、trace到底該怎樣取值了。

 

2、其次,quad函數並不支持一次性對多個附加參數求解。解決的辦法一是用循環,另一是用arrayfun函數(其實後者本質上也是循環,只不過寫法上簡單些)。

f=@(t,r) (142884+1.21*r.*r-831.6*r.*cos(2*t)).^(1/2); 
r=0:0.1:75; 
q=arrayfun(@(R)quad(f,0,90,[],[],R),r); 
plot(r,q)


順便提醒一句,求積分的計算量不小,r的間距沒必要取那麼小(取5得到的結果就挺平滑)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章