To factor/simplify, each term the best way appears to be to use collect and pass the simplification function as an argument. So I can use the following syntax:
spy.collect((n-EY).series(N,x0 = spy.oo).removeO(),N, spy.factor) Only the part about a possible bug in sympy.simplify() stands. On Wednesday, April 11, 2018 at 11:28:49 AM UTC-4, [email protected] wrote: > > The code below is run in Python 3.6 (Anaconda install), sympy 1.1.1: > #!/usr/bin/env python > import sympy as spy > import sympy.abc as abc > from sympy import pprint > > n = abc.n > N = abc.N > > EY = 2*N*(1-(1-1/(2*N))**n) > pprint(n-EY) > print('-'*80, '\n') > pprint((n-EY).series(N, x0=spy.oo).simplify()) > print('-'*80, '\n') > pprint((n-EY).series(N, x0=spy.oo)) > print('-'*80, '\n') > pprint((n-EY).series(N, x0=spy.oo).removeO().simplify()) > > When the code is run, I see the following output: > > ⎛ n ⎞ > ⎜ ⎛ 1 ⎞ ⎟ > - 2⋅N⋅⎜- ⎜1 - ───⎟ + 1⎟ + n > ⎝ ⎝ 2⋅N⎠ ⎠ > > -------------------------------------------------------------------------------- > > > ⎛1 ⎞ > O⎜──; N → ∞⎟ > ⎜ 6 ⎟ > ⎝N ⎠ > > -------------------------------------------------------------------------------- > > > 6 5 4 3 2 5 4 3 2 > > n n 17⋅n 5⋅n 137⋅n n n n 7⋅n 5⋅n > n > ───── - ──── + ───── - ──── + ────── - ─── - ──── + ─── - ──── + ──── - > ── > 23040 1536 4608 512 11520 192 1920 192 384 192 > 80 > ────────────────────────────────────────── + > ─────────────────────────────── + > 5 4 > > N N > > > 4 3 2 3 2 2 > n n 11⋅n n n n n n n > ─── - ── + ───── - ── - ── + ── - ── ── - ─ > 192 32 192 32 24 8 12 4 4 ⎛1 ⎞ > ───────────────────── + ────────────── + ────── + O⎜──; N → ∞⎟ > 3 2 N ⎜ 6 ⎟ > N N ⎝N ⎠ > > -------------------------------------------------------------------------------- > > > ⎛ 4 3 ⎛ 2 ⎞ 2 ⎛ 3 2 > ⎞ > n⋅⎝5760⋅N ⋅(n - 1) + 960⋅N ⋅⎝- n + 3⋅n - 2⎠ + 120⋅N ⋅⎝n - 6⋅n + 11⋅n - > 6⎠ + > > ────────────────────────────────────────────────────────────────────────────── > > > > > > ⎛ 4 3 2 ⎞ 5 4 3 2 > > 12⋅N⋅⎝- n + 10⋅n - 35⋅n + 50⋅n - 24⎠ + n - 15⋅n + 85⋅n - 225⋅n + > 274⋅n > > ────────────────────────────────────────────────────────────────────────────── > 5 > > 23040⋅N > > > ⎞ > - 120⎠ > ─────── > > > simplify() seems to be removing all terms in the asymptotic expansion > (second printed item). The third printed item is correct and does not use > simplify(). The fourth print item, which uses simplify() after removing the > O(), is also correct. > > Question: If I want to factor()/simplify() each term in the asymptotic > expansion, what is the best way to do that? > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/f7f73ea2-1506-41e8-94a1-c05e73d42fa9%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
