一般來說,當你在進行數值計算和積分時,比如說在MATLAB中,我只是爲界限選擇一個大數,還是有辦法告訴MATLAB「採取極限?」。數值積分
我假設你只是使用大數字,因爲不同的機器將能夠處理不同數量的數字。
我只是想知道如果他們是一種方法來提高我的代碼。我正在通過蒙特卡羅進行大量期望值計算,並且經常使用梯形方法來檢查我自己的自由度是否足夠小。
一般來說,當你在進行數值計算和積分時,比如說在MATLAB中,我只是爲界限選擇一個大數,還是有辦法告訴MATLAB「採取極限?」。數值積分
我假設你只是使用大數字,因爲不同的機器將能夠處理不同數量的數字。
我只是想知道如果他們是一種方法來提高我的代碼。我正在通過蒙特卡羅進行大量期望值計算,並且經常使用梯形方法來檢查我自己的自由度是否足夠小。
嚴格地說,不可能將數值積分評估爲無窮大。在大多數情況下,如果所討論的積分是有限的,則可以簡單地在相當大的範圍內進行積分。爲了收斂在一個穩定的值,正常誤差的積分必須小於10西格馬 - 這個值,無論好壞,因爲等於,因爲你將得到評估相同的整體積分到無窮遠。
這很大程度上取決於您想要集成的功能類型。如果它是「光滑的」(沒有跳躍 - 最好不在任何派生物中,但它變得越來越不重要)和有限的,你有兩個主要選擇(限制我自己到最簡單的方法): 1.如果它是週期性的,這裏的意思是:你可以把左右兩端放在一起,也沒有價值跳躍(和衍生物...):在整個區間內均勻分佈你的點,只取樣函數值來得到估計的平均值,由間隔的長度來獲得你的積分。 2.如果不是週期性的:使用Legendre集成。蒙特卡羅幾乎總是一個糟糕的方法:它對於(機器)精度的進展非常緩慢:對於任何額外的重要數字,您需要應用100倍以上的點數! 以上兩種方法對於週期性和非週期性的「良好」(平滑等)函數給出了公平的結果,只有非常少量的採樣點,然後向更加精確的方向快速前進:更通常2個點中的1個通常增加幾個數字到你的精確度!這遠遠超過了當你想用更多樣本點來應用下一個努力時,你必須拋棄先前結果的所有部分的負擔:你用一個新的新點替換前一個點,而在蒙特卡洛你可以只需簡單地爲現有集合添加點,然後完善結果。