рд╕рдЯреАрдХ рдЧрдгрдирд╛рдУрдВ рдореЗрдВ рдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ

рд╕рдордп-рд╕рдордп рдкрд░, рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рдореЗрдВ рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрдм рдмрд┐рдЯ рд╕рдЯреАрдХрддрд╛ float64/ int64рдЖрд╡рд╢реНрдпрдХ рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ рдЙрдкрдХрд░рдг рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рднрд╛рдЧ рд░рд╣рд╛ рд╣реИ? рдПрдХ рд╡рд┐рдХрд▓реНрдк рднреАред


рдпрд╛ рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рджрд┐рдЦрд╛рдПрдВ рдФрд░ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдордирдорд╛рдиреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЬреАрдПрдирдпреВ рдПрдордкреАрдПрдлрдЖрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдмрдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░реИрдкрд░ рд╣реИрдВред рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЕрдзреНрдпрдпрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреА рдХрд┐рд╕рд╛рди рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИред


рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХреНрд╖рд┐рддрд┐рдЬ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред R рдкрд░ рдпрд╣ рдПрдХ Rmpfr рдЖрд╡рд░рдг рд╣реИ ред рдиреАрдЪреЗ рдореИрдВ рд╕реНрдХреВрд▓реА рдмрдЪреНрдЪреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдПрдирдбреАрдП рдХреЗ рддрд╣рдд рдбрд┐рдЬрд╛рдЗрди рдбреЗрдЯрд╛ рдХреЛ рди рдЫреВрдПрдВ) рдФрд░ рдХрдИ рдХреНрд▓рд╛рд╕рд┐рдХ рд░реЗрдХ рдкрд░ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВ, рдЬрд┐рди рдкрд░ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдпрд╣ рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХрд╛ рдПрдХ рд╕рд┐рд▓рд╕рд┐рд▓рд╛ рд╣реИ ред


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд╡рд╛рдВрдЯрдо рдореЗрдВ 2019/2020 рд╕реНрдХреВрд▓ рд╡рд░реНрд╖ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдирдВрдмрд░ 39 рд▓реЗрдВ :
рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ x рдФрд░ y рдРрд╕реА рд╣реИрдВ рдХрд┐ рдмрд╛рдПрдВ рдЕрдВрд╢ рдХреЗ рдиреАрдЪреЗ рдЕрд╕рдорд╛рдирддрд╛ рджрд╛рдИрдВ рдУрд░ рд╕реЗ рдмрдбрд╝реА рд╣реИред рдХреМрди рд╕рд╛ рдЕрдзрд┐рдХ рд╣реИ: x рдпрд╛ y?


рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдВрд╢


рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ (рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрд╕рдорд╛рдирддрд╛) рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред


рд╣рдо рднрд┐рдиреНрдиреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХреЛрдб рдмрдирд╛рддреЗ рд╣реИрдВред рдЖрдк рддреБрд░рдВрдд рдЕрдВрддрд┐рдо рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдбреЗрдореЛрд╕реНрдХреЛрдкреАрди рдХреЗ рд▓рд┐рдП mpfr, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЫреЛрдЯреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред


рд╣рдо рдорд╛рдирдХ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ
library(tidyverse)
library(magrittr)
options(digits=15)

frec <- function(stopval, n, x){
  res <- ifelse(n == stopval, 
                (stopval - 1) + stopval/(stopval + 1 + x), 
                (n - 1 ) + n / (frec(stopval, n + 2, x))
  )
  res
}

frec_wrap <- function(stopval, x){
  res <- frec(stopval = stopval, n = 1, x = x)
  print(glue::glue("{stopval}: {res}"))
  res
}

sol_df <- tibble(stopval = seq(1, 29, by = 2)) %>%
  mutate(val1 = purrr::map_dbl(stopval, frec_wrap, x = 1),
         val2 = purrr::map_dbl(stopval, frec_wrap, x = 5),
         delta = val1 - val2)

рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рдмреБрд░реА рдХрд┐рд╕реНрдордд рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 14 рд╡реЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ (рд╕реНрдЯреЙрдк рдирдВрдмрд░ = 29) рдкрд░, рд╕рдЯреАрдХрддрд╛ рд╣рдореЗрдВ рднрд┐рдиреНрдирддрд╛ рдХреЗ рд╕рд╛рде рднреЗрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдФрд░ рдЖрдкрдХреЛ 2019 рддрдХ рд╕рд╣реА рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛!


рдЕрд╕рдлрд▓рддрд╛ рез


? , Rmfpr. тАФ float64 mpfr .


library(tidyverse)
library(magrittr)
library(Rmpfr)
frec2 <- function(stopval, n, x){
  if(n == stopval){
    (stopval - 1) + stopval/(stopval + 1 + x)} else {
      (n - 1 ) + n / (frec2(stopval, n + 2, x))
    }
}
frec2_wrap <- function(stopval, x){
  .precision <- 5000
  res <- frec2(stopval = mpfr(stopval, .precision), 
               n = mpfr(1, .precision), 
               x = mpfr(x, .precision)
  )
  print(glue::glue("{stopval}: {formatMpfr(res, drop0trailing = TRUE)}"))
  res
}

sol2_df <- tibble(stopval = seq(1, 29, by = 2)) %>%
  mutate(val1 = purrr::map(stopval, frec2_wrap, x = 1),
         val2 = purrr::map(stopval, frec2_wrap, x = 5))

. , tibble . .


рдЕрд╕рдлрд▓рддрд╛ реи


тДЦ1:
tibble , vctrs. ( mpfr S4 ) list-column. - .
, vctrs . , :


for(jj in 1:12){
  #   ,       
  flags_df[[glue("bp_2_{jj}_T")]] <- flags_df[[glue("bp_2_{jj}_in")]] &   flags_df[[glue("flag_2_{jj}")]]
  flags_df[[glue("bp_2_{jj}_F")]] <- flags_df[[glue("bp_2_{jj}_in")]] & ! flags_df[[glue("flag_2_{jj}")]]
}

тДЦ2:
list-column . mpfr list-column.


тДЦ3
rpfm . StackOverflow . . R?


? --! R, Python! !
. RTFM, .


  • тДЦ1. тАФ tibble . data.frame.
  • тДЦ2. rpfm . , . data.frame .
  • тДЦ3. formatMpfr .

.


library(tidyverse)
library(magrittr)
library(Rmpfr)
#    
frec2 <- function(stopval, n, x){
  if(n == stopval){
    (stopval - 1) + stopval/(stopval + 1 + x)} else {
      (n - 1 ) + n / (frec2(stopval, n + 2, x))
    }
}
frec2_wrap <- function(stopval, x){
  # browser()
  .precision <- 5000
  res <- frec2(stopval = mpfr(stopval, .precision), 
               n = mpfr(1, .precision), 
               x = mpfr(x, .precision)
  )
  print(glue::glue("{stopval}: {formatMpfr(res, drop0trailing = TRUE)}"))
  res
}

sol_df <- data.frame(stopval = seq(111, 119, by = 2)) %>%
  #    mpfr   
  mutate(val1 = new("mpfr", unlist(purrr::map(stopval, frec2_wrap, x = 1))),
         val2 = new("mpfr", unlist(purrr::map(stopval, frec2_wrap, x = 5))),
         delta = val1 - val2)

sol_txt_df <- sol_df %$%
  tibble(stopval = stopval,
         val1_txt = formatMpfr(val1, drop0trailing = TRUE),
         val2_txt = formatMpfr(val2, drop0trailing = TRUE),
         delta_txt = formatMpfr(delta, drop0trailing = TRUE))

P.S. . , . , , GNU MPFR.


тАФ ┬л R ?┬╗.


All Articles