Re: Extract coefficients of a trig polynomial
- To: mathgroup at smc.vnet.net
- Subject: [mg126160] Re: Extract coefficients of a trig polynomial
- From: Sam Takoy <sam.takoy at yahoo.com>
- Date: Sun, 22 Apr 2012 06:04:57 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <7BB0E96E72E84E41B24A1FF8ED13F5E6299A6B5B61@IE2RD2XVS581.red002.local>
- Reply-to: Sam Takoy <sam.takoy at yahoo.com>
Thank you, that's very nice. ________________________________ From: Alexei Boulbitch <Alexei.Boulbitch at iee.lu> To: "mathgroup at smc.vnet.net" <mathgroup at smc.vnet.net> Cc: "sam.takoy at yahoo.com" <sam.takoy at yahoo.com> Sent: Friday, April 20, 2012 4:59 AM Subject: [mg126160] Re: Extract coefficients of a trig polynomial Hi, Suppose I have an expression that is a trigonometric polynomial in theta. Is there a way to neatly pick out the coefficients of the polynomial. I find that FourierCoefficient takes quite a bit of time, probably because it does a lot of integrations. My coefficients are very complicated expressions but do not depend on theta. Many thanks in advance, Sam Hi, This is your expression: expr = (1/1536) (1536 BesselJ[0, \[Rho]] - 72 \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] - 80 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] - 384 \[Epsilon] \[Rho] BesselJ[1, \[Rho]] - 144 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] - 80 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] + 10 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]] - 96 \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] Cos[2 \[Theta]] - 120 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] Cos[2 \[Theta]] - 384 \[Epsilon] \[Rho] BesselJ[1, \[Rho]] Cos[2 \[Theta]] - 192 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] Cos[2 \[Theta]] - 120 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] Cos[2 \[Theta]] + 15 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]] Cos[2 \[Theta]] - 24 \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] Cos[4 \[Theta]] - 48 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] Cos[4 \[Theta]] - 48 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] Cos[4 \[Theta]] - 48 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] Cos[4 \[Theta]] + 6 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]] Cos[4 \[Theta]] - 8 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] Cos[6 \[Theta]] - 8 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] Cos[ 6 \[Theta]] + \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]] Cos[ 6 \[Theta]]); One can expand trigonometric expressions and collect the results in polynomial of Cos[\[Theta]]^n and Sin[\[Theta]]^n up to n=6. expr2 = TrigExpand[expr]; expr3 = Collect[expr2, _Sin && _Cos] BesselJ[0, \[Rho]] - 3/64 \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] - 5/96 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] - 1/4 \[Epsilon] \[Rho] BesselJ[1, \[Rho]] - 3/32 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] - 5/96 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] + 5/768 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]] - 1/16 \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] Cos[\[Theta]]^2 - 5/64 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] Cos[\[Theta]]^2 - 1/4 \[Epsilon] \[Rho] BesselJ[1, \[Rho]] Cos[\[Theta]]^2 - 1/8 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] Cos[\[Theta]]^2 - 5/64 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] Cos[\[Theta]]^2 + 5/512 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]] Cos[\[Theta]]^2 - 1/64 \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] Cos[\[Theta]]^4 - 1/32 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] Cos[\[Theta]]^4 - 1/32 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] Cos[\[Theta]]^4 - 1/32 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] Cos[\[Theta]]^4 + 1/256 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]] Cos[\[Theta]]^4 - 1/192 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] Cos[\[Theta]]^6 - 1/192 \[Epsilon]^3 \[Rho] BesselJ[ 1, \[Rho]] Cos[\[Theta]]^6 + (\[Epsilon]^3 \[Rho]^3 BesselJ[ 1, \[Rho]] Cos[\[Theta]]^6)/1536 + 1/16 \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] Sin[\[Theta]]^2 + 5/64 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] Sin[\[Theta]]^2 + 1/4 \[Epsilon] \[Rho] BesselJ[1, \[Rho]] Sin[\[Theta]]^2 + 1/8 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] Sin[\[Theta]]^2 + 5/64 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] Sin[\[Theta]]^2 - 5/512 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]] Sin[\[Theta]]^2 + 3/32 \[Epsilon]^2 \[Rho]^2 BesselJ[ 0, \[Rho]] Cos[\[Theta]]^2 Sin[\[Theta]]^2 + 3/16 \[Epsilon]^3 \[Rho]^2 BesselJ[ 0, \[Rho]] Cos[\[Theta]]^2 Sin[\[Theta]]^2 + 3/16 \[Epsilon]^2 \[Rho] BesselJ[ 1, \[Rho]] Cos[\[Theta]]^2 Sin[\[Theta]]^2 + 3/16 \[Epsilon]^3 \[Rho] BesselJ[ 1, \[Rho]] Cos[\[Theta]]^2 Sin[\[Theta]]^2 - 3/128 \[Epsilon]^3 \[Rho]^3 BesselJ[ 1, \[Rho]] Cos[\[Theta]]^2 Sin[\[Theta]]^2 + 5/64 \[Epsilon]^3 \[Rho]^2 BesselJ[ 0, \[Rho]] Cos[\[Theta]]^4 Sin[\[Theta]]^2 + 5/64 \[Epsilon]^3 \[Rho] BesselJ[ 1, \[Rho]] Cos[\[Theta]]^4 Sin[\[Theta]]^2 - 5/512 \[Epsilon]^3 \[Rho]^3 BesselJ[ 1, \[Rho]] Cos[\[Theta]]^4 Sin[\[Theta]]^2 - 1/64 \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] Sin[\[Theta]]^4 - 1/32 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] Sin[\[Theta]]^4 - 1/32 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] Sin[\[Theta]]^4 - 1/32 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] Sin[\[Theta]]^4 + 1/256 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]] Sin[\[Theta]]^4 - 5/64 \[Epsilon]^3 \[Rho]^2 BesselJ[ 0, \[Rho]] Cos[\[Theta]]^2 Sin[\[Theta]]^4 - 5/64 \[Epsilon]^3 \[Rho] BesselJ[ 1, \[Rho]] Cos[\[Theta]]^2 Sin[\[Theta]]^4 + 5/512 \[Epsilon]^3 \[Rho]^3 BesselJ[ 1, \[Rho]] Cos[\[Theta]]^2 Sin[\[Theta]]^4 + 1/192 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] Sin[\[Theta]]^6 + 1/192 \[Epsilon]^3 \[Rho] BesselJ[ 1, \[Rho]] Sin[\[Theta]]^6 - (\[Epsilon]^3 \[Rho]^3 BesselJ[ 1, \[Rho]] Sin[\[Theta]]^6)/1536 Now you can find the coefficients at any thinkable power of Cos[\[Theta]]^n*Sin[\[Theta]]^m. For example, here is a list of coefficients at Cos[\[Theta]]^n (n=0,1,...6): expr4 = Coefficient[expr3, Cos[\[Theta]], #] & /@ Table[i, {i, 0, 6}] /. a_*Sin[\[Theta]]^n_ -> 0 {BesselJ[0, \[Rho]] - 3/64 \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] - 5/96 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] - 1/4 \[Epsilon] \[Rho] BesselJ[1, \[Rho]] - 3/32 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] - 5/96 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] + 5/768 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]], 0, -(1/ 16) \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] - 5/64 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] - 1/4 \[Epsilon] \[Rho] BesselJ[1, \[Rho]] - 1/8 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] - 5/64 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] + 5/512 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]], 0, -(1/ 64) \[Epsilon]^2 \[Rho]^2 BesselJ[0, \[Rho]] - 1/32 \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] - 1/32 \[Epsilon]^2 \[Rho] BesselJ[1, \[Rho]] - 1/32 \[Epsilon]^3 \[Rho] BesselJ[1, \[Rho]] + 1/256 \[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]], 0, -(1/ 192) \[Epsilon]^3 \[Rho]^2 BesselJ[0, \[Rho]] - 1/192 \[Epsilon]^3 \[Rho] BesselJ[ 1, \[Rho]] + (\[Epsilon]^3 \[Rho]^3 BesselJ[1, \[Rho]])/1536} Analogously you can find other terms. Alternatively you could establish a CoefficientList. Here below I build this list and simplify each its term: coeffLst = Simplify[#, {\[Epsilon] > 0, \[Rho] > 0}] & /@ CoefficientList[expr3, {Cos[\[Theta]], Sin[\[Theta]]}] {{1/768 (-4 (-192 + 9 \[Epsilon]^2 \[Rho]^2 + 10 \[Epsilon]^3 \[Rho]^2) BesselJ[ 0, \[Rho]] + \[Epsilon] \[Rho] (-192 - 72 \[Epsilon] + 5 \[Epsilon]^2 (-8 + \[Rho]^2)) BesselJ[1, \[Rho]]), 0, 1/512 \[Epsilon] \[Rho] (8 \[Epsilon] (4 + 5 \[Epsilon]) \[Rho] BesselJ[ 0, \[Rho]] + (128 + 64 \[Epsilon] - 5 \[Epsilon]^2 (-8 + \[Rho]^2)) BesselJ[1, \[Rho]]), 0, 1/256 \[Epsilon]^2 \[Rho] (-4 (\[Rho] + 2 \[Epsilon] \[Rho]) BesselJ[ 0, \[Rho]] + (-8 + \[Epsilon] (-8 + \[Rho]^2)) BesselJ[ 1, \[Rho]]), 0, (\[Epsilon]^3 \[Rho] (8 \[Rho] BesselJ[ 0, \[Rho]] - (-8 + \[Rho]^2) BesselJ[1, \[Rho]]))/