n <- 35
F <- rep(0,n)
N <- rep(0,n)
F[1] <- 1
F[2] <- 1/3
for (k in 3:n) F[k] <- (10/3)*F[k-1]- F[k-2]
F
N <- seq(from=1, to=n, by=1)
Если вы не знакомы с решением уравнения линейной рекурсии, это вообще не имеет значения. В любом случае мы можем получить результат F [n] = 3^(1-n) из решения уравнения рекуррентности, как указано выше, т. Е. F [n] = (10/3) F [n-1] -F [n- 2], f 1 = 1, f 2 = 1/3.Рекуррентное соотношение для уменьшающейся экспоненты имеет возрастающие значения
По этой причине при использовании
plot (N, F,type="l")
можно ожидать, что график "3^(1-N)", как известно, в качестве показательной функции.
Однако выход отличается от ожидаемого. По сравнению с выходом по
curve(3^(1-x),0,35, add=TRUE, col='blue')
Как вы знаете, 3^(1-х) является монотонное уменьшение функции. Несмотря на ожидания, мы получаем только график, который увеличивается при позднем расчете.
F[18]>F[19]
TRUE
F[19]>F[20]
FALSE
Что случилось? В обычном смысле, всякий пункт «F [n]> F [n + 1]» должен быть ИСТИНА.
Если я увеличить число, которое выделяется на «N» до 50 с 35,
n <- 50
plot (N, F,type="l")
форма графа становятся полностью странно.
Я предполагаю, что причина на основе «точкой двойной точности с плавающей двоичной» (http://en.wikipedia.org/wiki/Double_precision). На мой взгляд, R выделяет число, которое меньше 0,0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 * 2^(- 52) (имеется 52 нуля), поскольку более большое число обратно пропорционально рекуррентному отношению.
Однако я не знаю, истинно ли мое предположение. Даже если мое предположение верно, то почему R выделяет очень малое число как более большое число обратно, ТОЛЬКО в «рекуррентном отношении» не для общей функции, такой как 3^(n-1)? Кроме того, в случае «n = 50» почему R полностью меняет форму графика?
Не могли бы вы мне помочь?
Заранее спасибо.
Обратите внимание, что это не является хорошей идеей для определения объекта с именем 'F'. Если не определено иначе, 'F' означает' FALSE'. –
Спасибо за указание. В следующий раз я клянусь быть осторожным. – Choijaeyoung