[英]Integration with matlab
我想解決這個問題:
替代文字http://img265.imageshack.us/img265/6598/greenshot20100727091025.png
我不想使用“ int”,我想使用“ quad”家族(quad,dblquad,triplequad),但我不能。 你能幫助我嗎?
我認為您真正的問題比這個瑣碎的問題還要復雜。 最好的解決方案就是使用符號積分。 為什么數值積分困難?
一維的數值積分通常需要大約100個函數求值。 (確切的數字將非常取決於所需的精度,限制等。)這使得通常需要100 ^ 2 = 10000個函數估計量的2d積分。 因此,自適應5維積分將需要進行100 ^ 5 = 1e10個函數評估。 (這只是一個非常粗略的數量級估計。)我的意思是,您根本不想這樣做!
最好是減少復雜性問題。 如果您的積分是可分離的(這也是可分離的),那就這樣做! 將5維問題簡化為多個1維問題。
此外,在許多情況下,我看到人們希望對高斯PDF進行數值積分。 看到使用調用erf或erfc並結合轉換很容易解決此問題。 關鍵是,在許多情況下,都定義了特殊功能來大大降低問題的復雜性。
我還要補充一點,在許多情況下,解決數學難題的關鍵是使用數學將問題簡化為簡單的問題。 如果您能找到一種方法來稍微降低問題的范圍,那么它將變得更加容易處理。
您顯示的積分是
可解析地解決:總是盡您所能進行解析
?等於數字:應從數值計算中刪除常數表達式
在MATLAB中很難計算(或非常正確)。
您可以使用cumtrapz
單獨對每個變量進行積分,然后將trapz
稱為最終積分。 請記住,對於比線性函數簡單求和還要復雜的任何問題,這都會使錯誤消失。
如果您可以訪問,Mathematica更適合nD集成。
Matlab可以進行符號集成
>> x = sym('x'); y = sym('y'); z = sym('z'); u = sym('u'); v = sym('v');
>> int(int(int(int(int(x+y+z+u+v,1,5),-2,3),0,1),-1,1),0,1)
ans =
180
只是注意到您要進行數字積分,而不是符號積分
如果您查看dblquad和Triplequad的來源
>> edit dblquad
您會看到他們只是稱呼較低的版本。 您應該可以添加四元組和五元組(或遞歸n元)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.