-2

I want this code to work but length of (t) and the length of w(t) differ so it's blocking all my code. Can I know how both can have the same length.

    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")

Thank you for your time

alison monroe
  • 21
  • 1
  • 1
  • 7

1 Answers1

0

Using w= function(t){c(cumsum(v))} so that all variables have 900 elements. Br has only one dimension, so you have to use Br[i]. This works:

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")

enter image description here

Pierre Lapointe
  • 16,017
  • 2
  • 43
  • 56