re: Question about Cases command
- To: mathgroup at yoda.physics.unc.edu
- Subject: re: Question about Cases command
- From: olness at phyvms.physics.smu.edu (Fredrick Olness (214) 768-2500 or -2495, Fax -4095)
- Date: 1 Jul 1994 18:19:22 -0400
If you are having trouble with pattern matching, a general solution is to use the FullForm command. 9 times out of 10, this will solve the problem. Fred Olness olness at phyvms.physics.smu.edu ========================================================= In[152]:= myterms= {Derivative[1,2][a][x,y], Derivative[1,1][b][x,y]} Out[152]= (1,2) (1,1) {a [x, y], b [x, y]} In[155]:= myterms //FullForm Out[155]//FullForm= List[Derivative[1, 2][a][x, y], Derivative[1, 1][b][x, y]] In[156]:= Cases[test, Derivative[__][a][__]] Out[156]= (1,2) {a [x, y]} ================================================================= ================================================================= From: SMTP%"sherod at gauss.colorado.edu" 28-JUN-1994 17:16:56.69 To: mathgroup at yoda.physics.unc.edu (Mathgroup) CC: Subj: Question about Cases command. 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)