我有一個R函數,我試圖整合,但對於函數參數的某些(極端)值,integrate
返回不正確的解決方案。我相信這個問題可能是integrate
爲這些極值中的一些選擇了不正確的積分點,但首先我會提供證明這個問題。R積分:返回錯誤的解決方案(正在使用錯誤的積分點?)
我希望整合的功能如下。
當我嘗試計算下面,我得到的1正確的解決辦法:
integrate(integrandFunc_F, lower=-Inf, upper=Inf, func_u= 8, func_u_lowerBar= 8,
func_u_upperBar= 8, func_mean_v= 30, func_sigma_v= .1, func_sigma_epsilon= 2,
func_sigma_y= 1, func_gamma= 1/1.1, func_rho= .05)
然而,當我試着計算下面,我得到的0不正確的解決方案:
integrate(integrandFunc_F, lower=-Inf, upper=Inf, func_u= 8, func_u_lowerBar= 8,
func_u_upperBar= 8, func_mean_v= 50, func_sigma_v= .1, func_sigma_epsilon= 2,
func_sigma_y= 1, func_gamma= 1/1.1, func_rho= .05)
上面我表示我相信這個問題可能與選擇積分點有關。如果在上述函數中取消#print(x)
的註釋,則可以看到在func_mean_v = 30
的情況下,integrate
在相對較大/接近30的正交點上穩定。但是,在func_mean_v=50
情況下,在幾次迭代之後,integrate
選擇接近0的正交點。接近0的正交點不適合評估此功能,其中包含正態分佈,其平均值爲func_mean_v.
有關如何解決此問題的任何想法?在某些情況下,爲什麼integrate
會迭代到接近0的正交點?請注意,func_mean_v = 30
和func_mean_v = 50
的選擇無疑是該功能的極限參數,但是我需要能夠正確計算這些情況。
你試過降低容忍整合的融合?對於適用於所有被積函數的自適應數值積分沒有一般規則(它怎麼知道被積函數在-Inf和+ Inf之間的非零值),所以有時候[需要幫助](http:// r .789695.n4.nabble.com /益智與集成的環比無限範圍-td2548525.html)。 – baptiste 2014-08-30 18:09:18
我試着降低'rel.tol'並增加'subdivisions'的數量。也沒有解決這個問題。有沒有辦法提供'集成'與一組正交點開始?對於正態分佈,不應該很難知道被積函數在哪裏非零。 – Adam 2014-08-30 18:31:08
如果你知道被積函數在哪裏非零,那麼對整合變量進行移位和可選的重定標就是邁向imho的方法;它將極大地幫助「整合」。 – baptiste 2014-08-30 18:37:55