Re: Problem with Patterns and Integrate

*To*: mathgroup at smc.vnet.net*Subject*: [mg123252] Re: Problem with Patterns and Integrate*From*: Bill Rowe <readnews at sbcglobal.net>*Date*: Tue, 29 Nov 2011 07:04:40 -0500 (EST)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com

On 11/28/11 at 5:53 AM, ejmcinerney at gmail.com (Jack McInerney) wrote: >There is something about using patterns that I don't understand, and >am hoping someone can shed some light. Here is an example of my >problem. Say I have a function f[x] and I take the derivative of >it. I can then integrate it and get f[x] back: >In[167]:= expr = D[ f[x], x ] Out[167]= f=E2=80=B2[x] >In[168]:= Integrate[expr, x] Out[168]= f[x] >If I use a ReplaceAll and a pattern to do the integration, the >Integrate function treats f'[x] as a constant and returns the wrong >answer: >In[169]:= expr /. func_ -> Integrate[func,x] Out[169]= x >f=E2=80=B2[x] >Any thoughts as to what I am doing wrong? Yes, for this application you need to use RuleDelayed (:>) instead of what you did. The key is when the rule is evaluated. When you use -> the Integrate[func,x] is evaluated immediately to func x and the replacement rule is equivalent to func_->func x. Instead, if you use RuleDelayed (:>) evaluation of Integrate[func,x] takes place after f'[x] is substituted for func and you get the result you were looking for.