Re: Pattern matching problem

*To*: mathgroup at smc.vnet.net*Subject*: [mg88539] Re: [mg88516] Pattern matching problem*From*: "W_Craig Carter" <ccarter at mit.edu>*Date*: Thu, 8 May 2008 04:11:28 -0400 (EDT)*References*: <200805071107.HAA15035@smc.vnet.net>

Hello Charlie, I have an inelegant solution. I'll put it in steps so that you can see what it is doing: (*representative data*) poly =1 + u[x] + Sum[Product[ D[u[x], {x, RandomInteger[{1, 6}]}], {i, 1, RandomInteger[{1, 4}]}], {4}] InputForm[poly] (*Take each termp in poly and turn it into a list, @@@ applies list a first level*) temp = Flatten[Apply[List, Flatten[List @@@ poly]]] (*Replace each derivative it its order, so that powers are counted*) temp2 = temp /. Derivative[n_][u][x] :> n (*take the product of all the integers*) Times @@ Cases[temp2, _Integer] You could put it all together and "make it look" more elegant and (even) more unreadable... Craig On Wed, May 7, 2008 at 7:07 AM, Charlie Brummitt <cbrummitt at wisc.edu> wrote: > Hi all, > Here is my problem: Given a polynomial in the variables u[x,t] and its > spatial derivatives (for example, the polynomial could be 1 + u + > u_xx*u_xxx^2), count the number of spatial derivatives with multiplicity. > That is, after writing the above polynomial as > > > 1 + u + u_xx * u_xxx * u_xxx > > the output should be 2 + 3 + 3 (basically, you count the number of x's). > > I have tried implementing this using a pattern matching approach. Here is > what I tried: > > f[equation_ ] := Sum[ k * j * Count[ equation , D[ u[x, t], {x, j} ] ^ k , > {0, \infinity} ], {j, 1, 50}, {k, 1, 50}] > > This fails to work on, for example, the input u_xx^2, because it outputs 6 > when it should output 4. This is because the u_xx is counted (+2 to the > sum), and the u_xx^2 is counted (+4 to the sum). This is because the u_xx is > nested inside the Power[ , 2] in its representation in Mathematica and so > it gets counted too many times in my formula. I can't seem to figure out a > way to use the "provided that" operator /; to make this formula work. > > I've also tried doing some replacement methods, but to no success. > > Thanks for any help you may be able to provide. > > -Charlie > > > -- W. Craig Carter

**References**:**Pattern matching problem***From:*"Charlie Brummitt" <cbrummitt@wisc.edu>