Могу ли я определить две рекурсивные функции одновременно в R? - PullRequest
0 голосов
/ 04 мая 2020

Мне нужно, чтобы функции f и g с известными начальными значениями для f (1) и g (1) и их последующие значения были получены через итерацию в соответствии с: f (n + 1) = f (n) \ cos (g (n)) - g (n) \ sin (g (n)) и g (n + 1) = f (n) \ cos (g (n)) + g (n) \ sin (g (n) )). Я пытался решить это в R, используя:

N=100 
for(n in 1:N)
{
 f=function(n)
 g=function(n)
if(n == 1) {
f(1)=0.8
g(1)=0.6} else {
  f(n)=f(n-1)cos(g(n-1))-g(n-1)sin(g(n-1)
   g(n)=f(n-1)cos(g(n-1))+g(n-1)sin(g(n-1))
 }

Однако это не работает. Есть предложения?

1 Ответ

2 голосов
/ 04 мая 2020

Я не уверен, что следующее отвечает на вопрос. Но вот некоторые ошибки в коде:

  1. Функции определены в for l oop.
  2. Ни одна из двух функций никогда не вызывается.

Мой лучший выбор -

f <- function(n){
  if(n == 1){
    0.8
  }else{
    f(n-1)*cos(g(n-1))-g(n-1)*sin(g(n-1))
  }
}
g <- function(n){
  if(n == 1) {
    0.6
  } else {
    f(n-1)*cos(g(n-1))+g(n-1)*sin(g(n-1))
  }
}

N <- 10
y <- numeric(N)
for(n in 1:N) {
  y[n] <- f(n)
  cat(y[n], "\n")
}
y
...