Re: Selecting Element from List via Pattern Matching
- To: mathgroup at smc.vnet.net
- Subject: [mg89413] Re: [mg89396] Selecting Element from List via Pattern Matching
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 9 Jun 2008 02:26:39 -0400 (EDT)
- References: <200806080632.CAA02645@smc.vnet.net> <CC89ADB4-D93E-4280-8D6F-2133700137C6@mimuw.edu.pl> <DB78D68A-54D4-4457-ABEF-5A3CD4C8A7AC@mac.com> <1F81B1AE-6C9B-478A-9BC5-BCD2D2172F14@mimuw.edu.pl>
Something weird happened to the output that I pasted into my message below. Should have been: Cases[Expand[Sum[Subscript[a, i], {i, 1, 5}]^3], (_.)*Subscript[a, 2]^2] {3*Subscript[a, 1]*Subscript[a, 2]^2, 3*Subscript[a, 2]^2*Subscript[a, 3], 3*Subscript[a, 2]^2*Subscript[a, 4], 3*Subscript[a, 2]^2*Subscript[a, 5]} Andrzej Kozlowski On 8 Jun 2008, at 20:46, Andrzej Kozlowski wrote: > 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