Foro de debate

Consulta para mejorar un ciclo for

Consulta para mejorar un ciclo for

de Mauricio Alberini -
Número de respuestas: 1

Estimados quería saber si alguien me puede sugerir como mejorar el siguiente codigo:

Tengo la siguiente ecuación:

r = s * (1/fw - tw) * (1 - tw / tp) * ( A * (rd - 36))

y calculo las derivadas parciales  respecto de:  s; fw; tw; tp; A; rd;

cada una estas variables tiene 20 valores diferententes y lo que tengo que determinar es todos los valores posibles de las derivadas parciales. Lo que hago es primero calcular las derivas parciales y luego mediante 6 ciclos for calculo todos los valores posibles de las derivadas parciales. Esto insume mucho tiempo, queria saber si se puede mejorar la forma de calculo. 

Muchas gracias

En respuesta a Mauricio Alberini

Re: Consulta para mejorar un ciclo for

de Manuel Muñoz Márquez -

Buenas:

Una forma de hacerlo es construir una matriz colocando en cada fila un conjunto de valores para los parámetros, definir la función r y usando la función apply aplicársela a cada fila.

La matriz de valores la puedes construir usando la función rep. Te muestro un ejemplo con 5 valores y tres variables

x<-1:5
y<-11:15
z<-21:25
m<-matrix(0, ncol = 3, nrow = 125)
m[,1] <- rep(x, 9)
m[,2] <- rep(rep(y, 3), each = 3)
m[,3] <- rep(z, each = 9)

La matriz m tiene en cada fila una de las 125 combinaciones posibles de los cinco valores de x, y y z.

Basta con que ejecutar

apply(m, 1, FUN=f)

siendo f la función que hace el cálculo para cada fila.

Un saludo.