Suppose I have a simple function that returns a matrix, such as: test <- function(x){ return(matrix(c(x,x^2,x^3,x^4),2,2)) } so that test returns: [ x x^3 ] [ x^2 x^4 ] Is it possible for me to get the derivative of an expression such as: c(1,0) %*% test() %*% c(0,1) The vectors are used just to "index" the matrix. I don't want a value, but the expression to work with (in that case, the expected expression would be 3*x^2)... Tried functions D and deriv in many ways, but no success. I will be grateful if anyone can help.
Suppose I have a simple function that returns a matrix, such as: test <- function(x){ return(matrix(c(x,x^2,x^3,x^4),2,2)) } so that test returns: [ x x^3 ] [ x^2 x^4 ] Is it possible for me to get the derivative of an expression such as: c(1,0) %*% test() %*% c(0,1) The vectors are used just to "index" the matrix. I don't want a value, but the expression to work with (in that case, the expected expression would be 3*x^2)... Tried functions D and deriv in many ways, but no success. I will be grateful if anyone can help.
On 7/4/05, Gabriel Rodrigues Alves Margarido <gramarga at carpa.ciagri.usp.br> wrote:> Suppose I have a simple function that returns a matrix, such as: > > test <- function(x){ return(matrix(c(x,x^2,x^3,x^4),2,2)) } > > so that test returns: > [ x x^3 ] > [ x^2 x^4 ] > > Is it possible for me to get the derivative of an expression such as: > > c(1,0) %*% test() %*% c(0,1) > > The vectors are used just to "index" the matrix. > I don't want a value, but the expression to work with (in that case, > the expected expression would be 3*x^2)... > > Tried functions D and deriv in many ways, but no success. > I will be grateful if anyone can help. >Note sure if this is good enough but in the following you can replace 1,2 in the third line with other indices to extract out any matrix component and differentiate it. e is a list that contains the 4 expressions and idx[i,j] gives the index in e that contains the i,j-th expression: e <- lapply(1:4, function(i) bquote(x^.(i))) idx <- matrix(1:4, 2) e12 <- e[idx[1,2]][[1]] D(e12, "x")