Bonjour à tous, c'est ma premiere sur ce forum alors j'espère que mon code va bien s'afficher. Mon problème concerne cette fonction rvol, alors qu'elle devrait me retourner un vecteur x, elle m'affiche toutes les valeurs dans la console. Je dois ensuite me servir des résultats de cette fonction dans une autre et mon prof exige que rvol retourne un vecteur. Merci pour votre aide


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
f <- function(x,a,b,c,d,alpha,sigma){
 
  c*exp(-x/d)*(1 - alpha*cos(2*pi*(x-a)/sigma))
}
 
M <- function(c,d, alpha){
  c*(1+alpha)*d
}
 
 
rvol <- function(n, params){
 
    f_bis <- function(x){
          exp(-x/params$d)*(1 - params$alpha*cos(2*pi*(x-params$a)/params$sigma))
  }
 
     c <- 1/integrate(f_bis, params$a, params$b)$value
 
 
     x <- rep(0, n)
    for(i in 1:length(x)){
     repeat{
        v<- -(params$d)*log(1-runif(1, 1-exp(-(1/params$d)*params$a), 1-exp(-(1/params$d)*params$b)))
        w <- runif(1, 0, M(c, params$d, params$alpha))
        if (w <= f(v, params$a, params$b, c, params$d ,params$alpha, params$sigma)/dexp(v, 1/params$d)) 
           {break}
      }
    x[i] <- v
 
  }
 
return(x)
 
}
 
rvol(10000, list(a = 1, b = 8, d = 3, alpha = 0.3, sigma = 3 ) )