Re: Coefficient[ ] quirks

*To*: mathgroup at smc.vnet.net*Subject*: [mg93325] Re: [mg93310] Coefficient[ ] quirks*From*: Andrzej Kozlowski <akoz at mimuw.edu.pl>*Date*: Tue, 4 Nov 2008 06:15:54 -0500 (EST)*References*: <200811031028.FAA05229@smc.vnet.net> <6BD8F5AE-B50C-4C87-B939-35B7C2163844@mimuw.edu.pl>

On 3 Nov 2008, at 20:34, Andrzej Kozlowski wrote: > > On 3 Nov 2008, at 19:28, AES wrote: > >> If you have a function f = a + b (z-c)^2 and want to extract out the >> powers of the "form" (z-c), you can use either Coefficient[f, (z- >> c), n] >> or Coefficient[f, (z-c)^2, n]. The first one gives you {a, 0, b} for >> the first three coefficients, while the second one gives you {a, b, >> 0}, >> both of these of course being entirely correct. >> >> Suppose however that you add a denominator to the function, e.g. >> f = (a + b (z-c)^2 )/d. Then the first approach (looking for >> powers of >> (z-c)) no longer gives you the information you're seeking, but >> instead >> stuffs the entire f into the first position, i.e. {f, 0, 0} -- >> which at >> least doesn't throw away any information about f. >> >> The second approach (looking for powers of (z-c)^2) still works fine >> even with a denominator added, however, and gives you {a/d, b/d, 0}. >> >> If out of restless curiosity, you then expand out the square of (z-c) >> into either of the forms f = (a + b (z^2 - 2 c z + c^2) or >> f = (a + b z^2 - 2 b c z + + b c^2), with or without the denominator, >> but still seek powers of (z-c) (which are no longer explicitly >> present), >> the first approach continues to give you {f, 0, 0}, which it can be >> argued is entirely correct, since there is no longer any explicit >> power >> of (z-c) in f. >> >> The second approach, however, now gives you either {a, 0, 0} or {a/ >> d, 0, >> 0}, which in a certain sense is arguably correct for the first or n=0 >> term -- any powers of z or c have apparently been chopped off, even >> though you asked Coefficient to look only for powers of (z-c). >> >> The only problem is that they seem to have been thrown out totally, >> beyond recovery. You could write >> >> f = Sum[Coefficient[f, (z-c), n] * (z-c)^n, {n,0,Infinity}] >> >> for f with or without denominator, and never get all your function >> back. >> >> It all seems rather quirky . . . >> > > Because it is not the way to do this at all... > > There are a number possible approaches but only one that is > completely reliable (and very standard in this sort of situation, > not just in Mathematica) is : > > f = (a + b (z^2 - 2 c z + c^2)) > > SeriesCoefficient[f + O[z, c]^10, 2] > b > > This will work no matter how you express your f. > > Andrzej Kozlowski > Actually, there is a slightly better way, based on the same idea. Above I expanded f as a Taylor series about c wit remainder of order 10, which I chose essentially arbitrarily , making sure that it is large enough. But this is not needed, Mathematica is cleverer than that. All you need is SeriesCoefficient[f, {z, c, 2}] b In other words, one does not need to expand f to some fixed order, it is enough to tell Mathematica that we want the Coefficient of the term of degree 2 and Mathematica will do the expanding itself. This is much more convenient and, as far as I know, the best way to deal with this problem. Andrzej Kozlowski

**References**:**Coefficient[ ] quirks***From:*AES <siegman@stanford.edu>