MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Pattern matching problem

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.


  • Prev by Date: Re: Locator
  • Next by Date: Re: Calculations with Interpolating Functions
  • Previous by thread: Re: Intersection of surfaces
  • Next by thread: Re: Pattern matching problem