Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: Pattern with powers
Replies: 7   Last Post: Aug 8, 2013 12:02 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Dr. Wolfgang Hintze

Posts: 195
Registered: 12/8/04
Re: Pattern with powers
Posted: Aug 1, 2013 12:11 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Am Mittwoch, 31. Juli 2013 10:48:43 UTC+2 schrieb Bill Rowe:
> On 7/30/13 at 6:40 AM, weh@snafu.de (Dr. Wolfgang Hintze) wrote:
>
>
>

> >I must admit that I am an absolute beginner in patterns, as I cannot
>
> >cope with a little problem with patterns consisting of powers of
>
> >variables x and y.
>
>
>

> >Specifically, I would like to select from a list all terms of the
>
> >form
>
>
>

> >c x^u y^v (numerical coefficient c times x to the power u times y to
>
> >the power v)
>
>
>

> >where u and v are allowed to take the values 0 and 1.
>
>
>

> >How can I do this using Cases?
>
>
>

> >I have already accomplished the first non trivial step using _.
>
> >(blank followed by a dot) in order to get first powers of the
>
> >variables:
>
>
>

> >ls = List@@Expand[5 (x + y)^3] {5*x^3, 15*x^2*y, 15*x*y^2, 5*y^3}
>
>
>

> >Example 1 a = 2; Cases[ls, (_.)*x^(u_.)*y^(v_.) /; u >= a && v < a]
>
> >gives {15*x^2*y} but misses the term 5*x^3
>
>
>
> It is not necessary to convert the polynomial to a List since
>
> Cases can be applied directly to the polynomial. That is:
>
>
>
> In[1]:= ls = Expand[5 (x + y)^3];
>
> a = 2; Cases[ls, (_.)*x^(u_.)*y^(v_.) /; u >= a && v < a]
>
>
>
> Out[2]= {15*x^2*y}
>
>
>
> yields the same result as you get below after making ls a List
>
>
>
> Why use Cases? It appears you want an output with with all terms
>
> of the form a x^u y^v with v either 1 or 0. Although this isn't
>
> what you state initially, it does seem to accurately describe
>
> what you indicate is your desired result. If this is what you
>
> want then how about
>
>
>
> In[3]:= CoefficientList[ls, y][[;; 2]] {1, y}
>
>
>
> Out[3]= {5*x^3, 15*x^2*y}


Bill,

many thanks for your reply.

My example was just an easy way to generate a list of powers in two varibales, and sometimes I prefer lists over polynomials in order not to lose terms which might vanish because of sums.

I have just described again in detail to Alexei what I'm looking for, so I please refer to that message.

Your proposed function lookes interesting and is new to me in this form.
I'm not sure if it can be parametrized to take into account the inequalities u>=a and v<a for the powers x^u y^v.

Best regards,
Wolfgang

u and v are not 0 or 1 but they are integers >=0. What I want is a pattern that works also for the values 0 and 1 of u and v. As I saind, I have no difficulties with values >=2.

Best regards,
Wolfgang





Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.