统计计算学习【随机模拟_Chapter3-3.5随机数的应用】

R提供了多种分布的随机数函数,如runif(n)产生n个标准均匀分布随机数, rnorm(n)产生n个标准正态分布随机数。

随机数在计算积分上的应用

(1)若要计算积分
θ = ∫ a b g ( x ) d x \theta = \int_{a}^{b}g(x) dx θ=abg(x)dx
可以利用变换 y = x − a b − a y = \frac{x-a}{b-a} y=baxa, d y = d x b − a dy=\frac{dx}{b-a} dy=badx得到:
θ = ∫ 0 1 g ( a + ( b − a ) y ) ( b − a ) d y = ∫ 0 1 h ( y ) d y \theta = \int_{0}^{1} g(a+(b-a)y)(b-a)dy = \int_{0}^{1} h(y)dy θ=01g(a+(ba)y)(ba)dy=01h(y)dy

其中, h ( y ) = g ( a + ( b − a ) y ) ( b − a ) . h(y)= g(a+(b-a)y)(b-a). h(y)=g(a+(ba)y)(ba). 因此,我们连续地产生随机数并将h在这些随机数上的取值取平均,就能得到近似值 θ \theta θ.

例3.1:

估计积分 : ∫ − 2 2 e x + x 2 d x . \int_{-2}^{2}e ^{x + x ^ 2} dx. 22ex+x2dx. (1.1)

#实现计算上述积分的R代码:
f1 <- function(n,a,b,g){
	x <- runif(n)
	sum((b - a) * g(a + (b-a) * x)) / n
}

#估计积分(1.1)
#******方法1************
#先定义函数g(x)
g <- function(x)exp(x + x^2)
#调用函数f1
f1(100,-2,2,g)

#******方法2************
#直接使用R的内嵌积分函数(绝对误差小于0.00062)
integrate(g,-2,2)

在这里插入图片描述
(2)若要计算积分
θ = ∫ 0 ∞ g ( x ) d x \theta = \int_{0}^{\infty }g(x) dx θ=0g(x)dx
可以利用变换 y = 1 x + 1 y = \frac{1}{x+1} y=x+11, d y = − d x ( x + 1 ) 2 dy=-\frac{dx}{(x+1)^2} dy=(x+1)2dx 得到:
θ = ∫ 0 1 g ( 1 y − 1 ) y 2 d y = ∫ 0 1 h ( y ) d y \theta = \int_{0}^{1} \frac{g(\frac{1}{y}-1)}{y^2}dy = \int_{0}^{1} h(y)dy θ=01y2g(y11)dy=01h(y)dy

其中, h ( y ) = g ( 1 y − 1 ) y 2 . h(y)= \frac{g(\frac{1}{y}-1)}{y^2}. h(y)=y2g(y11). 因此,我们连续地产生随机数并将h在这些随机数上的取值取平均,就能得到近似值 θ \theta θ.

(3)计算多元积分:
在这里插入图片描述

例3.2 代码:
X <- runif(100)
Y <- runif(100)
f <- function(X,y)exp((x+y)^2)
sum(f(X,Y)) / 100

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值