# How to replace all the derivatives of a particular function?

For a given expression, such as:

exp=p[x]+p'[x]+p''[x]...Derivative[n][p][x]


I want to replace all the derivatives of p[x] to a constant 1. But the following rule:

rule=Derivative[_][p][x]:>1


works for the derivatives when n>=1, except p[x]. That is:

p'[x]/.rule
(* output: 1 *)

p''[x]/.rule
(* output: 1 *)

p[x]/.rule
(* output: p[x] *)


I wonder what is the correct rule to replace all the Derivative[n][p][x] to 1, including p[x].

Thank you.

• It's not elegant, but works: rule={Derivative[_][p][x] :> 1, p[x] :> 1} Apr 26, 2019 at 15:56
• @Oscillon there are almost 15 rules... so this solution will double the input work. Oh... we do need some solution to reduce our labour. Apr 26, 2019 at 15:59
• Try rule = p[x] | Derivative[_][p][x] :> 1. Apr 26, 2019 at 16:55
• If you need it to be more general (i.e. you need to set every derivative to 1), then you can use a variation of @Somos's suggestion: rule = _[x] | Derivative[_][_][x] :> 1 or something there-abouts. Apr 26, 2019 at 17:01
• Duplicate of mathematica.stackexchange.com/q/194099 ? Apr 26, 2019 at 17:15

Given such an expression:

exp = Sum[Derivative[i][p][x], {i, 0, 7}]


A nice way would be to replace it by a pure function:

exp /. {p :> (1 &)}
(* 1 *)


which replaces all derivatives and the original function.

• I believe the desired output of replacing all the derivatives should be 8, not 1. Here's a cute way to use a pure function: exp /. p -> (Exp[# - x] &). Works only if the argument to the derivatives of p is x`. Aug 10, 2022 at 14:15