Pattern matching problem
- To: mathgroup at smc.vnet.net
- Subject: [mg88516] Pattern matching problem
- From: "Charlie Brummitt" <cbrummitt at wisc.edu>
- Date: Wed, 7 May 2008 07:07:52 -0400 (EDT)
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
- Follow-Ups:
- Re: Pattern matching problem
- From: "W_Craig Carter" <ccarter@mit.edu>
- Re: Pattern matching problem