我希望这段代码能够工作,但是(t)的长度和w(t)的长度不同,所以它阻止了我的所有代码。我能知道两者的长度是多少吗?
S(t)= S(0)exp(0.06t+0.20w(t)) #(1)
with S(0) =20
w(t) = standard Brownian movement
t <- seq(1,900,length=900) #the path or step=1 for 3 years (1y=300)
length(t)
v = matrix(rnorm(log(20)+0.06*t,sd=sqrt((0.20)^(2)*t)),nrow=5)
z = matrix(NA, ncol=900, nrow=5)
w = function(t)
{c(0,cumsum(v))}
length(w(t))
Bn <-log(20)+ 0.06*t +0.20*w(t)
Br <- log(Bn)
plot(t,Br,type="l",xlab="Temps")
for (i in 1:5) # I need to draw 5 path of the function(1)
{z[i,] = c(0,cumsum(Br[i,]))}
dim(z)
u= apply(z,2,mean) #mean of the 5 path
plot(t,z[1,],xlab="temps",type="l",ylab="Brownian Movement")
for (i in 1:5){lines(t,z[i,])}
lines(t,u,lwd=2,col="red")
感谢您的时间
答案 0 :(得分:0)
使用w= function(t){c(cumsum(v))}
使所有变量都有900个元素。 Br
只有一个维度,因此您必须使用Br[i]
。这有效:
t <- seq(1,900,length=900) #the path or step=1 for 3 years (1y=300)
length(t)
v = matrix(rnorm(log(20)+0.06*t,sd=sqrt((0.20)^(2)*t)),nrow=5)
z = matrix(NA, ncol=900, nrow=5)
w = function(t)
{c(cumsum(v))}
length(w(t))
Bn <-log(20)+ 0.06*t +0.20*w(t)
Br <- log(Bn)
length(Bn)
length(Br)
plot(t,Br,type="l",xlab="Temps")
for (i in 1:5) # I need to draw 5 path of the function(1)
{z[i,] = c(cumsum(Br[i]))}
dim(z)
u= apply(z,2,mean) #mean of the 5 path
plot(t,z[1,],xlab="temps",type="l",ylab="Brownian Movement")
for (i in 1:5){lines(t,z[i,])}
lines(t,u,lwd=2,col="red")