4
$\begingroup$

I'm trying to make a function that will take any truncated power series I give it, strip away all the even degree terms, then change the sign of the coefficients of every other term. So that we have a polynomial with only odd degree terms with alternating sign.

f = 2^x;
ff = Normal[Series[f, {x, 0, 10}]];
ffOdd = FromCoefficientRules[
    Pick[
        CoefficientRules[ff, x],
        And @@ OddQ[#[[1]]] & /@ CoefficientRules[ff, x]],
    x]

I've been able to figure out everything but the alternating sign part.

Update:

Expanding on DumpsterDoofus's answer I was able to mix and match the desired properties as well:

n = 10;
f[x_] := 2^x;
fSeries = Normal[Series[f[x], {x, 0, n}]]
fOdd = Normal[Series[(f[x] - f[-x])/2, {x, 0, n}]]
fEven = Normal[Series[(f[x] + f[-x])/2, {x, 0, n}]]
fOddAlt = Normal[Series[(f[I x] - f[-I x])/(2 I), {x, 0, n}]]
fEvenAlt = Normal[Series[(f[I x] + f[-I x])/2, {x, 0, n}]]
$\endgroup$
  • $\begingroup$ Just to point out a small thing: If we change the sign of every other odd power term, we do not always get a polynomial with only odd degree terms with alternating sign. For example, f = Sin[x]. $\endgroup$ – Michael E2 Nov 15 '14 at 20:10
10
$\begingroup$

The fastest way to do this is to note that for any function $f$ with a convergent power series, the quasi-hyperbolic function $$g(x)=\frac{f(ix)-f(-ix)}{2i}$$ has the power series of $f$ with only odd, alternating sign terms (provided that it converges).

Here's an example:

f[x_] := x + x^2 + x^3 - x^4;
(f[I x] - f[-I x])/(2 I) // Simplify

which produces

x - x^3
$\endgroup$
  • $\begingroup$ very nice +1 :) $\endgroup$ – ubpdqn Nov 15 '14 at 2:40
  • 1
    $\begingroup$ Hey! That's cheating! You know maths! $\endgroup$ – Dr. belisarius Nov 15 '14 at 2:59
  • 2
    $\begingroup$ @belisarius: Huge thanks to Spot and Blasternaut. $\endgroup$ – DumpsterDoofus Nov 15 '14 at 3:29
  • $\begingroup$ @BobHanlon: Yup, you're right, it looks like it fails when $f$ doesn't have a convergent series (and I imagine there's cases where it fails even when it does), edited answer to address this. It does seem to work with $f(x)=\log(1+x)$ though, presumably because it has a convergent series. $\endgroup$ – DumpsterDoofus Nov 15 '14 at 14:49
  • $\begingroup$ Convergence seems a side issue since in the question we're given a Taylor polynomial to operate on.. (+1) $\endgroup$ – Michael E2 Nov 15 '14 at 20:03
4
$\begingroup$
n = 9;
l = CoefficientList[Series[E^x, {x, 0, n}], x];
l1 = PadRight[#, Length@l, #] &@ {0, 1, 0, -1};
Expand@FromDigits[Reverse[l l1] , x]

(* x - x^3/6 + x^5/120 - x^7/5040 + x^9/362880 *)

Or using CoefficientRules[]:

FromCoefficientRules[
 CoefficientRules[
       Normal@Series[E^x , {x, 0, n}], x] /. ({n_} -> x_) /; EvenQ@n        :> {n} -> 0 
                                          /. ({n_} -> x_) /; Mod[n, 4] != 1 :> {n} -> -x, x]

Or even:

Expand@FromDigits[Table[SeriesCoefficient[Exp[x], {x, 0, m}] Mod[(2 + m) (4 + m (4 + 3 m)), 4, -1], 
                                         {m, n, 0, -1}], x]
$\endgroup$
2
$\begingroup$
func[pol_, var_] := 
 FromCoefficientRules[
  MapIndexed[First@#1 -> Last@#1 (-1)^(First@#2 - 1) &, 
   SortBy[Cases[List @@@ CoefficientRules[Normal@pol], {{_?OddQ}, _}],
     First]], var]

e.g. func[ff,t]

yields:

t Log[2] - 1/6 t^3 Log[2]^3 + 1/120 t^5 Log[2]^5 - (
 t^7 Log[2]^7)/5040 + (t^9 Log[2]^9)/362880

and

func[Series[E^x, {x, 0, 10}], t]

yields:

t - t^3/6 + t^5/120 - t^7/5040 + t^9/362880
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.