r - 构建从 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。
有什么建议么?
解决方案
只有一个问题 - 在B
. 相反,你想要
B <- W1 - t * W1[n + 1]
因为索引n + 1
(即选择对应于 t = 1 的最后一个元素)指的W1
是向量而不是过程。那么确实
B[1]
# [1] 0
B[1001]
# [1] 0
正如预期的那样。还要注意,虽然不建议使用t
和T
作为变量名,因为它们都已经扮演了重要的角色;见?t
和?T
。
推荐阅读
- lua - Table Lua 检查名称
- database - 在 SAS 中导入许多文件 .txt
- java - 具有相同命名空间的两个 WSDL 的 WSImport 绑定
- jquery - Select2 - 从多个选择框中删除一个选项
- php - 在 Laravel 中使用 foreach:删除相同的值
- python - Tensorflow`语法错误:pywrap_tensorflow`安装后
- web - 如何将 MariaDB 连接到 Node.JS 和 Express.JS?
- vue.js - 由于 css 中的 svg,无法使用 vue cli 3 模板构建项目
- reactjs - create-react-app 无法解析模块
- loops - 如何打破 Go 中的嵌套循环?