How can I translate a MathWorld statement into Mathematica syntax?
Waiting for a more elegant solution, you can try this:
Creates a differential operator from a polynomial in x:
DiffOp[poly_] /; PolynomialQ[poly, x] := Block[{Dop},
Dop[c_, {ord_}] := c*(D[#, {x, ord - 1}] &);
Return[Total[MapIndexed[Dop, CoefficientList[poly, x]]]];
];
For instance:
op = DiffOp[ChebyshevT[4, x]]
FullSimplify[op[BesselI[0, x]]]
BesselI[4, x]
Update: maybe slightly better (and without Return[], see Carl Woll remark):
DiffOp[poly_, x_, f_] /; PolynomialQ[poly, x] :=
CoefficientList[poly, x].Table[D[f, {x, i}], {i, 0, Exponent[poly, x] }]
For instance:
DiffOp[ChebyshevT[4, x], x, f[x]]
prints: $$ 8 f^{(4)}(x)-8 f''(x)+f(x) $$
and
FullSimplify[DiffOp[ChebyshevT[4, x], x, BesselI[0,x]]]
returns
Bessel[4,x]
Assuming the idea is to translate the derivative operator (which must make this Q&A a duplicate, no?), this was what I came up with...
ClearAll[CircleDot];
(* assumes op is a polynomial with constant coefficients and the variable in f is x *)
CircleDot[op_, f_] /; PolynomialQ[op, Derivative[1]] && FreeQ[op, x] :=
With[{c = CoefficientList[op, Derivative[1]]},
c.NestList[D[#, x] &, f, Length@c - 1]
];
ChebyshevT[3, Derivative[1]] \[CircleDot] BesselI[0, x] // Expand
(* BesselI[3, x] *)
You can make use of my DifferentialOperator
paclet to do this. Install with:
PacletInstall["https://github.com/carlwoll/DifferentialOperator/releases/download/0.1/DifferentialOperator-0.0.1.paclet"]
and load with:
<<DifferentialOperator`
Then (I had to use an image since the partial derivative in the input doesn't translate well to MSE):