如何解决 R 中的递归关系

How to solve recurrence relations in R

我很清楚 R 是为统计而不是递归关系设计的,但是如果能够做到这一点就太好了。

我正在学习数学的高等应用,我可以选择使用 excel 或 R 来进行考试。我在剩下的考试中使用 R,所以我希望能够使用它来解决递归关系,以避免我不得不在两者之间切换。

下面是一些示例问题:

在所有这些问题中,我都试图找到它们的交汇点。我假设这将需要一个递归函数,但我不太确定从那里去哪里。

如有任何帮助,我们将不胜感激。

这类问题可以用 R 中的一个简单循环来处理。例如,第一个问题可以通过编写以下函数来解决:

waste_simulation <- function(initial_value)
{
   units <-initial_value
   units <- c(units, units[1] * 0.6 + 50)
   
   while(units[length(units)] != units[length(units) - 1]) {
      units <- c(units, units[length(units)] * 0.6 + 50)
   }
   return(units)
}

这允许您测试每个初始起始值:

waste_simulation(100)
#>  [1] 100.0000 110.0000 116.0000 119.6000 121.7600 123.0560 123.8336 124.3002
#>  [9] 124.5801 124.7481 124.8488 124.9093 124.9456 124.9673 124.9804 124.9882
#> [17] 124.9929 124.9958 124.9975 124.9985 124.9991 124.9995 124.9997 124.9998
#> [25] 124.9999 124.9999 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [33] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [41] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [49] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [57] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [65] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
 
waste_simulation(200)
#>  [1] 200.0000 170.0000 152.0000 141.2000 134.7200 130.8320 128.4992 127.0995
#>  [9] 126.2597 125.7558 125.4535 125.2721 125.1633 125.0980 125.0588 125.0353
#> [17] 125.0212 125.0127 125.0076 125.0046 125.0027 125.0016 125.0010 125.0006
#> [25] 125.0004 125.0002 125.0001 125.0001 125.0000 125.0000 125.0000 125.0000
#> [33] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [41] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [49] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [57] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [65] 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000 125.0000
#> [73] 125.0000
 
waste_simulation(125)
#> [1] 125 125

我们可以看到,在所有 3 种情况下,该值都收敛到 125(即 50/0.4)。

reprex package (v2.0.0)

创建于 2021-11-02