Re: Question about Cases command.
- To: mathgroup at yoda.physics.unc.edu (Mathgroup)
- Subject: Re: Question about Cases command.
- From: leszek (Leszek Sczaniecki)
- Date: Tue, 28 Jun 1994 14:30:47 -0500
> From: Scott Herod <sherod at gauss.colorado.edu> > Subject: Question about Cases command. > To: mathgroup at yoda.physics.unc.edu (Mathgroup) > Date: Mon, 27 Jun 1994 14:58:29 -0600 (MDT) > > I am trying to grab a list of the derivatives of functions that > appears in a large list of differential equations. I have been using > the Cases command to do this and have a question about some curious > behavior. > > Consider the list of two derivatives: > > In[1]:= {Derivative[1,2][a][x,y], Derivative[1,1][b][x,y]} > > 3 2 > d a d b > Out[1]= {------, ------} > 1 2 1 1 > dx dy dx dy > > > I would like to select the derivatives of "a" . First let's > check the Head of the terms: > > In[2]:= myterms = %; > > In[3]:= Map[Head, myterms] > > (1,2) (1,1) > Out[3]= {a , b } > > Now try to uses Cases: > > In[4]:= Cases[myterms,_Derivative[__][a]] > > Out[4]= {} > > Why didn't it select the "a" term out? Try: > > In[5]:= Cases[myterms, _Derivative[__][_]] > > Out[5]= {} > > In[6]:= Cases[myterms, _Derivative[__][__]] > > 3 2 > d a d b > Out[6]= {------, ------} > 1 2 1 1 > dx dy dx dy > > Ok, now why must I use two underscores in this form? ( In[6] ) > The "a" and the "b" are single elements. > > BTW. Here is something which works. > > In[7]:= derivdepfn[deriv_] := Head[deriv][[1]]; > > In[9]:= Select[myterms, (derivdepfn[#1] === a) &] > > 3 > d a > Out[9]= {------} > 1 2 > dx dy > > > > Scott A. Herod > Program in Applied Mathematics > University of Colorado, Boulder > (sherod at newton.colorado.edu) > In[5]:= expr = {Derivative[1,2][a][x,y], Derivative[1,1][b][x,y]} Out[5]= (1,2) (1,1) {a [x, y], b [x, y]} In[25]:= Cases[expr, Derivative[__][a][__]] Out[25]= (1,2) {a [x, y]} You may consider to use Select In[41]:= expr1 = {Sqrt[Derivative[1,2][a][x,y]], Derivative[1,1][b][x,y]} Out[41]= (1,2) (1,1) {Sqrt[a [x, y]], b [x, y]} In[42]:= Select[expr1, !FreeQ[#, Derivative[__][a]]&] Out[42]= (1,2) {Sqrt[a [x, y]]} I hope it helps, Leszek