Помните, что вы можете сгенерировать последовательность из n
чисел в R с помощью 1:n
, и вы можете получить любое число по модулю 2, выполнив x %% 2
. Таким образом, 1:n %% 2
дает повторяющуюся последовательность 1 0 1 0 1 0
. Следовательно, умножение на 2 и вычитание 1 дает повторяющуюся последовательность 1 -1 1 -1 1 -1...
. Поэтому вы можете использовать (2*(1:n %% 2) - 1)
в качестве числителей.
Аналогично, ваши знаменатели - это просто последовательность нечетных чисел, задаваемых 1:n * 2 - 1
Это означает, что вы можете написать простое арифметическое значение c функция для суммирования первых n членов этого расширения следующим образом:
pi_fracts <- function(n) sum(4*(2*(1:n %% 2) - 1)/(1:n * 2 - 1))
Таким образом, вы можете сделать
pi_fracts(7)
#> [1] 3.283738
или даже
pi_fracts(1000000)
#> [1] 3.141592