簡體   English   中英

與Matlab集成

[英]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並結合轉換很容易解決此問題。 關鍵是,在許多情況下,都定義了特殊功能來大大降低問題的復雜性。

我還要補充一點,在許多情況下,解決數學難題的關鍵是使用數學將問題簡化為簡單的問題。 如果您能找到一種方法來稍微降低問題的范圍,那么它將變得更加容易處理。

您顯示的積分是

  1. 可解析地解決:總是盡您所能進行解析

  2. ?等於數字:應從數值計算中刪除常數表達式

  3. 在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.

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