Re: Selecting Element from List via Pattern Matching
- To: mathgroup at smc.vnet.net
- Subject: [mg89409] Re: [mg89396] Selecting Element from List via Pattern Matching
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 9 Jun 2008 02:25:52 -0400 (EDT)
- References: <200806080632.CAA02645@smc.vnet.net> <CC89ADB4-D93E-4280-8D6F-2133700137C6@mimuw.edu.pl> <DB78D68A-54D4-4457-ABEF-5A3CD4C8A7AC@mac.com>
Well, it seems to me very strange that one would voluntarily choose to do so much unnecessary work, beginning with converting the original expression into a list, but there is no accounting for tastes... Even if you really love pattern matching there is no need to convert the original expression to a list - you can simply do: Cases[Expand[Sum[Subscript[a, i], {i, 1, 5}]^3], _.*Subscript[a, 2]^2] {3 Subscript[a, 1] SubsuperscriptBox[ a , 2 , 2 ], 3 SubsuperscriptBox[ a , 2 , 2 ] Subscript[a, 3], 3 SubsuperscriptBox[ a , 2 , 2 ] Subscript[a, 4], 3 SubsuperscriptBox[ a , 2 , 2 ] Subscript[a, 5]} More importantly, note that your method will not work if you change your expression only slightly. Try t = Apply[List, Subscript[a, 1]^2 + Expand[(Sum[Subscript[a, i], {i, 1, 5}])^3]]; Your method gives: Select[t, MemberQ[#1, Subscript[a, 1]^2] & ] {3*Subscript[a, 1]^2*Subscript[a, 2], 3*Subscript[a, 1]^2*Subscript[a, 3], 3*Subscript[a, 1]^2*Subscript[a, 4], 3*Subscript[a, 1]^2*Subscript[a, 5]} But the correct answer is: Cases[t, (_.)*Subscript[a, 1]^2] {Subscript[a, 1]^2, 3*Subscript[a, 1]^2* Subscript[a, 2], 3*Subscript[a, 1]^2* Subscript[a, 3], 3*Subscript[a, 1]^2* Subscript[a, 4], 3*Subscript[a, 1]^2* Subscript[a, 5]} Andrzej On 8 Jun 2008, at 20:32, Immanuel Bloch wrote: > Hello Andrzej, > > Select[t, MemberQ[#, Power[Subscript[a, 1], 2]] &] > > seems to have solved my problem. > > Thanks! > > Immanuel > > On Jun 8, 2008, at 9:16 , Andrzej Kozlowski wrote: > >> On 8 Jun 2008, at 15:32, immanuel.bloch at googlemail.com wrote: >> >>> Hello, >>> >>> I am trying to extract from a Power Series all elements with a >>> certain exponent, e.g. >>> let us say I have generated a list via >>> >>> t = Apply[List, Expand[(Sum[Subscript[a, i], {i, 1, 5}])^3]] >>> >>> How can I then extract all terms with e.g. a_2^2 in it or any other >>> exponent? >>> >>> I have tried something like >>> >>> Cases[t, Times[_, Power[Subscript[a,2],2]]] >>> >>> but this somehow only works with the exponent n=1 and no others... >>> >>> Does anybody know a solution to this pattern matching problem? >>> >>> Thanks! >>> Immanuel >>> >> >> But what's wrong with simply doing this: >> >> Expand[Coefficient[Sum[Subscript[a, i], {i, 1, 5}]^3, Subscript[a, >> 2]^2]* >> Subscript[a, 2]^2] >> >> 3*Subscript[a, 1]*Subscript[a, 2]^2 + >> 3*Subscript[a, 3]*Subscript[a, 2]^2 + >> 3*Subscript[a, 4]*Subscript[a, 2]^2 + >> 3*Subscript[a, 5]*Subscript[a, 2]^2 >> >> ??? >> >> >> Andrzej Kozlowski >> >
- References:
- Selecting Element from List via Pattern Matching
- From: immanuel.bloch@googlemail.com
- Selecting Element from List via Pattern Matching