3

Let's say that I have

x^2+x

Is there a way to map $x$ to the first derivative of a function and $x^2$ to the second derivative of the same function? According to http://reference.wolfram.com/language/ref/Slot.html, I know that I can change

x /. x -> D[#, {y, 1}] &[a[y, z]]
x^2 /. x^2 -> D[#, {y, 2}] &[a[y, z]]

to yield the first and second derivatives of $a(y,z)$, respectively. I also know that I can use

x^2+x/. x^2 -> D[#, {y, 2}] &[a[y, z]] /. x -> D[#, {y, 1}] &[a[y, z]]

but if I have say, a polynomial of degree 70, manually telling Mathematica to do this is highly inefficient. Is there a method, such that, for $x^n$, I can tell Mathematica to map $x^n$ to the $n^{th}$ derivative of a function?

J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
user85503
  • 992
  • 1
  • 9
  • 22

2 Answers2

8

Rule-replacement with x^n_. :> Derivative[n,0][a][y,z] (as done in Kuba's answer) has two drawbacks: if your polynomial has a constant term, then it will not be replaced by the zero-th derivative a[y,z], and if your polynomial is not expanded the result is incorrect. Namely, (1+x)(2+x) becomes (1+a'[y,z])(2+a'[y,z]) rather than 2a[y,z]+3a'[y,z]+a''[y,z] (here I use ' to denote derivative with respect to the first variable).

One option is to multiply by x and Expand:

{x, x^2, x^2 + x, (1 + x) (2 + x)} //
  (Expand[x #] /. x^n_. :> Derivative[n-1, 0][a][y, z] &)

(*{Derivative[1, 0][a][y, z],
   Derivative[2, 0][a][y, z],
   Derivative[1, 0][a][y, z] + Derivative[2, 0][a][y, z],
   2*a[y, z] + 3*Derivative[1, 0][a][y, z] + Derivative[2, 0][a][y, z]}*)

Another option which I find more natural is to get the CoefficientList, then rebuild the expression. But this does not thread nicely over lists of polynomials (here I used x^2+x).

Total@MapIndexed[#1 Derivative[#2[[1]] - 1, 0][a][y, z] &,
  CoefficientList[x + x^2, x]]
Bruno Le Floch
  • 1,959
  • 10
  • 23
4
{x, x^2, x^2 + x} /. x^n_. :> Derivative[n, 0][a][y, z]
Kuba
  • 136,707
  • 13
  • 279
  • 740