Использование R, мне интересно, какой лучший способ итеративно оценить функцию нескольких входов и выходов. Я мотивирован участков увиденных на: http://paulbourke.net/fractals/clifford/Ускорение итеративной функции с 2 входами/выходами
Основные уравнения:
x_{n+1} = sin(A* y_n) + C* cos(A* x_n)
y_{n+1} = sin(B* x_n) + D* cos(B* y_n)
И я хочу, чтобы сохранить результаты для каждой итерации. Я предполагаю, что есть гораздо более быстрый способ, чем идти через петлю, описанной в приведенном ниже коде:
#Parameters
A <- -1.4
B <- 1.6
C <- 1.0
D <- 0.7
n_iter <- 10000000
#Initial values
x0 <- 0
y0 <- 0
#function to calculate n+1 points
cliff <- function(x,y){
c(sin(A*y) + C*cos(A*x), sin(B*x) + D*cos(B*y))
}
#matrix to store results
res_mat <- matrix(0,nrow=n_iter,ncol=2)
#recursive loop (definitely not the fastest way to do this?)
for (i in 2:n_iter){
res_mat[i,] <- cliff(res_mat[i-1,1],res_mat[i-1,2])
}
Я полагаю, это на самом деле не должны быть единственной функцией, но 2, которые работают на выходах друг друга , Было бы с благодарностью оценено любое понимание более подходящего способа оценки этих функций. Я осмелюсь сказать, что я бы выиграл от некоторых общих советов по программированию, которые не обязательно были бы специфичными для R.