library(poisson)
  1. Смоделируем пуассоновский процесс с интенсивностью \(\lambda=2.\) Запишем функцию, моделирующую траектории для данного процесса:
pois_gen <- function(lambda, time = 1000) {
  return (
    cumsum ( rpois(time, lambda) )
    )
}

Теперь смоделируем 10 различных траекторий данного процесса:

time = 100
lambda = 2
graphics <- replicate(10, pois_gen(lambda, time))
matplot(graphics, type = "s", col = 1:10, lwd = 1, lty = 1, xlab = ("t"), ylab = ("N(t)"))

  1. Смоделируем винеровский процесс со следующими параметрами: \(h = 0.01, T = 10.\) Заишем функцию, генерирующую траектории данного процесса:
wiener_gen <- function(h, T) {
  return(
    cumsum ( rnorm(T/h, mean = 0,  sd = h) )
  )
}

Теперь смоделируем 10 различных траекторий данного процесса:

h = 0.01
T = 10
graphics <- replicate(10, wiener_gen(h, T))
 matplot(graphics, type = "l", col = 1:10, lwd = 1, lty = 1, xlim = c(0, T), ylim = c(-0.1,0.1),xlab = ("t"), ylab = ("W(t)"))

3.Смоделируем геометрическое броуновское движение, которое задается следующим образом: \[dX_{t} = a X_{t} dt + s X_{t} dW_{t}, \] где \(W_{t}\) - винеровский процесс. Его решение есть \(X_{t} = X_{0}exp((a-\frac{s^2}{2})t+sW_{t})\): Для заданного начального условия и параметров зададим наш процесс:

s = 0.2
a = 0.15
x_0 = 1
func <- function(h, T, a, s) {
  return (
    x_0*exp ( (a - s^2/2)*seq(0,T,T/h) + s*wiener_gen(h,T) )
  )
}

Смоделируем 20 траекторий данного процесса:

h = 0.01
T = 10
graphics3 <- replicate(20, func(h, T, a, s))
matplot(graphics3, type = "l", col = 1:20, lwd = 1.5, lty = 1)

Построим для них 95% доверительную область:

graphics3 <- cbind(graphics3, 
              apply(graphics3, 1, quantile, 0.975),
              apply(graphics3, 1, quantile, 0.025)
              )
matplot(graphics3, type = "l", col = c(rep("grey",20),"red","red"), lwd = c(rep(.8,20),2.5,2.5), lty = 1)