r - R 中是否有 randn('state',100) 的等效版本,就像在 MATLAB 上一样?我的输出变化太大,因为它在 R 上不存在
问题描述
我正在为 sdes 的 euler maruyama 近似写一个脚本。但是,该代码有效,因为存在“rnorm”,我希望我的输出会有所不同。在 MATLAB 中,有 randn('state',100) 可以帮助解决这个问题。有没有办法稳定 R 上的变量生成器?
我试过使用'varbvs'包,但同样的问题发生了,因为它也产生了正态分布的随机变量。
(MATLAB)
function [St]=euler(N)
randn('state',100) % set the state of randn
T = 5;
dt = T/N;
gamma = 0.67/2;
mu = 0.1;
sigma = 1.2;
X= 7.753;
dW = zeros(1,N); % preallocate arrays ...
W = zeros(1,N); % for efficiency
dW(1) = sqrt(dt)*normrnd(0,1);
(右)
library(optimbase) #Package to create matrix of zeros
#M points-->(M-1) intervals. let N=(M-1)
N <- 1250
T <- 5
dt <- T/N
gamma <- 0.67/2
mu <- 0.1
sigma <- 1.2
S0 <- 7.753
dW <- zeros(1,N)
W <- zeros(1,N)
St <- zeros(1,N)
dW[1,1] <- sqrt(dt)*rnorm(1,0,1) #Generate random Z from normal.
W[1,1] <- dW[1,1]
for (j in 2:N){
dW[1,j] <- sqrt(dt)*rnorm(1,0,1)
W[1,j] <- W[1,j-1] + dW[1,j]
}
St<-zeros(1,N)
St[1,1]<- S0
for (j in 2:N){
St[1,j] <- (St[1,j-1])+mu*(St[1,j-1])*dt+
sigma*(St[1,j-1])^gamma*(W[1,j]-W[1,j-1])
}
Strike=St[1,N]
print(Strike)
t<-seq(0,5,length.out = N)
plot(t,St,type="l",col="blue",main="Euler Maruyama Approximation for CEV")
我希望罢工=19.4258
解决方案
推荐阅读
- ruby-on-rails - 在演示者文件中使用 i18n 的相对根目录
- vba - Access 2016 VBA无法设置按钮单击表单以将多值字段写入第二个表
- java - xpath 属性减去或删除/取消选择
- swift - 多图像 UICollectionView 单元格放置
- node.js - 升级到 Babel 7 后出错:需要 Babel "^7.0.0-0",但加载了 "6.26.3"
- spring - 如何保存与用户关联的订单详细信息以及如何根据 url 参数返回与用户详细信息关联的订单数据?
- ckeditor - 实例化 CKEditor4 实例时,如何将自定义值传递给 CKFinder3?
- python - X射线衍射成像算法和寻峰代码
- wpf - 如何在 WPF 中的对象列表中绑定集合
- f# - 缩进对错误消息(UserState)有最终决定权 - FParsec