我正在使用gaussquad包以數值方式評估一些積分。R中高斯積分的問題
我想在點X1,...,XN然後構建和W1 * F(X1)通過評估函數˚F(x)的工作的ghermite.h.quadrature命令+ ... + WN * F(XN),其中X1 ,...,XN 和 W1 ,...,WN 是由用戶提供的節點和權重。
因此我認爲命令
ghermite.h.quadrature(f,rule)
sum(sapply(rule$x,f)*rule$w)
會產生相同的輸出,用於任何功能˚F,其中「」規則「」是存儲在標記的一個列中的節點數據幀「」 X「」以及標記爲「w」的列中的權重。對於許多函數來說,輸出結果確實是相同的,但對於某些函數,我會得到非常不同的結果。有人能幫我理解這種差異嗎?
謝謝!
代碼:
n.quad = 50
rule = hermite.h.quadrature.rules(n.quad)[[n.quad]]
f <- function(z){
f1 <- function(x,y) pnorm(x+y)
f2 <- function(y) ghermite.h.quadrature(f1,rule,y = y)
g <- function(x,y) x/(1+y)/f2(y)*pnorm(x+y)
h <- function(y) ghermite.h.quadrature(g,rule,y=y)
h(z)
}
ghermite.h.quadrature(f,rule)
sum(sapply(rule$x,f)*rule$w)
我們展示的代碼 –
@SeverinPappadeux好吧,我加了 – David
確認值確實不同,0.34 vs 0.203 –