首页 > 解决方案 > 构建从 0 到 T 的布朗桥

问题描述

我正在尝试从维纳过程中模拟布朗桥,但在代码中挣扎。

这是我试图以数学形式做的事情:

B(t) = W (t) − tW (1)

重要的是,W(T) = 0,以便过程在 t=0 和 t=T 处都固定在原点(应该以 B(t)=B(T)= 0 开始和结束

这里我定义维纳过程:

n <- 1000 
T <- 1 
delta <- T/n 
t <- seq(0,T, delta) 
set.seed(17) 
W1 <- cumsum(c(0,rnorm(n, 0, 1) * sqrt(delta))) 
plot(t, W1 ,type = 'l',
     xlab = 't', ylab = 'W(t)', xlim = c(0, T + delta))

在这里,我正在尝试构建布朗桥,但得到错误的结果:

B <- W1 - t * W1[T]   # The Brownian bridge from (0,0) to (1,target)
plot(times, B, type="l")

我希望B[1] == B[1001]是 [TRUE] 并且等于 0,但在我的情况下 B[1001] 不等于 0。

有什么建议么?

标签: r

解决方案


只有一个问题 - 在B. 相反,你想要

B <- W1 - t * W1[n + 1]

因为索引n + 1(即选择对应于 t = 1 的最后一个元素)指的W1是向量而不是过程。那么确实

B[1]
# [1] 0
B[1001]
# [1] 0

正如预期的那样。还要注意,虽然不建议使用tT作为变量名,因为它们都已经扮演了重要的角色;见?t?T


推荐阅读