Двумерные графики для линейных конгруэнтных генераторов

#python #r #matlab #matplotlib #matlab-figure

#python #r #matlab #matplotlib #matlab-рисунок

Вопрос:

https://i.stack.imgur.com/9FAez.jpg

 par(mfrow=c(1,2))
##General code for an lcg
lcg <- function(a, c, p, run.length, seed){
    x <- rep(0, run.length)
    x[1] <- seed
    for(i in 1:(run.length -1)){
        x[i 1] <- (a*x[i]  c) %% p
    }
    U <- x/p ##scale x to U(0,1)
    return(list(x=x, U=U))
}
z <- lcg(3,0,31,30,2)
z
x1 <- z$U[1:29]
x2 <- z$U[2:30]
plot(x1,x2, main="LCG[3,31]", xlab="U[i]",
   ylab="U[i-1]",col='blue', pch=1)
 

Я хочу иметь перекрывающийся график с красными линиями с отрицательным наклоном, как показано на изображении. Как я могу изменить этот код, чтобы добавить красные линии с отрицательными наклонами?

Комментарии:

1. Не могли бы вы уточнить, хотите ли вы использовать R-решение (я предполагаю, что это так, основываясь на (предыдущем) названии и указанном вами коде, но у вас есть теги [python] [matlab] [matplotlib] [matlab-figure] … ???)

Ответ №1:

Я вычислил требуемый перехват (ы) и наклон методом проб и ошибок: не думал о проблеме достаточно тщательно, чтобы вывести их из первых принципов… Я не думаю, что они совпадают со строками в вашем примере, но, по-видимому, вы можете подумать немного сложнее и понять, каким должен быть наклон и последовательность перехватов … ?

Это работает:

 avec <- seq(0,1.2,by=0.1)
for (a in avec) {
   abline(a, b=-0.1, col=2)
}
 

Комментарии:

1. Спасибо тебе, Бен.

2. @PKB Если это решит вашу проблему, подумайте о том, чтобы пометить ее как «принятую» (с помощью флажка рядом с ответом).