Re: Question about Cases command.
- To: mathgroup at yoda.physics.unc.edu
- Subject: Re: Question about Cases command.
- From: rubin at msu.edu (Paul A. Rubin)
- Date: Wed, 29 Jun 94 13:07:38 EDT
>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?
Mma read the pattern as an object with head Derivative, followed by a
sequence of objects inside brackets. In other words, only "Derivative" was
associated with the initial blank (_). The first term in the list *almost*
matches this (but for the [x, y]).
>Try:
>
>In[5]:= Cases[myterms, _Derivative[__][_]]
>
>Out[5]= {}
Similar problem.
>
>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.
>
_Derivative matches Derivative[1, 2]. The first [__] matches either [a] or
[b]. The second [__] matches [x, y]. You could get by with a single _ in
the first set of brackets (matching a or b), but not in the second.
> 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)
>
Going back to your original attempt, these work:
In[]:= Cases[myterms, _Derivative[a][__] ]
In[]:= Cases[myterms, Derivative[__][a][__] ]
Paul
**************************************************************************
* Paul A. Rubin Phone: (517) 336-3509 *
* Department of Management Fax: (517) 336-1111 *
* Eli Broad Graduate School of Management Net: RUBIN at MSU.EDU *
* Michigan State University *
* East Lansing, MI 48824-1122 (USA) *
**************************************************************************
Mathematicians are like Frenchmen: whenever you say something to them,
they translate it into their own language, and at once it is something
entirely different. J. W. v. GOETHE